Come faccio a eseguire un programma simultaneo già scritto su un array GPU?
-
03-07-2019 - |
Domanda
Ho una rete neurale scritta in Erlang e ho appena acquistato una scheda GeForce GTX 260 con una GPU da 240 core. È banale usare CUDA come colla per eseguire questo sulla scheda grafica?
Soluzione
No, usare CUDA non è cosa da poco.
Il modello di programmazione CUDA utilizza fondamentalmente C (con alcune aggiunte) ma per ottenere il massimo dalle capacità della GPGPU dovresti assicurarti che i tuoi algoritmi seguano le linee guida CUDA. (vedi Guida alla programmazione NVidia CUDA )
Ad esempio, al fine di ottenere le migliori prestazioni di memoria (da qualche parte intorno a 70 Gbps) è necessario accedere alla memoria in modalità streaming con coalescenza, inoltre i rami sono molto costosi sulle GPU, quindi è necessario evitare il più possibile i condizionali. Consulta la guida e gli esempi forniti con l'SDK, che forniranno un eccellente punto di partenza
Altri suggerimenti
Vorrei poterti dire come fare con Erlang ... ;-), ma almeno Satnam Singh di MS Research ha svolto un lavoro molto interessante con Haskell (Lava) e F #. Forse questo documento può darti alcune intuizioni su come potrebbe essere fatto: