Est-il un langage d'assemblage pour CUDA?
Je vous pose cette question parce que je sais qu'il y a un moyen d'utiliser des fichiers binaires au lieu de fichiers source.
Aussi, j'imagine qu'avec un langage d'assemblage, il serait plus facile de simuler des pointeurs de fonction. À moins que l'assemblée sur un GPU est totalement différente de celle sur un CPU.
quel est le problème avec C pour CUDA? developer.download.nvidia.com/compute/cuda/2_1/toolkit/docs/...
Répondu il y a quelques semaines dans une réponse à "Est-il possible de mettre des instructions en code CUDA?". Note: ce n'est pas la accepté de répondre, mais celui qui est venu plus tard.
Aussi, depuis CUDA 3.2 (et 2.0-périphériques) des pointeurs de fonction sont pris en charge sans l'ingérence de ptx. Et les appareils plus anciens, n'a tout simplement pas une telle chose comme périphérique-fonction - tous les appels à
Double Possible de Comment créer ou manipuler des GPU assembleur?
Répondu il y a quelques semaines dans une réponse à "Est-il possible de mettre des instructions en code CUDA?". Note: ce n'est pas la accepté de répondre, mais celui qui est venu plus tard.
Aussi, depuis CUDA 3.2 (et 2.0-périphériques) des pointeurs de fonction sont pris en charge sans l'ingérence de ptx. Et les appareils plus anciens, n'a tout simplement pas une telle chose comme périphérique-fonction - tous les appels à
__device__
fonctions du noyau ont été inline.Double Possible de Comment créer ou manipuler des GPU assembleur?
OriginalL'auteur widgg | 2011-09-08
Vous devez vous connecter pour publier un commentaire.
Vous voudrez peut-être jeter un oeil à la PTX. NVIDIA fournit un document décrivant dans le CUDA 4.0 documentation.
http://developer.nvidia.com/nvidia-gpu-computing-documentation
NVIDIA décrit PTX comme "Ta faible niveau parallèle thread d'exécution de la machine virtuelle et du jeu d'instructions de l'architecture (ISA). PTX expose le GPU de données de calcul parallèle de l'appareil." Pas exactement comme x86 assemblée, mais vous trouverez peut-être une lecture intéressante.
OriginalL'auteur Patrick87
Il y a en fait deux CUDA assemblée langues.
PTX est une machine indépendante de l'assemblée de la langue qui est compilé vers le bas à SASS, le opcodes exécuté sur un GPU de la famille. Si vous construisez .cubins, vous avez à traiter avec SASS. La plupart des CUDA runtime applications utilisent PTX, car cela permet de courir sur des Gpu libéré après l'application d'origine.
Aussi, des pointeurs de fonction ont été dans CUDA pendant un certain temps si vous ciblez sm_20 (Fermi/GTX série 400).
OriginalL'auteur ChrisV
Oui, l'ensemble sur un GPU est totalement différente de celle d'un PROCESSEUR.
L'une des différences est que le jeu d'instruction pour un GPU n'est pas normalisée. NVidia (et AMD et d'autres GPU fournisseurs) peuvent changer leur jeu d'instructions d'un GPU modèle à l'autre.
Donc CUDA ne pas exposer un langage d'assemblage. Il n'y aurait pas de point. (Et les limites dans CUDA C dialecte, et toutes les autres langues qu'ils soutiennent, sont là à cause de limitations dans le matériel GPU, et pas seulement parce que Nvidia vous hait et veut vous ennuyer. Donc, même si vous avez eu un accès direct à la sous-jacentes et jeu d'instructions de l'assemblée de la langue, vous ne pourrez pas, par magie, faire des choses que vous ne pouvez pas le faire maintenant.
(Noter qu'il y a NVidia n'définir un "virtuel" jeu d'instructions que vous pouvez utiliser et les intégrer dans votre code. Mais ce n'est pas la jeu d'instructions, et il n'a pas de carte directement le matériel instructions. C'est un peu plus qu'un simple langage de programmation qui "ressemble" un dialecte de l'assemblée
Votre CUDA code fonctionnera très bien à travers les différents Gpu. CUDA juste compile une cible appropriée pour chaque GPU.
OriginalL'auteur jalf