Question: Existe-t-il un émulateur pour une carte Geforce qui me permettrait de programmer et de tester CUDA sans avoir le matériel réel?
Info:
Je cherche à accélérer certaines de mes simulations dans CUDA, mais mon problème est que je ne suis pas toujours sur mon bureau pour faire ce développement. Je voudrais plutôt travailler sur mon netbook, mais mon netbook n'a pas de GPU. Pour autant que je sache, vous avez besoin d'un GPU compatible CUDA pour exécuter CUDA. Y a-t-il un moyen de contourner ceci? Il semblerait que le seul moyen soit un émulateur GPU (qui serait évidemment extrêmement lent, mais fonctionnerait). Mais quelle que soit la manière de procéder, j'aimerais l'entendre.
Je programme sur Ubuntu 10.04 LTS.
Réponses:
Pour ceux qui cherchent la réponse en 2016 (et même 2017) ...
Avertissement
gpuocelot
si vous satisfaites sa liste de dépendances.J'ai essayé d'obtenir un émulateur pour BunsenLabs (Linux 3.16.0-4-686-pae # 1 SMP Debian 3.16.7-ckt20-1 + deb8u4 (2016-02-29) i686 GNU / Linux).
Je vais vous dire ce que j'ai appris.
nvcc
utilisé pour avoir une-deviceemu
option dans CUDA Toolkit 3.0J'ai téléchargé CUDA Toolkit 3.0, je l'ai installé et j'ai essayé d'exécuter un programme simple:
Notez que dans CUDA Toolkit 3.0
nvcc
était dans le/usr/local/cuda/bin/
.Il s'est avéré que j'avais des difficultés à le compiler:
J'ai découvert sur Internet que si j'utilisais
gcc-4.2
ou de manière similaire,gcc-4.9.2
les erreurs pourraient disparaître. J'ai abandonné.gpuocelot
La réponse de Stringer a un lien vers un
gpuocelot
site Web de projet très ancien . Au début, j'ai donc pensé que le projet avait été abandonné en 2012 environ. En fait, il a été abandonné quelques années plus tard.Voici quelques sites Web à jour:
J'ai essayé d'installer gpuocelot en suivant le guide . J'ai eu plusieurs erreurs lors de l'installation et j'ai de nouveau abandonné.
gpuocelot
n'est plus pris en charge et dépend d'un ensemble de versions très spécifiques de bibliothèques et de logiciels.Vous pouvez essayer de suivre ce didacticiel à partir de juillet 2015, mais je ne garantis pas que cela fonctionnera. Je ne l'ai pas testé.
MCUDA
Cela pourrait être utile. Voici un lien vers le site Web .
Déchets CUDA
C'est un émulateur à utiliser sur Windows 7 et 8. Je ne l'ai pas essayé cependant. Il ne semble plus être développé (le dernier commit est daté du 4 juillet 2013).
Voici le lien vers le site Web du projet: https://code.google.com/archive/p/cuda-waste/
CU2CL
Dernière mise à jour: 12.03.2017
Comme Dashesy l'a souligné dans les commentaires, CU2CL semble être un projet intéressant. Il semble être capable de traduire le code CUDA en code OpenCL. Donc, si votre GPU est capable d'exécuter du code OpenCL, le projet CU2CL pourrait vous intéresser.
Liens:
la source
nvcc -deviceemu
CUDA Waste
travailléCU2CL
travailléCette réponse est peut-être trop tardive, mais cela vaut la peine de le noter quand même. GPU Ocelot ( dont je suis l'un des principaux contributeurs ) peut être compilé sans les pilotes de périphériques CUDA (libcuda.so) installés si vous souhaitez utiliser les backends Emulator ou LLVM. J'ai démontré l'émulateur sur des systèmes sans GPU NVIDIA.
L'émulateur tente d'implémenter fidèlement les spécifications PTX 1.4 et PTX 2.1 qui peuvent inclure des fonctionnalités que les anciens GPU ne prennent pas en charge. Le traducteur LLVM s'efforce d'obtenir une traduction correcte et efficace de PTX vers x86 qui, espérons-le, fera de CUDA un moyen efficace de programmer des processeurs multicœurs ainsi que des GPU.
-deviceemu
est une fonctionnalité obsolète de CUDA depuis un certain temps, mais le traducteur LLVM a toujours été plus rapide.En outre, plusieurs vérificateurs d'exactitude sont intégrés à l'émulateur pour vérifier: les accès mémoire alignés, les accès à la mémoire partagée sont correctement synchronisés et le déréférencement de la mémoire globale accède aux régions de mémoire allouées. Nous avons également implémenté un débogueur interactif en ligne de commande largement inspiré de gdb pour passer en une seule étape à travers les noyaux CUDA, définir des points d'arrêt et des points de surveillance, etc ... Ces outils ont été spécialement développés pour accélérer le débogage des programmes CUDA; vous pouvez les trouver utiles.
Désolé pour l'aspect Linux uniquement. Nous avons lancé une branche Windows ( ainsi qu'un port Mac OS X ), mais la charge d'ingénierie est déjà suffisamment importante pour stresser nos recherches. Si quelqu'un a du temps et de l'intérêt, il peut souhaiter nous aider à fournir une assistance pour Windows!
J'espère que cela t'aides.
la source
Vous pouvez également vérifier le projet gpuocelot qui est un véritable émulateur dans le sens où PTX (bytecode dans lequel le code CUDA est converti) sera émulé.
Il y a aussi un traducteur LLVM, il serait intéressant de tester s'il est plus rapide que lors de l'utilisation de -deviceemu.
la source
La boîte à outils CUDA en avait une intégrée jusqu'au cycle de publication de CUDA 3.0. Si vous utilisez une de ces très anciennes versions de CUDA, assurez-vous d'utiliser -deviceemu lors de la compilation avec nvcc.
la source
https://github.com/hughperkins/cuda-on-cl vous permet d'exécuter des programmes NVIDIA® CUDA ™ sur des GPU OpenCL 1.2 (divulgation complète: je suis l'auteur)
la source
Soyez prudent lorsque vous programmez en utilisant -deviceemu car il y a des opérations que nvcc acceptera en mode d'émulation mais pas lors de l'exécution sur un GPU. Cela se trouve principalement avec l'interaction appareil-hôte.
Et comme vous l'avez mentionné, préparez-vous à une exécution lente.
la source
GPGPU-Sim est un simulateur de GPU qui peut exécuter des programmes CUDA sans utiliser de GPU. J'ai créé une image docker avec GPGPU-Sim installé pour moi-même au cas où cela serait utile.
la source