Abstract
The Controller model is a heterogeneous parallel programming model implemented as a library. It transparently manages the coordination, communication and kernel launching details on different heterogeneous computing devices. It exploits native or vendor specific programming models and compilers, such as OpenMP, CUDA or OpenCL, thus enabling the potential performance obtained by using them. This work discusses the integration of FPGAs in the Controller model, using high-level synthesis tools and OpenCL. A new Controller backend for FPGAs is presented based on a previous OpenCL backend for GPUs. We discuss new configuration parameters for FPGA kernels and key ideas to adapt the original OpenCL backend while maintaining the portability of the original model. We present an experimental study to compare performance and development effort metrics obtained with the Controller model, Intel oneAPI and reference codes directly programmed with OpenCL. The results show that using the Controller library has advantages and drawbacks compared with Intel oneAPI, while compared with OpenCL it highly reduces the programming effort with negligible performance overhead.
Similar content being viewed by others
References
McNamara M (2008) IEEE standard verilog hardware description language. https://www.verilog.com/IEEEVerilog.html. Accessed 9 Jun 2020
IEEE Design Automation Standards Committee and others (2008) Std 1076–2008. IEEE Standard VHDL Language Reference Manual, IEEE, New York
Intel (2019) Intel FPGA SDK for OpenCL Programming Guide. https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/hb/opencl-sdk/archives/aocl_programming_guide-20-1.pdf. Accessed 15 Aug 2020
Xilinx (2019) SDAccel Programmers Guide. https://www.xilinx.com/support/documentation/sw_manuals/xilinx2018_3/ug1277-sdaccel-programmers-guide.pdf. Accessed 15 Aug 2020
Intel (2020) Intel oneAPI Specs. https://www.oneapi.com/spec/. Accessed 12 Sept 2020
Keryell R, Rovatsou M, Howes L (2020) SYCL specification—generic heterogeneous computing for modern C++. https://www.khronos.org/registry/SYCL/specs/sycl-1.2.1.pdf. Accessed 15 Aug 2020
Moreton-Fernandez A, Ortega-Arranz H, Gonzalez-Escribano A (2018) Controllers: an abstraction to ease the use of hardware accelerators. Int J High Perfor Comput Appl 32(6):838–853
Moreton-Fernandez A, Gonzalez-Escribano A, Llanos DR (2019) Multi-device controllers: a library to simplify parallel heterogeneous programming. Int J Parallel Progr 47(1):94–113
Rodriguez-Canal G, Torres Y, Gonzalez-Escribano A (2020) Integrating FPGAs in a heterogeneous and portable parallel programming model (Poster). In: Int. Conf. for HPC, Networking, Storage and Analysis (SC’20). https://sc20.supercomputing.org/proceedings/tech_poster/poster_files/rpost145s2-file3.pdf
Nozal R, Bosque JL, Beivide R (2020) EngineCL: usability and performance in heterogeneous computing. Fut Gen Comput Syst 107:522–537
Parnassos I et al (2017) A programming model and runtime system for approximation-aware heterogeneous computing. In: 2017 27th International Conference on Field Programmable Logic and Applications (FPL). IEEE, pp 1–4
Alpay A, Heuveline V (2020) SYCL beyond OpenCL: the architecture, current state and future direction of hipSYCL. In: Proceedings of the International Workshop on OpenCL, IWOCL ’20. NY, USA). Association for Computing Machinery, New York
Bosch J et al (2018) Application Acceleration on FPGAs with OmpSs@FPGA. In: 2018 Int. Conf. on Field-Programmable Tech. IEEE, pp 70–77
Wang C, Li X, Zhang J, Chen P, Feng X, Zhou X (2012) FPM: a flexible programming model for MPSoC on FPGA. In: 2012 IEEE 26th International Parallel and Distributed Processing Symposium Workshops PhD Forum, pp 477–484
Ozkan MA et al (2020) AnyHLS: high-level synthesis with partial evaluation. https://arxiv.org/pdf/2002.05796.pdf. Accessed 12 Sept 2020
Lee S, Kim J, Vetter JS (2016) OpenACC to FPGA: A Framework for Directive-Based High-Performance Reconfigurable Computing. In 2016 IEEE International Parallel and Distributed Processing Symposium (IPDPS), pp 544–554
Zohouri HR (2018) High performance computing with FPGAs and OpenCL. ArXiv preprint arXiv:1810.09773
Zohouri HR, Maruyama N, Smith A, Matsuda M, Matsuoka S (2016) Evaluating and optimizing OpenCL kernels for high performance computing with FPGAs. In: SC’16: Proceedings of the International Conference for High Performance Computing, Networking, Storage and Analysis. IEEE, pp 409–420
Pouchet L-N, Grauer-Gray S (2015) PolyBench: the polyhedral benchmark suite (2011). http://www-roc.inria.fr/~pouchet/software/polybench
Zohouri HR et al (2020) Rodinia’s Hotspot v7. https://github.com/fpga-opencl-benchmarks/rodinia_fpga/blob/master/opencl/hotspot/hotspot_kernel_v7.cl. Accessed 12 Sept 2020
McCabe TJ (1976) A complexity measure. IEEE Trans Softw Eng 4:308–320
Halstead MH et al (1977) Elements of software science, vol 7. Elsevier, New York
Author information
Authors and Affiliations
Corresponding author
Additional information
Publisher's Note
Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.
This research has been partially supported by the Spanish Ministerio de Economía, Industria y Competitividad and by the ERDF program of the European Union, PCAS Project (TIN2017-88614-R); by Junta de Castilla y Leon - FEDER Grants, PROPHET and PROPHET-2 Projects (VA082P17, VA226P20); MECD (Beca de Colaboración, Spain), ScottishPower Masters Scholarship, and Salvador de Madariaga/Fulbright Scholar Grant (PRX17/00674).
Rights and permissions
About this article
Cite this article
Rodriguez-Canal, G., Torres, Y., Andújar, F.J. et al. Efficient heterogeneous programming with FPGAs using the Controller model. J Supercomput 77, 13995–14010 (2021). https://doi.org/10.1007/s11227-021-03792-7
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s11227-021-03792-7