Was ist OpenCL?
Der OpenCL-Standard für die parallele Programmierung wurde vom Industriekonsortium Khronos Group entwickelt, um die Herausforderungen der Programmierung von Multicore- und heterogenen Rechenplattformen zu bewältigen. Die OpenCL-Spezifikation definiert ein einziges Programmiermodell und eine Reihe von Abstraktionen auf Systemebene, die von allen Hardware-Plattformen unterstützt werden, die dem Standard entsprechen. Das bedeutet, dass ein Software-Ingenieur ein einziges Programmiermodell erlernen und es direkt auf Geräten verschiedener Hersteller verwenden kann.
OpenCL bietet eine Programmiersprache und eine Laufzeit-API zur Unterstützung der Entwicklung von „close-to-the-metal“-Software, die sowohl effizient als auch portabel ist. Darüber hinaus bietet OpenCL Low-Level-Hardware-Abstraktionen, die es OpenCL-Implementierungen ermöglichen, viele Details der zugrunde liegenden Hardware offenzulegen. Diese Low-Level-Abstraktionen sind die Plattform-, Speicher- und Ausführungsmodelle, die in der OpenCL-Spezifikation beschrieben sind. Das Verständnis, wie diese Konzepte in physische Implementierungen auf einem FPGA umgesetzt werden, ist für die Anwendungsoptimierung notwendig.
Dieses Kapitel bietet einen Überblick über das OpenCL-Plattformmodell und seine Erweiterungen für FPGA-Geräte. Es erklärt das Mapping der OpenCL-Plattform und des Speichermodells in eine von SDAccel generierte Implementierung. In diesem Kapitel wird auch erwähnt, wie moderne FPGAs genutzt werden können, um mit dem Xilinx® SDAccel-Tool ein hohes Leistungsniveau zu erreichen.