OPENCL BYGGDE BRO MELLAN CPU OCH GPU OpenCL är en variant av programspråket C, med tillägg för att uttrycka parallellitet, något som språket C självt saknar. Programmering av grafikprocessorer och mikroprocessorer har tidigare varit olika världar. OpenCL skapades för att förena dem. OpenCL låter dig skapa fragment av programkod som kallas kernels, och sedan fördela dem på tillgängliga beräkningsresurser – må de vara GPU:er eller CPU:er. Nu har arbetet inletts attse till att sådana kernels också kan exekveras på FPGA:er. OpenCL är ett maskinnära språk, precis som föräldern C, utvecklaren har detaljerad kontroll över koden och över sjösättningen av koden. OpenCL blev en öppen standard år 2008 efter ett förslag från Apple. |
OpenCL skapades för att underlätta programvarukonstruktion för hybridplattformar av CPU:er och GPU:er. Det underlättar också experiment och jämförelser mellan arkitekturerna – vilken som passar bäst för en given algoritm. Och det underlättar för återanvändning av kod vid byte av arkitektur.
Den senaste utvecklingen är att också FPGA:er släpps in i OpenCL-världen.
Bland de stora FPGA-tillverkarna klarar både Xilinx och Altera av att kompilera OpenCL-kod till kernels för sina FPGA:er. Och båda är medlemmar av OpenCL-organisationen där man bland annat ger feedback för att FPGA-processorns natur ska hållas i åtanke när standarden defineras vidare.
Endast experimentellt
Altera är den som kommit längst med verktyg. Företaget släppte i slutet av förra året nyheten om en utvecklingsmiljö för OpenCL.
Att en viss processor får stöd för OpenCL innebär att tillverkaren gjort det möjligt att anropa denna processor via programgränssnitten i OpenCL.
Det betyder att kernels – skrivna i C – måste översättas till FPGA-konfigureringskod.
Den delen av verktyget är i sig inte ny. Det finns mängder av verktyg som översätter mjukvara till konfigureringsfiler för FPGA:er.
En skillnad mot verktyg som C2H eller Catapult C, är att OpenCL-programmeraren själv specificerar parallellismen i kernels – mindre automatik i utbyte mot mer kontroll och möjlighet till optimering.
Det betyder att de parallella hybridsystemen nu kommer att kunna omfatta spännande kombinationer av FPGA, GPU och CPU.
GPU:er beskrivs som en enorm, outnyttjad resurs. Grafikprocessorer finns redan på moderkorten och bara väntar på att tas i bruk.
Detsamma gäller inte FPGA:er. De kopplas in i systemet som externa acceleratorer via exempelvis PCI Express.
Altera har inte annonserat skarpa produkter utan samarbetar med akademi och nyckelkunder för att utveckla verktyg. Projektet annonserades för allmänheten i november i fjol.
– Vi ser mycket positiva resultat, säger Bob Blake på Altera.
Också inom embedded
Allt – gränssnittet mellan PC och FPGA, och beräkningarna – kan uttryckas i OpenCL, som därmed gör integrationen smidig.
– Initialt väntar vi oss att få se FPGA:er kopplas till en PC och där fungera som en accelerator eller coprocessor ansluten via PCI Express.
Superdatorberäkningar är en viktig användning. Men Altera har också exempel på tillämpningar inom inbyggda system: radarsystem, militär spaning, säker kommunikation, medicinsk bildbehandling och videobearbetning.
– Alla system som behöver snabba beräkningar är en kandidat för en lösning baserad på OpenCL, säger Bob Blake.