Microsoft C++ AMP così si sfruttano multi-core e APU

C++ AMP è una nuova estensione del compilatore Visual C++ che permetterà agli sviluppatori di software di mettere a frutto soluzioni altamente parallele ed eterogenee come le APU.

Avatar di Manolo De Agostini

a cura di Manolo De Agostini

Microsoft ha annunciato C++ AMP (Accelerated Massive Parallelism), una nuova estensione del compilatore Visual C++. Farà parte della prossima versione di Visual Studio. Questa nuova soluzione, avrà specifiche aperte e sarà integrabile in altri compilatori. Secondo la casa di Redmond dovrebbe consentire agli sviluppatori di avvantaggiarsi in modo più completo di hardware altamente paralleli ed eterogenei.

Come sapete Microsoft non è la sola a lavorare sul supporto al calcolo parallelo ed eterogeno. Abbiamo CUDA, che è esclusivo delle GPU Nvidia. Secondo Microsoft "se volete ottenere le migliori prestazioni dalla GPU di un produttore, difficilmente sarete in grado di fare meglio rispetto allo stack software della stessa azienda". C'è OpenCL, una soluzione open source, e così anche Google Go. C++ AMP ha il vantaggio di essere integrato in C++, un linguaggio molto diffuso.

L'arrivo dei processori con grafica integrata ha creato le premesse per spingere sul concetto di calcolo eterogeneo. I primi effetti si vedono oggi, in particolare con i programmi per la transcodifica video, ma con C++ AMP Microsoft punta a estendere questo concetto a nuove categorie di applicazioni.

Sfruttare al meglio un'APU può portare non solo a ottenere migliori prestazioni, ma anche a un'efficienza superiore. C++ AMP, secondo Microsoft, è basato su DirectX, DirectCompute in particolare. Non richiede l'uso di un compilatore differente o l'apprendimento di una nuova sintassi.

C++ AMP offre una libreria del tipo Standard Template Library all'interno del concurrency namespace esistente, nel nuovo file header amp.H. Rende inoltre molto più facile lavorare con grandi dati multi-dimensionali su hardware eterogeneo, in modo da mettere a frutto la parallelizzazione. 

La casa di Redmond ha annunciato miglioramenti anche per quanto riguarda la prossima versione della Parallel Patterns Library (PPL) e del C++ Concurrency Runtime.

Come segnalato da PCPer, Microsoft ha dimostrato le capacità di C++ AMP su computer e dispositivi di differente potenza nel corso del Fusion Developer Summit, in modo da illustrarne la flessibilità - la prova è stato possibile con un singolo file eseguibile.

Il test è stato in grado di scalare dai 3 GFlop possibili con i core x86 di Llano ai 650 GFlop ottenibili con l'intervento della parte grafica della APU. Infine, il test è stato in grado di sfruttare gli 830 GFlop raggiunti con un paio di schede video Radeon HD 5800. Lo stesso file è stato eseguito su una APU della serie E all'interno di un tablet, con una potenza di 16 GFLOP e 16.000 particelle.