{"id":{"repo_id":"uiuc","oai_identifier":"oai:www.ideals.illinois.edu:2142/120191"},"canonical_url":"https://search.dev.ndltd.org/etd/uiuc/oai:www.ideals.illinois.edu:2142/120191","repository":{"repo_id":"uiuc","name":"University of Illinois - Urbana-Champaign","base_url":"https://www.ideals.illinois.edu/oai-pmh"},"display":{"title":"Compiler techniques for enabling general-purpose hardware-agnostic FPGA programming","abstract":"Submission original under an indefinite embargo labeled 'Open Access'. The submission was exported from vireo on 2023-09-01 without embargo terms","abstract_html":"Submission original under an indefinite embargo labeled &#x27;Open Access&#x27;. The submission was exported from vireo on 2023-09-01 without embargo terms","abstract_has_math":false,"creators":["Ejjeh, Adel"],"institution":"University of Illinois at Urbana-Champaign","degree_name":"Ph.D.","degree_level":"Dissertation","degree_discipline":"Computer Science","degree_department":null,"school":null,"contributors":["Adve, Vikram S","Rutenbar, Rob A","Chen, Deming","Nurvitadhi, Eriko"],"advisors":[],"committee_chairs":[],"committee_members":[],"year":2023,"date_issued":"2023-05","date_published":"2023-05","updated_at":"2026-07-22T22:24:57Z","subjects":["Hls Compilers","Fpga Compiler","Hardware-agnostic Fpga Programming"],"languages":["en","eng"],"rights":["Copyright 2022 Adel Ejjeh"],"rights_urls":[],"identifier_entries":[]},"links":{"outbound_url":"https://hdl.handle.net/2142/120191","outbound_label":"Handle","outbound_source":"dc:identifier"},"metadata_groups":[{"id":"people","label":"People","entries":[{"key":"dc:contributor","label":"Contributor","values":["Adve, Vikram S","Rutenbar, Rob A","Chen, Deming","Nurvitadhi, Eriko"]},{"key":"dc:creator","label":"Author","values":["Ejjeh, Adel"]}]},{"id":"academic_context","label":"Academic Context","entries":[{"key":"dc:date","label":"Dc Date","values":["2023-05","2022-12-15"]},{"key":"dc:type","label":"Dc Type","values":["text","Thesis"]},{"key":"thesis:degree_discipline","label":"Discipline","values":["Computer Science"]},{"key":"thesis:degree_level","label":"Degree Level","values":["Dissertation"]},{"key":"thesis:degree_name","label":"Degree Name","values":["Ph.D."]},{"key":"thesis:institution_name","label":"Thesis Institution Name","values":["University of Illinois at Urbana-Champaign"]}]},{"id":"subjects_keywords","label":"Subjects and Keywords","entries":[{"key":"dc:subject","label":"Dc Subject","values":["Hls Compilers","Fpga Compiler","Hardware-agnostic Fpga Programming"]}]},{"id":"language_rights","label":"Language and Rights","entries":[{"key":"dc:language","label":"Dc Language","values":["en","eng"]},{"key":"dc:rights","label":"Dc Rights","values":["Copyright 2022 Adel Ejjeh"]}]},{"id":"identifiers","label":"Identifiers","entries":[{"key":"dc:identifier","label":"Identifier","values":["https://hdl.handle.net/2142/120191"]}]},{"id":"additional","label":"Additional Metadata","entries":[{"key":"dc:description","label":"Description","values":["Submission original under an indefinite embargo labeled 'Open Access'. The submission was exported from vireo on 2023-09-01 without embargo terms","The student, Adel Ejjeh, accepted the attached license on 2022-12-13 at 15:01.","The student, Adel Ejjeh, submitted this Dissertation for approval on 2022-12-13 at 15:07.","This Dissertation was approved for publication on 2022-12-15 at 13:04.","DSpace SAF Submission Ingestion Package generated from Vireo submission #18802 on 2023-09-01 at 17:06:47","Recently, FPGAs have become widely available in heterogeneous systems and public clouds, taking them beyond the traditional audience of hardware designers and making them accessible to the much larger category of software application developers. However, current FPGA programming paradigms are not well suited for this type of developers. Software teams deal with large complex applications, with stringent constraints on development cost, source code portability, code reuse, software security, and rapid development cycles, in addition to performance. These constraints make it difficult to invest extensive time and effort to tune application components for specific hardware targets. In many cases, this translates to an acceptable trade-off of raw performance for improved programmability. As such, software designers would greatly benefit from an end-to-end compiler framework that supports hardware-agnostic programming of FPGAs. It is beyond doubt that hardware-agnostic programming of FPGAs is a difficult problem. While I acknowledge this difficulty, I believe that it is achievable with the following requirements: a) A representation that can efficiently capture parallelism in a hardware-agnostic high-level application and that can easily identify the dataflow between the acceleratable components, b) a compiler and autotuner that can automatically select which hardware-agnostic software components are suitable for acceleration, and tune these components by automatically applying FPGA-specific optimizations, and c) a compiler back end and runtime system that can generate the host and device code and transparently interface the host and device without any extra input from the programmer. In this thesis, I present HPVM2FPGA, a novel end-to-end compiler and autotuning system that can automatically tune hardware-agnostic programs for FPGAs. HPVM2FPGA uses a hardware-agnostic abstraction of parallelism as a compiler intermediate representation (IR), and adds a powerful optimization framework that uses sophisticated, parameterized, compiler optimizations (both FPGA-specific and generic) and design space exploration (DSE) to automatically tune and partition a hardware-agnostic program for a target FPGA. It also adds a code-generation back-end that generates optimized OpenCL code for the FPGA kernels and uses the Intel FPGA SDK for OpenCL (AOC) to synthesize them. The optimization framework includes a variety of compiler optimizations designed to automate some of the manual tuning that is required for FPGAs. These are a combination of loop-level, memory-level, and multi-kernel HPVM DFG optimizations. To make DSE practical for FPGAs, I developed an analytical performance model that estimates the execution time of the optimized input program on the target FPGA, using a loop pipeline latency calculation and a critical path analysis to account for inter-kernel parallelism. This performance model is independent of specific optimizations, and derives its required inputs from a static analysis of the HPVM IR (post-optimizations) and performance metrics generated by the RTL generation stage of AOC. Additionally, I incorporated into the optimization framework automatic partitioning to automatically decide what part of the application to offload to the FPGA for best performance. For that, I use integer linear programming (ILP), taking into account the overall performance and the available resources on the FPGA. This optimization framework is modular and extensible, so that more optimizations can be added relatively easily, and other DSE engines or performance models can be plugged in with minimal effort. I performed an experimental evaluation of HPVM2FPGA, which shows that it can: a) optimize hardware-agnostic, multi-kernel benchmarks achieving up to 33X speedup on an Arria 10 GX FPGA compared to unoptimized baselines, b) match hand-tuned FPGA designs in many cases, and c) provide significant benefits with automatic partitioning when the available FPGA resources are not enough to optimize all the application components. My goal with HPVM2FPGA is to provide a modular and extensible framework for the research community that can act as a basis for hardware-agnostic FPGA programming research, and that could keep on improving with more compiler optimizations, back end code-generation techniques, and performance estimation models/DSE."]},{"key":"dc:format","label":"Dc Format","values":["application/pdf"]},{"key":"dc:title","label":"Title","values":["Compiler techniques for enabling general-purpose hardware-agnostic FPGA programming"]}]}],"canonical_facts":{"dc:contributor":["Adve, Vikram S","Rutenbar, Rob A","Chen, Deming","Nurvitadhi, Eriko"],"dc:creator":["Ejjeh, Adel"],"dc:date":["2023-05","2022-12-15"],"dc:description":["Submission original under an indefinite embargo labeled 'Open Access'. The submission was exported from vireo on 2023-09-01 without embargo terms","The student, Adel Ejjeh, accepted the attached license on 2022-12-13 at 15:01.","The student, Adel Ejjeh, submitted this Dissertation for approval on 2022-12-13 at 15:07.","This Dissertation was approved for publication on 2022-12-15 at 13:04.","DSpace SAF Submission Ingestion Package generated from Vireo submission #18802 on 2023-09-01 at 17:06:47","Recently, FPGAs have become widely available in heterogeneous systems and public clouds, taking them beyond the traditional audience of hardware designers and making them accessible to the much larger category of software application developers. However, current FPGA programming paradigms are not well suited for this type of developers. Software teams deal with large complex applications, with stringent constraints on development cost, source code portability, code reuse, software security, and rapid development cycles, in addition to performance. These constraints make it difficult to invest extensive time and effort to tune application components for specific hardware targets. In many cases, this translates to an acceptable trade-off of raw performance for improved programmability. As such, software designers would greatly benefit from an end-to-end compiler framework that supports hardware-agnostic programming of FPGAs. It is beyond doubt that hardware-agnostic programming of FPGAs is a difficult problem. While I acknowledge this difficulty, I believe that it is achievable with the following requirements: a) A representation that can efficiently capture parallelism in a hardware-agnostic high-level application and that can easily identify the dataflow between the acceleratable components, b) a compiler and autotuner that can automatically select which hardware-agnostic software components are suitable for acceleration, and tune these components by automatically applying FPGA-specific optimizations, and c) a compiler back end and runtime system that can generate the host and device code and transparently interface the host and device without any extra input from the programmer. In this thesis, I present HPVM2FPGA, a novel end-to-end compiler and autotuning system that can automatically tune hardware-agnostic programs for FPGAs. HPVM2FPGA uses a hardware-agnostic abstraction of parallelism as a compiler intermediate representation (IR), and adds a powerful optimization framework that uses sophisticated, parameterized, compiler optimizations (both FPGA-specific and generic) and design space exploration (DSE) to automatically tune and partition a hardware-agnostic program for a target FPGA. It also adds a code-generation back-end that generates optimized OpenCL code for the FPGA kernels and uses the Intel FPGA SDK for OpenCL (AOC) to synthesize them. The optimization framework includes a variety of compiler optimizations designed to automate some of the manual tuning that is required for FPGAs. These are a combination of loop-level, memory-level, and multi-kernel HPVM DFG optimizations. To make DSE practical for FPGAs, I developed an analytical performance model that estimates the execution time of the optimized input program on the target FPGA, using a loop pipeline latency calculation and a critical path analysis to account for inter-kernel parallelism. This performance model is independent of specific optimizations, and derives its required inputs from a static analysis of the HPVM IR (post-optimizations) and performance metrics generated by the RTL generation stage of AOC. Additionally, I incorporated into the optimization framework automatic partitioning to automatically decide what part of the application to offload to the FPGA for best performance. For that, I use integer linear programming (ILP), taking into account the overall performance and the available resources on the FPGA. This optimization framework is modular and extensible, so that more optimizations can be added relatively easily, and other DSE engines or performance models can be plugged in with minimal effort. I performed an experimental evaluation of HPVM2FPGA, which shows that it can: a) optimize hardware-agnostic, multi-kernel benchmarks achieving up to 33X speedup on an Arria 10 GX FPGA compared to unoptimized baselines, b) match hand-tuned FPGA designs in many cases, and c) provide significant benefits with automatic partitioning when the available FPGA resources are not enough to optimize all the application components. My goal with HPVM2FPGA is to provide a modular and extensible framework for the research community that can act as a basis for hardware-agnostic FPGA programming research, and that could keep on improving with more compiler optimizations, back end code-generation techniques, and performance estimation models/DSE."],"dc:format":["application/pdf"],"dc:identifier":["https://hdl.handle.net/2142/120191"],"dc:language":["en","eng"],"dc:rights":["Copyright 2022 Adel Ejjeh"],"dc:subject":["Hls Compilers","Fpga Compiler","Hardware-agnostic Fpga Programming"],"dc:title":["Compiler techniques for enabling general-purpose hardware-agnostic FPGA programming"],"dc:type":["text","Thesis"],"thesis:degree_discipline":["Computer Science"],"thesis:degree_level":["Dissertation"],"thesis:degree_name":["Ph.D."],"thesis:institution_name":["University of Illinois at Urbana-Champaign"]},"updated_at":"2026-07-22T22:24:57Z"}