Vad är OpenCL?
Standarden OpenCL för parallellprogrammering har utvecklats av industrikonsortiet Khronos Group för att hantera utmaningarna med programmering av multi-core och heterogena beräkningsplattformar. OpenCL-specifikationen definierar en enda programmeringsmodell och en uppsättning abstraktioner på systemnivå som stöds av alla maskinvaruplattformar som överensstämmer med standarden. Detta innebär att en programvaruingenjör kan lära sig en enda programmeringsmodell och använda den direkt på enheter från flera leverantörer.
OpenCL tillhandahåller ett programmeringsspråk och ett körtids-API för att stödja utvecklingen av metallnära programvara som är både effektiv och portabel. Dessutom tillhandahåller OpenCL abstraktioner på låg nivå för maskinvara som gör det möjligt för OpenCL-implementationer att avslöja många detaljer i den underliggande maskinvaran. Dessa abstraktioner på låg nivå är de plattforms-, minnes- och utförandemodeller som beskrivs i OpenCL-specifikationen. Förståelse för hur dessa begrepp översätts till fysiska implementationer på en FPGA är nödvändig för optimering av tillämpningar.
Detta kapitel ger en genomgång av OpenCL-plattformmodellen och dess utvidgningar till FPGA-enheter. Det förklarar mappningen av OpenCL-plattformen och minnesmodellen till en SDAccel-genererad implementering. I kapitlet nämns också hur moderna FPGA-enheter kan utnyttjas för att uppnå höga prestandanivåer med hjälp av Xilinx® SDAccel-verktyget.