Controller is a heterogenous parallel programming model implemented as a C99 library.
On one hand it presents a simple and unified programming interface to generate portable host/coordination codes. On the other hand it allows the encapsulation of several versions of the same kernel, from generic implementations to versions optimized for specific platforms (device type, vendor, or family) using the native or vendor specific low-level programming models or tools.
Currently we have developed backends to generate and coordinate code for CPUs, GPUs (supported by CUDA or OpenCL), and recently Intel FPGAs (using OpenCL for FPGAs).
The current release of the Controllers project can be found in GitLab:
Artifact releases are stored in the gitlab repository of the Controllers project. They contain the Controller and Hitmap versions used, the software developed for the artifact, and one or more assets containing other tools and helper programs, experimentation scripts, and results obtained.
See the README files for instructions to compile the software, descriptions of the experimentation, etc.
Artifact: Skeleton for Generic Stencil (SC 2021)
This software was used for the experimental study submitted to the poster session of SC’21.
Artifact: FPGAs backend (2020)
This software contains the Controller and Hitmap versions that were used for the experimental tests presented at SC’20.
Tested with Intel AOC v19-v20. Containing Controller, test programs, and experimental data. Artifact v5 (download)