FOSS-Inside: usiamo OpenCL su schede grafiche ATI
di beren75 - Venerdì 6 Novembre 2009 alle 15:36
Nel mondo Apple se ne parlava già nel giugno 2008. OpenCL (Open Computing Language) sarebbe stata una delle nuove tecnologie ad essere incorporata in Snow Leopard, il nuovo gioiello per i Mac-PC.
Durante questo anno ci sono stati anche timidi annunci relativi al mondo Linux. Dapprima nVidia e ora AMD/ATI hanno entrambi annunciato la disponibilità di un Software Developer Kit per OpenCL. Entrambi i prodotti sono in stato di beta. Entrambi i prodotti sono semplicemente delle estensioni ai tool GNU o delle librerie di sistema da linkare al proprio applicativo. Entrambi i prodotti hanno come obiettivo il rendere disponibile nel mondo Linux una delle tecnologie più interessanti del prossimo futuro.
In questo post si parlerà di OpenCL e di come usarlo su un Personal Computer dotato di scheda grafica ATI.
Eterogeneo, Parallelo e Performante. La “parola” magica alla base di OpenCL e che ne riassume la filosofia è “Heterogeneous Parallel Computing”. Difficile? Non proprio, basta analizzare parola per parola e se ne comprenderà il significato.
Fino ad oggi il trend tecnologico ha visto il prevalere dei sistemi multi-core. Si è passati dalle CPU mono-core, i Pentium4 e i primi Athlon di un paio di anni fa, a quelle multi-core, ovvero le più recenti Centrino 2 Core Duo e successivi modelli. Aumentando il numero di core interni alla CPU è possibile eseguire più task (thread) contemporaneamente e quindi “fare le cose più velocemente”. Una CPU multi-core è un sistema di computazione parallelo omogeneo. In altre parole le due o più unità della CPU, i singoli core, sono capaci di eseguire lo stesso set di istruzioni (ISA - Instruction Set Architeture) e di utilizzare le stesse tecniche di accesso alla memoria, e costituiscono pertanto un sistema omogeneo. Il fatto che una attività complessa venga poi divisa su più task (thread) rende questo sistema omogeneo anche parallelo.
La situazione sta evolvendo! Di potenza di calcolo non se ne ha mai abbastanza e la presenza di più unità di calcolo diverse come la CPU e la GPGPU (General Purpose Graphics Processing Unit) rende possibile la realizzazione di forme di elaborazione in cui i task (thread) che compongono una attività possono essere eseguiti in cooperazione su questi processori. Ciascun processore svolgerà un compito coerente alle proprie potenzialità, e collaborerà al raggiungimento di un obiettivo finale. La CPU utilizzerà il proprio set di istruzioni macchina, mentre la GPU farà uso del proprio set di istruzioni dedicato. L’obiettivo finale comune è quello di risolvere un determinato problema di calcolo. Della serie “più ne siamo meglio è”.

Io ho fatto la tesi su CUDA con linux.
Leggerò meglio l’articolo appena avrò tempo ma sono contento ne abbiate parlato :)
Penso che molte applicazioni potrebbero giovare da architetture di questo tipo.. è da vedere come, perché non tutto è facilmente parallelizzabile e programmare in parallelo non è facile come farlo in modo sequenziale su una sola cpu.
I vantaggi in termini di tempi sono enormi.
Mi aspetto che programmi di grafica (gimp) o per l’editing video o ripping sfruttino sempre più queste possibilità.
O anche motori di ricerca delle informazioni.
Si riuscirebbe a diminuire i tempi di elaborazione anche di 25-30 volte.
Chissà che ne verrà fuori..
di noct - 06 Novembre 2009 - 16:06
#1 : ok che ne sai ma tanto, ma i motori di ricerca già da anni sfruttano la parallelizzazione, eh.
di Fabio - 06 Novembre 2009 - 17:40
“che ne sai ma tanto” :D non volevo sembrare saccente.. anche perché non lo sono.
Scusami mi son spiegato male ma intendevo a livello di desktop la ricerca non a livello di motore di ricerca tradizionale alla google per intenderci.
Parlavo di beagle , strigi o sistemi simili..
di noct - 06 Novembre 2009 - 17:52
Perché non mi pubblicate il post?!!!
Carlo
di Pizzuco - 07 Novembre 2009 - 22:50