Durante la scrittura di applicazioni CUDA, è possibile lavorare a livello di driver o al livello di esecuzione, come illustrato su questa immagine (Le librerie sono CUFFT e CUBLAS per la matematica avanzata):CUDA driver API vs. CUDA runtime
Suppongo che il compromesso tra i due sia un aumento delle prestazioni per l'API low-evel ma al costo di una maggiore complessità del codice. Quali sono le differenze concrete e quali sono le cose significative che non puoi fare con l'API di alto livello?
Sto utilizzando CUDA.net per l'interoperabilità con C# ed è stato creato come una copia dell'API del driver. Ciò incoraggia la scrittura di un codice piuttosto complesso in C# mentre l'equivalente in C++ sarebbe più semplice utilizzando l'API runtime. C'è qualcosa da vincere in questo modo? L'unico vantaggio che vedo è che è più facile integrare la gestione intelligente degli errori con il resto del codice C#.
un vantaggio del driver API sarebbe per gli sviluppatori del compilatore aggiunge il supporto per i kernel in lingue che il sottoinsieme CUDA di C. –