▾ G11 Media: | ChannelCity | ImpresaCity | SecurityOpenLab | Italian Channel Awards | Italian Project Awards | Italian Security Awards | ...
Homepage > Notizia

OpenCL: un unico linguaggio per tutti

OpenCL è un recente linguaggio in grado di utilizzare le Gpu per elevate moli di calcoli paralleli al posto delle Cpu, è un linguaggio aperto ed è supportato da un gruppo di aziende.

Autore: Roberto Campice - AMD

Pubblicato il: 12/11/2009

Alcune delle maggiori difficoltà  che gli utenti riscontrano nell'utilizzo della tecnologia risultano essere molto spesso conseguenza dell''incompatibilità  fra alcuni componenti, che possono causare problemi di integrazione e che per essere risolti necessitano di soluzioni complesse, non sempre rispondenti alla filosofia "plug and play" spesso evidenziata e promessa. Stampanti che non dialogano con i PC, server dotati di sistemi operativi differenti che non parlano fra loro, applicazioni non perfettamente interoperabili, dispositivi mobili non facilmente sincronizzabili, un elenco questo che potrebbe continuare.
Recentemente si è sviluppato un significativo e crescente interesse nell'uso di processori grafici (Gpu) per un'elaborazione dei dati tradizionale. Le caratteristiche di elaborazione delle Gpu sono passate da funzionalità  rigide e predefinite a modalità  in grado di offrire un elevato grado di programmabilità . Come risultato si è aperta verso gli sviluppatori un'interessante opportunità  per sfruttare le elevate capacità  di elaborazione parallela disponibile, riscrivendo le loro applicazioni così da poterle adeguare ai modelli di programmazione Api (Application Programming Interface) grafiche tradizionali, come Microsoft DirectX e OpenGL.

[tit:Soluzioni proprietarie]
Questo tipo di approccio ha conquistato la comunità  dei ricercatori, ma lo stesso non si può affermare per gli sviluppatori non abituati all'utilizzo di Api grafiche. Per facilitarne l'uso, sono state sviluppate nuove interfacce di programmazione progettate specificamente per garantire una interazione più semplice, nascondendo agli sviluppatori i dettagli del modello di programmazione grafica.
L'adozione di questa soluzione tuttavia non ha riscontrato il successo sperato. Le implementazioni per queste Api di programmazione hanno finito per seguire una modalità  proprietaria, funzionando quindi unicamente con i prodotti hardware dei vendor fornitori dell'interfaccia di sviluppo. In aggiunta a questo, la Gpu viene considerata come puro e semplice acceleratore applicativo indipendente piuttosto che un elemento fondamentale nella realizzazione di una piattaforma eterogenea , bilanciata ed estesa.
opencl-un-unico-linguaggio-per-tutti-2.jpg
Sempre più spesso ci si trova quindi nella condizioni di dover gestire codici indipendenti e separati per la Cpu e per la Gpu, con una conseguente scarsa adozione da parte sia del mercato che degli sviluppatori, che a volte si trovano in notevole difficoltà  nel comprendere il modo migliore per sfruttare le capacità  elaborative offerte dalle Gpu e nel scegliere le Api più idonee.
La storia ha più volte dimostrato come l'incertezza derivante dall'assenza di uno standard definito possa avere un impatto estremamente negativo sul mercato; basti pensare alla competizione iniziale fra il formato Vhs rispetto al Betamax, o nella storia più recente quella che ha riguardato la tecnologia Blu-ray contro l'HD Dvd. Gli utenti, sia aziende sia consumatori finali, sono solitamente poco propensi a investire in una tecnologia in assenza di una roadmap definitiva. I produttori si sono resi conto che questa mancanza di standard era responsabile della lenta adozione delle schede Gpu, e questa considerazione ha rappresentato quindi un incentivo per la definizione di uno standard comune e l'avvio di una fase collaborativa sul tema.

[tit:L'openCL]
Lo scorso anno, i principali vendor di Gpu e Cpu, tra cui Amd, si sono alleati per definire e sviluppare Open Computing Language (OpenCL), un nuovo linguaggio di programmazione che può essere utilizzato dagli sviluppatori su piattaforme eterogenee, in grado di sfruttare la potenza di tutti i processori presenti in un sistema, indipendentemente dalla loro tipologia e dal vendor produttore.
Sviluppato da Khronos Group nel 1992 - lo stesso consorzio specializzato nella definizione di standard aperti a cui si deve la creazione di interfacce di programmazione OpenGL per la standardizzazione, la programmazione per la grafica 2D/3D, l'imaging medicale e l'entertainment - il linguaggio OpenCL è concepito per l'elaborazione parallela su Gpu e Cpu. OpenCL permette alla Gpu di rimpiazzare la Cpu nell'elaborazione o nel ‘crunching' dei dati, con un bilanciamento di piattaforma ottimale aumentando quindi anche la velocità  e l'efficienza dell'elaborazione.
opencl-un-unico-linguaggio-per-tutti-3.jpg
Offrendo a Cpu e Gpu la possibilità  di lavorare insieme, il linguaggio OpenCL apre agli sviluppatori la possibilità  di spostare sulla Gpu parte del carico applicativo di tipo parallelo, lasciando alla Cpu compiti più tradizionali. In questo modo, ogni processore presente nel sistema può svolgere il carico di lavoro più adatto alle proprie caratteristiche, migliorando in modo significativo le prestazioni e garantendo elaborazioni con tempi inferiori, a parità  di hardware. La versione beta del linguaggio OpenCL operante su Cpu x86 è già  disponibile da Amd. Grazie a questo kit di sviluppo gli sviluppatori possono iniziare a effettuare il porting delle loro applicazioni su OpenCL, beneficiando della possibilità  di sfruttare appieno la combinazione con la capacità  elaborativa della Gpu, appena verrà  rilasciata la piattaforma di sviluppo completa.

[tit:I vantaggi]
In termini operativi, OpenCL permette di ottenere una velocità  di calcolo superiori con elevate prestazioni e maggiore reattività  da parte dei server. Ad esempio molte banche, società  finanziarie e aziende che gestiscono grandi volumi di dati riscontrano spesso una difficoltà  nel recuperarli, analizzarli e metterli in relazione tra di loro. Fino a oggi tutto questo richiedeva una considerevole quantità  di tempo, considerato che la Cpu tradizionale era l'unica unità  di elaborazione disponibile nel sistema. Grazie all'evoluzione offerta dall'introduzione delle OpenCL è ora possibile combinare la notevole potenza di calcolo offerta dalle Gpu, con una significativa riduzione dei tempi di elaborazione complessivi. Con la possibilità  di sfruttamento per tutte le unità  di elaborazione presenti in un sistema, infatti, il linguaggio OpenCL è in grado di aiutare le aziende a valorizzare l'hardware di cui dispongono. E non è soltanto il settore dei servizi finanziari a beneficiarne, ma qualsiasi ambito in cui vi sia l'esigenza di elaborare grandi quantità  di dati: laboratori di ricerca, università , ambienti di progettazione Cad fino all'ambito televisivo o cinematografico, solo per citarne alcuni.

[tit:Un linguaggio aperto]
Una delle principali aree di eccellenza del linguaggio OpenCL è la capacità  per un'applicazione di individuare quanti e quali processori siano disponibili nel sistema, comprese Cpu multi-core o Gpu compatibili. Questa funzionalità  offre la potenzialità  di espandere dinamicamente le prestazioni in base all'hardware a disposizione dell'utente. Per esempio, se un utente dispone di un'applicazione accelerata grazie all'utilizzo delle OpenCL - che sono in grado di trarre vantaggio delle capacità  delle Cpu e Gpu disponibili - può contenere in modo significativo il proprio investimento hardware e la combinazione della loro capacità  elaborativa non richiederà  costanti revisioni tecnologiche per soddisfare le crescenti esigenze di elaborazione. Con un altro esempio, una società  di broadcasting potrebbe semplicemente acquistare ulteriori Gpu o Cpu o versioni più potenti delle stesse, ampliando linearmente la capacità  di calcolo disponibile quando serve (assumendo di disporre di un'applicazione sviluppata in OpenCL in grado di scalare automaticamente).
Uno degli aspetti più importanti di OpenCL è che si tratta di un linguaggio aperto. Si tratta infatti di uno standard creato da un gruppo di aziende con l'impegno di tutti i vendor coinvolti nel consorzio a garantirne piena funzionalità . E' un'autentica novità  non soltanto per i vendor partecipanti, allineati su uno standard comune, ma anche per gli utenti finali, che possono beneficiare di un'esperienza di elaborazione più veloce ed efficiente. La finalità  del linguaggio OpenCL è quella di poter risolvere i problemi reali di utenti e programmatori. La disponibilità  di un linguaggio aperto interpiattaforma come OpenCL rende possibile un'elaborazione più veloce ed efficiente: la realizzazione di un sogno per tutti.

© 2009 Advanced Micro Devices Inc. Tutti i diritti riservati.

Se questo articolo ti è piaciuto e vuoi rimanere sempre informato con le notizie di BitCity.it iscriviti alla nostra Newsletter gratuita.

Tag:

Notizie che potrebbero interessarti: