Heterogeneous Programming Models: Portability, Performance, and Programmability

  • Darío Suárez Gracia – Departamento de Informática e Ingeniería de Sistemas, Universidad de Zaragoza, España.

Learning goals

The main goal of this course is to provide students an overview of the state-of-the-art of the recent trends in heterogeneous programming mainly for FPGAs. To achieve this broad goal, the course also includes several secondary objectives, namely: 1) understanding the architecture of heterogeneous devices such GPU and FPGA, 2) knowing the principles of High Level Synthesis and the workflow tools required to build and run heterogeneous programs, 3) getting familiar with programming models such SYCL and Intel oneAPI, and 4) Understating the basics of load balancing algorithms for heterogeneous systems, with emphasis on CPU plus FPGA systems.


Introduction to Heterogeneous Systems. An overview of FPGAs. High Level Synthesis with C++/SYCL/Intel oneAPI. Load balancing with CPU-FPGA and CPU-GPU-FPGA Systems. Optimization and Programming Strategies for FPGAs with HLS.


James Reinders, Ben Ashbaugh, James Brodman, Michael Kinsner, John Pennycook, & Xinmin Tian. “Data Parallel C++. Mastering DPC++ for Programming of Heterogeneous Systems using C++ and SYCL”. Apress, Berkeley, CA, 2021. https://doi.org/10.1007/978-1-4842-5574-2

Hasitha Muthumala Waidyasooriya, Masanori Hariyama, & Kunio Uchiyama. “Design of FPGA-Based Computing Systems with OpenCL”. Springer International Publishing AG 2018. https://doi.org/10.1007/978-3-319-68161-0.

Dávila Guzmán, M.A., Nozal, R., Gran Tejero, R. et al. “Cooperative CPU, GPU, and FPGA heterogeneous execution with EngineCL”. J Supercomput 75, 1732–1746 (2019). https://doi.org/10.1007/s11227-019-02768-y

J. Bosch et al., «Application Acceleration on FPGAs with OmpSs@FPGA,» 2018 International Conference on Field-Programmable Technology (FPT), 2018, pp. 70-77, https://doi.org/10.1109/FPT.2018.00021

Raúl Nozal, Jose Luis Bosque, Ramon Beivide. “EngineCL: Usability and Performance in Heterogeneous Computing”, Future Generation Computer Systems, Volume 107, 2020. https://doi.org/10.1016/j.future.2020.02.016

Previous requirements

Computer Science and Computer Engineering students with a background in Computer Architecture and Programming Languages (mainly C++) should be enough.

Inscripción (próximamente)
Ver todos los cursos