{"id":18221,"date":"2018-05-26T18:19:19","date_gmt":"2018-05-26T15:19:19","guid":{"rendered":"https:\/\/hgpu.org\/?p=18221"},"modified":"2018-05-26T18:24:01","modified_gmt":"2018-05-26T15:24:01","slug":"transformations-of-high-level-synthesis-codes-for-high-performance-computing","status":"publish","type":"post","link":"https:\/\/hgpu.org\/?p=18221","title":{"rendered":"Transformations of High-Level Synthesis Codes for High-Performance Computing"},"content":{"rendered":"<p>Specialized hardware architectures promise a major step in performance and energy efficiency over the traditional load\/store devices currently employed in large scale computing systems. The adoption of high-level synthesis (HLS) from languages such as C\/C++ and OpenCL has greatly increased programmer productivity when designing for such platforms. While this has enabled a wider audience to target specialized hardware, the optimization principles known from software design are no longer sufficient to implement high-performance codes, due to fundamental differences between software and hardware architectures. In this work, we propose a set of optimizing transformations for HLS, targeting scalable and efficient architectures for high-performance computing (HPC) applications. We show how these can be used to efficiently exploit pipelining, on-chip distributed fast memory, and on-chip streaming dataflow, allowing for massively parallel architectures with little off-chip data movement. To quantify the effect of our transformations, we use them to optimize a set of high-throughput FPGA kernels, demonstrating that they are sufficient to scale up parallelism within the hardware constraints of the target device. With the transformations covered, we hope to establish a common framework for performance engineers, compiler developers, and hardware developers, to tap into the performance potential offered by specialized hardware architectures using HLS.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Specialized hardware architectures promise a major step in performance and energy efficiency over the traditional load\/store devices currently employed in large scale computing systems. The adoption of high-level synthesis (HLS) from languages such as C\/C++ and OpenCL has greatly increased programmer productivity when designing for such platforms. While this has enabled a wider audience to [&hellip;]<\/p>\n","protected":false},"author":351,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[11,90,3],"tags":[1782,377,1993,1793],"class_list":["post-18221","post","type-post","status-publish","format-standard","hentry","category-computer-science","category-opencl","category-paper","tag-computer-science","tag-fpga","tag-hls","tag-opencl"],"views":2228,"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/hgpu.org\/index.php?rest_route=\/wp\/v2\/posts\/18221","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hgpu.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hgpu.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hgpu.org\/index.php?rest_route=\/wp\/v2\/users\/351"}],"replies":[{"embeddable":true,"href":"https:\/\/hgpu.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=18221"}],"version-history":[{"count":1,"href":"https:\/\/hgpu.org\/index.php?rest_route=\/wp\/v2\/posts\/18221\/revisions"}],"predecessor-version":[{"id":18224,"href":"https:\/\/hgpu.org\/index.php?rest_route=\/wp\/v2\/posts\/18221\/revisions\/18224"}],"wp:attachment":[{"href":"https:\/\/hgpu.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=18221"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hgpu.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=18221"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hgpu.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=18221"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}