2016-01-23 18 views
19

Sto lavorando su codice ad alte prestazioni in C++ e ho usato sia CUDA che OpenCL e più recentemente C++ AMP, che mi piace molto. Sono comunque un po 'preoccupato che non si sviluppi e si estenda e si estinguerà.Qual è lo stato corrente di C++ AMP

Ciò che mi porta a questo pensiero è che anche i blog AMP MS C++ sono rimasti in silenzio per circa un anno. Guardando la libreria degli algoritmi AMP C++ http://ampalgorithms.codeplex.com/wikipage/history sembra che non sia successo nulla per oltre un anno.

L'unico sviluppo che ho visto è che ora LLVM supporta sorta di C++ AMP, quindi non è solo le finestre, ma questo è tutto, e non qualcosa che è stato detto in lungo e in largo.

Che tipo di lavoro sta succedendo, se del caso, che tu sappia?

+2

Si consiglia di cercare OpenMP 4.0 che supporta l'esportazione nel dispositivo. Ho visto sul clang ML che stanno lavorando sulla generazione del codice GPU ma non conosco lo stato attuale. Come OpenMP 3.0 è entrato in clang 3.6, suppongo che l'altro verrà dopo. –

+1

Grazie per il suggerimento. Non ero a conoscenza del fatto che openmp ora supportava gpu's. Questo non è un "quadro" con cui ho esperienza personale, però, ma sembra interessante. Dopo averlo guardato ancora, mi sto davvero chiedendo perché vorresti usare CUDA, OpenCL o AMP su OpenMP? Sembra offrire molto degli stessi in generale, ma forse non ne so abbastanza per vedere ancora i problemi. – JoeTaicoon

+0

OpenMP "genererà" il codice per te. È fantastico ma potrebbe non essere efficiente come previsto. In questi casi, potresti voler scrivere il codice CUDA per renderlo più efficiente. Proprio come si può scrivere codice sse/avx perché il compilatore non riesce a vettorizzare un ciclo. Ma sono d'accordo sul fatto che a lungo termine sarà davvero meglio se possiamo contare su queste caratteristiche !! –

risposta

11

Ciò che mi porta a questo pensiero è che anche i blog AMP MS C++ sono rimasti in silenzio per circa un anno. Guardando la libreria degli algoritmi AMP C++ http://ampalgorithms.codeplex.com/wikipage/history sembra che non sia successo nulla per oltre un anno.

Ero abituato a lavorare sulla libreria di algoritmi C++ AMP. Dopo la versione iniziale, che Microsoft ha messo insieme, ho creato una serie di funzionalità aggiuntive e le ho trasferite alle versioni più recenti di VS. Sembrava che ci fosse una perdita di slancio attorno al C++ AMP. Non ho intenzione di fare ulteriori lavori sul progetto.

Fai di questo ciò che vuoi. Forse qualcuno da Microsoft può chiarire le cose?

+5

Grazie per aver risposto con una risposta piuttosto chiara. Essendo uno degli autori del libro "The C++ AMP", e ora non ci si lavora, questo rende un caso abbastanza chiaro per supporre che l'amp C++ sia più o meno morto. Peccato davvero. Nella mia mente era un'iniziativa molto promettente, ma suppongo che CUDA e OpenCL non fossero disposti a farsi da parte. Ora mi chiedo che cosa vedi come lo strumento migliore per il parallelismo massiccio? – JoeTaicoon

+1

Peccato che ms tace su di esso, dal momento che penso che sia davvero una buona libreria (tranne per l'opzione di piastrellatura difficile). – gast128

1

Ho scoperto che AMD sta ancora utilizzando il C++ AMP .. http://developer.amd.com/community/blog/2015/09/15/programming-models-for-heterogeneous-systems/ http://developer.amd.com/community/blog/2015/01/19/bolt-1-3-whats-new/ e ci sono alcuni riferimenti nel forum in cui Intel sta menzionare troppo.

La cosa principale che vedo è che i programmatori stanno finalmente iniziando a giocare con l'idea che possiamo usare anche la GPU per le attività ordinarie. Soprattutto ora che gli HBM stanno arrivando alle APU potresti fare molto su un sistema relativamente economico. Quindi non copiare i dati sulla scheda grafica o sulla memoria principale, ma conservarli in una "cache" di BIG HBM in cui è possibile accedere "in tempo reale", ad esempio senza latenza della GPU.

Così Microsoft ha creato una tecnologia davvero molto bella che diventerà rilevante solo nei prossimi anni, quando l'hardware sarà finalmente "user friendly". Ma la cosa può diventare obsoleta se non avanzano come fanno gli altri. Non che qualcosa non funzioni in C++ AMP, ma perché la velocità del cambiamento è così grande ultimamente che i programmatori non rischiano di iniziare a usarlo, se non vedono alcuni progressi ... almeno un blog o due all'anno, dove hanno provato qualcosa con esso in modo che tu veda che Microsoft ci crede ancora.

0

Sto ancora utilizzando l'amplificatore. In questo momento sto facendo un tracciante gpu (si spera) per l'uso dei giochi.

Sembra che l'amplificatore non abbia molta documentazione al momento o molti nuovi aggiornamenti purtroppo. È sicuramente qualcosa che mi piacerebbe vedere aggiornato e usato di più, ma sembra morto.

0

FWIW stiamo usando anche C++ AMP nel mondo finanziario. molto successo relativamente facile da codificare. CUDA è probabilmente una scelta più sicura, ma se qualcuno sta prendendo in considerazione l'apprendimento dell'AMP, suggerisco di rispolverare prima il vostro STL di base e poi leggere le viste degli array.

+0

Questo non fornisce una risposta alla domanda. Una volta che hai [reputazione] sufficiente (https://stackoverflow.com/help/whats-reputation) sarai in grado di [commentare qualsiasi post] (https://stackoverflow.com/help/privileges/comment); invece [fornisci risposte che non richiedono chiarimenti da parte del richiedente] (https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-can- i-do-, invece). - [Dalla recensione] (/ recensione/post di bassa qualità/17044014) –