The article states, "an OpenMP application written in the C programming language ... is compiled and the generated hardware is synthesized, technology mapped and place and routed to yield a bit-stream. This bit-stream is used to program the FPGA and the user can start using the enhanced OpenMP-accelerated application."<p>The article links to a full text paper:<p>Podobas, Artur, and Mats Brorsson. "Empowering OpenMP with Automatically Generated Hardware." SAMOS XVI. 2016.
<a href="http://www.diva-portal.org/smash/get/diva2:1033786/FULLTEXT01.pdf" rel="nofollow">http://www.diva-portal.org/smash/get/diva2:1033786/FULLTEXT0...</a><p>Here is the abstract of the full text paper:<p>OpenMP enables productive software development that targets shared-memory general purpose systems. However, OpenMP compilers today have little support for future heterogeneous systems – systems that will more than likely contain Field Programmable Gate Arrays (FPGAs) to compensate for the lack of parallelism available in general purpose systems. We have designed a high-level synthesis flow that automatically generates parallel hardware from unmodified OpenMP programs. The generated hardware is composed of accelerators tailored to act as hardware instances of the OpenMP task primitive. We drive decision making of complex details within accelerators through a constraint-programming model, minimizing the expected input from the (often) hardware-oblivious software developer. We evaluate our system and compare them to two state of the art architectures – the Xeon PHI and the AMD Opteron – where we find our accelerators to perform on par with the two ASIC processors.