NVIDIA, la scorsa settimana, ha sottoposto in anteprima all’interesse della stampa quelli che sono i progressi fatti nel mondo del GPU Computing e del calcolo aprallelo in genere, che vengono mostrati al pubblico più ampio proprio in questi giorni in occasione della SC11 di Seattle, descrivendo anche quali siano gli obiettivi per il futuro e i progetti in via di realizzazione. Abbiamo deciso di dedicare all’argomento un articolo dedicato, in quanto sono state diverse le tematiche trattate.
Con l’obiettivo di venire incontro alle esigenze dei programmatori di poter scrivere più agevolmente e riutilizzare codice già esistente, nonché di trarre il maggior vantaggio possibile dalle potenzialità della computazione parallela, NVIDIA assieme a Cray, Portland Group e CAPS ha annunciato una nuova API, OpenACC, con l’intenzione di promuoverlo in qualità di nuovo standard per la programmazione parallela.
OpenAAC consente di fornire al compilatore suggerimenti semplici, conosciuti come “direttive” che permettono di identificare quali zone del codice devono essere accelerate, senza che si renda necessaria una modifica o un adattamento del codice sottostante. Portando così il parallelismo al compilatore, le direttive gli permettono di compiere il lavoro di mappatura della computazione nell’acceleratore.
I compilatori di Cray, PGI e CAPS offriranno supporto allo standard OpenACC a partire dal primo trimestre 2012. Lo standard OpenACC sarà pienamente compatibile ed interoperabile, ovviamente, con l’architettura NVIDIA CUDA. Le direttive offrono una base di codice comune multipiattaforma e multivendor, in maniera tale che sia possibile preservare gli investimenti delle applicazioni legacy grazie ad una facile migrazione verso l’accelerated computing. Secondo quanto dichiarato dagli sviluppatori che ha già avuto modo di testare OpenACC, sono stati riscontrati incrementi prestazionali da 2x a 10x in appena due settimane dall’impiego di compilatori con supporto alle direttive.
L’API OpenACC descrive una raccolta di direttive per il compilatore per specificare loop e regioni di codice in linguaggio standard C, C++ e Fortran la cui esecuzione venga scaricata dalla CPU ad un relativo acceleratore parallelo. I programmatori possono così creare programmi in grado di sfruttare i benefici della parallelizzazione senza la necessità di inizializzare l’acceleratore, gestire trasferimento di dati tra la CPU host e l’acceleratore o iniziare lo startup e lo shutdown dell’acceleratore.
Tutti questi dettagli sono impliciti nel modello di programmazione e sono gestiti dai compilatori e dai runtime che supportano l’API OpenACC. Il modello di programmazione permette al programmatore di aumentare le informazioni disponibili per i compilatori, includendo specifiche di dati locali ad un acceleratore, guidance sulla mappatura dei loop in un acceleratore e simili dettagli performance-related.
Gli sviluppatori interessati a provare il nuovo standard OpenACC hanno la possibilità di richiedere una licenza trial gratuita della durata di 30 giorni, a partire da questo indirizzo.
Fonte notizia http://www.businessmagazine.it