Roberto Viola

SYCL: diamo un boost ai nostri algoritmi con la GPU

Da qualche giorno (in realtà fine settembre 2019) Intel ha rilasciato LLVM 9.0.0 che porta con se una grandissima novità: un supporto a SYCL perfettamente funzionante.

Per chi non conoscesse SYCL, riporto qui la descrizione di wikipedia:

SYCL (pronuncia “sickle”) è 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 (cpu) che quello per il dispositivo (gpu/fpga/arm) al fine di costruire algoritmi complessi che utilizzano l’accelerazione 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à (necessario in OpenCL), rende molto più semplice e lineare la programmazione.

In breve: potete accelerare i vostri algoritmi usando la GPU!
Quante volte avete raggiunto il limite di un sistema e siete stati costretti a dover upgradare la CPU o addirittura rivoluzionare un algoritmo perfettamente funzionante per cercare di limitare qualche millisecondo ad ogni iterazione?

Beh LLVM + SYCL potrebbero essere una manna dal cielo in queste situazioni.
In particolare ho provato per voi alcuni esempi (trovate tutto qui https://github.com/cagnulein/sycl-benchmarks):
Un semplice FOR da 500.000.000 di iterazioni, comprensivo di una moltiplicazione di una tan per un atan richiede circa 107 secondi per essere eseguito su una CPU intel di settima generazione. Bene, se questo stesso algoritmo lo fate girare su GPU (la stessa GPU integrata della stessa CPU presa in considerazione prima) passerete da 107 secondi a soli 4.8 secondi! Si avete letto bene, 4.8 secondi!

Non vi resta che sporcarvi le mani voi stessi seguendo questo bell’articolo http://pramodkumbhar.com/2019/07/intels-one-api-what-we-know-and-how-to-get-ready/

Se avete dubbi chiedete pure.