Indietro

ⓘ SYCL




SYCL
                                     

ⓘ SYCL

SYCL è un layer di astrazione gratuito e multipiattaforma progettato sui concetti di portabilità e di efficienza di OpenCL, che permette al codice di piattaforme eterogenee di essere scritto in uno stile" a sorgente singola”, utilizzando completamente lo standard C++. SYCL consente lo sviluppo di una sola sorgente in cui le funzioni di modello C ++ possono contenere sia il codice host che quello per il dispositivo al fine di costruire algoritmi complessi che utilizzano laccelerazione OpenCL e quindi poter riutilizzare tutto il loro codice sorgente su diversi tipi di hardware e di dati. La possibilità, per gli sviluppatori, di non essere costretti a tener conto del dispositivo su cui il programma girerà, rende molto più semplice e lineare la programmazione.

                                     

1. Storia

Sviluppato dal consorzio Khronos Group, SYCL è pubblico dalla versione 1.2 del 2014, basandosi sulla versione 1.2 di OpenCL, era limitato nello sviluppo dalle librerie C++ di quest’ultimo, mentre la versione provvisoria più recente e provvisoria, la 2.2 basata su OpenCL 2.2 ha molte più funzioni ed elasticità, come la memoria virtuale condivisa, i puntatori generici, ecc. Lultima release stabile della piattaforma è la versione 1.2.1 release 6, del novembre 2019, che introduce tutta una serie di funzionalità, come il supporto a piattaforme AI Tensorflow, per esempio, il back-end con le librerie Cuda, il supporto a C++14 e C++17 prima supportava solo C++11 e molto altro ancora.

                                     

2. Funzionamento

Gestione della memoria: in Sycl, la gestione della memoria è incapsulata in un layer di alto livello che separa lo storage e l’accesso ai dati. Come in Opencl, gli oggetti di buffer e di immagine vengono utilizzati per mantenere i dati che devono essere accodati a un dispositivo, tuttavia in SYCL, un oggetto buffer o immagine può mantenere più buffer e immagini OpenCL e l’accodamento viene eseguito da oggetti accessori. Ciò consente al runtime lato host di eseguire il monitoraggio delle dipendenze tra le funzioni del kernel e pertanto fornire una migliore sincronizzazione.

Gestione dei dispositivi: Il flusso di compilazione specifico è stato deliberatamente lasciato aperto per consentire agli implementatori di scegliere come implementare i compilatori di dispositivi SYCL: le specifiche suggeriscono due possibili soluzioni di compilazione, una a singolo compilatore e una a multi-compilatore. Nella soluzione di compilazione singola, il compilatore SYCL compilerebbe i file di origine per la CPU host e per il dispositivo in una sola passata e gestirebbe internamente la memorizzazione dei binari del kernel. Una soluzione multi-compilatore dividerebbe il flusso di lavoro in due fasi: nella prima SYCL compilerebbe un file di origine e produrrebbe un file di intestazione stub come output. Questo file di intestazione contiene i binari per tutte le funzioni del kernel in un formato supportato da OpenCL come SPIR, nonché la funzionalità di collante per istruire il runtime dellhost lato SYCL su come impostare gli argomenti e eseguire le funzioni del kernel. In secondo luogo, lo stesso file di origine verrà compilato da un compilatore host standard come GCC o VisualC. Quando il file di origine viene compilato dal compilatore host, viene incluso il file di intestazione generato dallo stub, quindi incorporando i binari del kernel nellapplicazione finale e rendendoli disponibili al runtime lato host SYCL.

Ogni vendor hardware può mettere a disposizione estensioni specifiche per le proprie periferiche così da permettere una più veloce interfaccia con OpenCL/SYCL e per ottenere funzioni ed ottimizzazioni particolari. A tuttoggi SYCL è supportato da Intel, Xilinx, Renesas, Imagination Technologies, AMD, Nvidia.

                                     

3. Programmi

Alcuni programmi sono già stati convertiti per lutilizzo con OpenCl grazie a SYCL, come Eigen librerie matematiche, Tensorflow Intelligenza Artificiale, Layar Realtà aumentata e Artsy piattaforma web.