Introducing HardCloud @ FCCM 2018


HardCloud ( is an extension to the OpenMP 4.X standard that seeks to ease the task of offloading IP-cores to FPGA accelerators in CPU-FPGA architectures. This is achieved by two new clauses [use] and [module] shown in the example below:

#pragma omp target device(HARP | HARPSIM | Catapult) map(to: X) map(from: Y)
#pragma omp parallel for use(hrw) module(loopback) check
for(int i = 0; i < n; i++) {
Y[i] = X[i];

Clause use(hrw) allows the computation to be performed by a pre-synthesized hardware module (loopback) instead of by the C code following the annotation. A new optional [check] clause is under development to enable the automatic co-verification of the loopback output, i.e., Y, against the regular software execution.

A new OpenMP 4.X libomptarget plugin was added to the Clang/LLVM compiler that leverages on the Intel OPAE library to build a seamless programming interface.

HardCloud currently enables HARP and HARPSIM device plugins that are respectively associated with the Intel HARP2 architecture and its simulator. Design of the Microsoft Catapult plugin is underway.

HardCloud adds two new IP-blocks to the basic Intel HARP2 blocks. They allow the user’s IP-core to perform streaming and indexed buffer accesses. This is done through a simple IP-core HDL interface.

We will demo HardCloud at FCCM 2018 from April 29 - May 1 in Boulder (CO), USA, and would be really happy to talk to you in case you are going to the conference.

At you can find a docker distribution, tutorials, presentations and a Wiki that could be useful in case you want to give HardCloud a try.

Your feedback would be highly appreciated!!


Hi Ciro,

some feedback after roughly scanning through your GitHub repository: It's a bit unfortunate that all of this work is based on IBM's clang-ykt fork and not on upstream Clang and the openmp repository. I know that trunk is lacking some features but that won't change if only few people contribute...