Sono molto nuovo nella programmazione GPGPU, quindi ti prego di perdonarmi se la domanda non è particolarmente appropriata. Da quello che ho capito la programmazione GPU è un lavoro di ingegneria molto complicato rispetto alla normale programmazione della CPU. Bisogna stare molto attenti a problemi di divergenza, piastrellatura, allocazione di memoria appuntata e sovrapposizione di calcolo dispositivo / comunicazione host-dispositivo.
Dopo aver fatto un po 'di ricerca, ho trovato la libreria di spinta che sembra provare a imitare il C ++ STL. Questo è abbastanza carino Tuttavia, in base alla mia esperienza molto limitata e dopo aver visto tutta la micro-gestione richiesta per ottenere buone prestazioni, sono un po 'scettico riguardo alle prestazioni. Può gestire efficacemente tutta la parte di programmazione complessa internamente? Alcune librerie molto note, come PETSc, sembrano usare questo pacchetto che mi fa credere che in qualche modo dovrebbe.
Mi chiedevo se le persone con più esperienza su CUDA e fiducia potessero dire una parola o due sulle prestazioni del pacchetto rispetto alla programmazione CUDA di basso livello. Quando posso usare la spinta e quando devo tornare a CUDA?