Articles

Cos’è OpenCL?

Lo standard OpenCL per la programmazione parallela è stato sviluppato dal consorzio industriale Khronos Group per affrontare le sfide della programmazione di piattaforme di calcolo multi-core ed eterogenee. La specifica OpenCL definisce un unico modello di programmazione e un insieme di astrazioni a livello di sistema che sono supportate da tutte le piattaforme hardware conformi allo standard. Questo significa che un ingegnere del software può imparare un singolo modello di programmazione e usarlo direttamente su dispositivi di diversi fornitori.

OpenCL fornisce un linguaggio di programmazione e un’API runtime per supportare lo sviluppo di software close-to-the-metal che è sia efficiente che portabile. Inoltre, OpenCL fornisce astrazioni hardware di basso livello che permettono alle implementazioni OpenCL di esporre molti dettagli dell’hardware sottostante. Queste astrazioni di basso livello sono i modelli di piattaforma, memoria ed esecuzione descritti nella specifica OpenCL. Capire come questi concetti si traducono in implementazioni fisiche su un FPGA è necessario per l’ottimizzazione dell’applicazione.

Questo capitolo fornisce una revisione del modello di piattaforma OpenCL e le sue estensioni ai dispositivi FPGA. Spiega la mappatura della piattaforma OpenCL e il modello di memoria in un’implementazione generata da SDAccel. Questo capitolo menzionerà anche come gli FPGA contemporanei possono essere sfruttati per raggiungere alti livelli di prestazioni utilizzando lo strumento Xilinx® SDAccel.