Abstract

We suggest using OpenCL standard for programming FPGA devices that are used as accelerators in a heterogeneous system. We describe the implementation of a subset of OpenCL that is required for organizing data exchange and task management for FPGAs given that CPU and FPGA are connected via PCI-express bus. Basically, the first part of the required functions is the simple device manipulation and FPGA program loading; the latter requires flashing the FPGA via the JTAG interface. The second part is the memory buffer transfer to and from the FPGA. Its implementation in the runtime library is straightforward given that the FPGA supports PCI-express exchanges; the main load falls onto the FPGA driver and the FPGA system-level firmware organizing these exchanges. The final part is the FPGA task management that is achieved via the simple task scheduler implemented within the FPGA driver. The code running on FPGA can be created with a hardware description language or generated automatically using one of the known translators, e.g. C-to-Verilog, but it should adhere to the ABI described by the FPGA driver and firmware implementations.

Highlights

  • We suggest using OpenCL standard for programming FPGA devices that are used as accelerators in a heterogeneous system

  • We describe the implementation of a subset of OpenCL that is required for organizing data exchange and task management for FPGAs given that CPU and FPGA are connected via PCI-express bus

  • Its implementation in the runtime library is straightforward given that the FPGA supports PCI-express exchanges; the main load falls onto the FPGA driver and the FPGA system-level firmware organizing these exchanges

Read more

Summary

Введение

В настоящий момент затруднено программирование гетерогенных систем, состоящих из основного многоядерного компьютера и акселератора на базе платы с программируемой логикой (ПЛИС). Не предложено программной модели (как высокоуровневой, так и низкоуровневой) с соответствующей системной поддержкой времени компиляции и выполнения, которая позволила и облегчила бы эффективное использование вычислительных ресурсов таких гибридных систем. В случае ПЛИС реализация с их помощью необходимых компонент задачи на аппаратном уровне позволяет достигать большей производительности по сравнению с обычными процессорами, затрачивая при этом меньше энергии в процессе работы. Существенным недостатком ПЛИСов является сложность как самого процесса разработки логики устройства, так и организации взаимодействия между полученным акселератором и хостмашиной. Логика устройства должна быть описана на языке описания аппаратуры, а все механизмы взаимодействия с хостом должны быть так или иначе реализованы программистом. Целью данной работы является разработка системы программирования ПЛИС с использованием стандарта OpenCL. Раздел 3 содержит разработанную схему работы с ПЛИС как с OpenCL-устройством, а раздел 4 более подробно описывает подмножество OpenCL, необходимое для реализации предложенной схемы.

Программная модель OpenCL
ПЛИС-устройства
Схема работы с ПЛИС с использованием OpenCL
Реализация подмножества OpenCL в библиотеке поддержки
Заключение
Full Text
Paper version not known

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call

Disclaimer: All third-party content on this website/platform is and will remain the property of their respective owners and is provided on "as is" basis without any warranties, express or implied. Use of third-party content does not indicate any affiliation, sponsorship with or endorsement by them. Any references to third-party content is to identify the corresponding services and shall be considered fair use under The CopyrightLaw.