Sì, l'assembly su una GPU è completamente diverso da quello di una CPU. Una delle differenze è che il set di istruzioni per una GPU non è standardizzato. NVidia (e AMD e altri fornitori di GPU) possono e fanno cambiare il loro set di istruzioni da un modello di GPU al successivo.
Quindi CUDA non espone un linguaggio assembly. Non avrebbe senso (E le limitazioni nel dialetto C di CUDA e in qualsiasi altro linguaggio supportino sono presenti a causa delle limitazioni nell'hardware della GPU, non solo perché Nvidia ti odia e vuole infastidirti. Quindi, anche se tu avessi accesso diretto al set di istruzioni sottostante e linguaggio assembly, non saresti in grado di fare magicamente cose che non puoi fare ora.
(Nota che c'è NVidia che definisce un set di istruzioni "virtuale" che puoi usare e incorporare nel tuo codice. non il set di istruzioni, e non la mappa direttamente alle istruzioni hardware. e 'poco più di un linguaggio di programmazione più semplice che "si presenta come" un dialetto di assemblaggio
Cosa c'è che non va con C per CUDA? http://developer.download.nvidia.com/compute/cuda/2_1/toolkit/docs/NVIDIA_CUDA_Programming_Guide_2.1.pdf –
Ho risposto poche settimane fa [in una risposta a "È possibile inserire istruzioni nel codice CUDA?" ] (http://stackoverflow.com/questions/3677220/is-it-possible-to-put-instructions-into-cuda-code/7072079#7072079). * Nota: * non la risposta accettata, ma una che è arrivata dopo. – dmckee
@dmckee +1. Inoltre, poiché i puntatori di funzione CUDA 3.2 (e 2.0-dispositivi) sono supportati senza interferire con ptx. E i dispositivi più vecchi non hanno semplicemente funzioni di dispositivo - tutte le chiamate alle funzioni '__device__' dal kernel sono state sottolineate. – aland