Sí, el ensamblaje en una GPU es totalmente diferente al de una CPU. Una de las diferencias es que el conjunto de instrucciones para una GPU no está estandarizado. NVidia (y AMD y otros proveedores de GPU) pueden cambiar y cambian su conjunto de instrucciones de un modelo de GPU al siguiente.
Así que CUDA no expone un lenguaje ensamblador. No tendría sentido. (Y las limitaciones en el dialecto C de CUDA y cualquier otro idioma que admitan están ahí debido a limitaciones en el hardware de la GPU, no solo porque Nvidia lo odia y quiere molestarlo. Incluso si tuviera acceso directo al conjunto de instrucciones subyacente y el lenguaje ensamblador, no sería capaz de hacer cosas mágicamente que no puede hacer ahora.
(Tenga en cuenta que NVidia define un conjunto de instrucciones "virtuales" que puede usar e incrustar en su código. no el conjunto de instrucciones, y no se asigna directamente a las instrucciones de hardware. Es poco más que un lenguaje de programación simple que "se parece" a un dialecto del ensamblaje
¿Qué pasa con C para CUDA? http://developer.download.nvidia.com/compute/cuda/2_1/toolkit/docs/NVIDIA_CUDA_Programming_Guide_2.1.pdf –
Respondido hace unas semanas [en una respuesta a "¿Es posible poner instrucciones en el código CUDA?" ] (http://stackoverflow.com/questions/3677220/is-it-possible-to-put-instructions-into-cuda-code/7072079#7072079). * Nota: * no es la respuesta aceptada, sino una que vino después. – dmckee
@dmckee +1. Además, dado que los punteros de función CUDA 3.2 (y 2.0 dispositivos) son compatibles sin interferir con ptx. Y los dispositivos más antiguos simplemente no tienen tal cosa como la función del dispositivo: todas las llamadas a las funciones '__device__' del núcleo estaban en línea. – aland