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.

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.

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.