137 votes

GPU Émulateur de programmation CUDA sans le matériel

Question: Est-il un émulateur pour une carte Graphique qui me permettrait de programmer et de tester CUDA sans avoir le matériel réel?


Info:

Je suis à la recherche d'accélérer un peu les simulations de la mine, à CUDA, mais mon problème est que je ne suis pas toujours autour de mon bureau pour faire de ce développement. Je voudrais faire un peu de travail sur mon netbook au lieu de cela, mais mon netbook n'a pas de GPU. Maintenant, autant que je sache, vous avez besoin d'un CUDA GPU capable d'exécuter CUDA. Est-il un moyen de contourner ce problème? Il me semble que la seule façon est d'un GPU émulateur (qui, évidemment, serait lente et douloureuse, mais fonctionne). Mais quelle que soit la façon dont il est pour ce faire je voudrais l'entendre.

Je suis de programmation sur Ubuntu 10.04 LTS.

46voto

kerrmudgeon Points 261

Cette réponse peut être trop tard, mais il est intéressant de noter, de toute façon. GPU Ocelot [dont je suis l'un des principaux contributeurs] peut être compilé sans CUDA pilotes de périphérique [libcuda.so] installé si vous souhaitez utiliser l'Émulateur ou LLVM backends. Je l'ai montré dans l'émulateur sur les systèmes sans Gpu NVIDIA.

L'émulateur tente de mettre en œuvre fidèlement le PTX 1.4 et PTX 2.1 spécifications qui peuvent inclure des éléments plus anciens Gpu ne prennent pas en charge. La LLVM traducteur s'efforce de la correcte et efficace de la traduction de PTX x86 qui feront que CUDA un moyen efficace de programmation de Processeurs multicœurs ainsi que les Gpu. -deviceemu a été une fonctionnalité obsolète de CUDA pour assez un certain temps, mais la LLVM traducteur a toujours été plus rapide.

En outre, plusieurs exactitude les pions sont intégrés dans l'émulateur pour vérifier: aligné les accès à la mémoire, les accès à la mémoire partagée sont correctement synchronisés, et la mémoire globale du déréférencement accède à des zones de mémoire allouées. Nous avons également mis en place une ligne de commande interactive débogueur [2] inspiré en grande partie par gdb pour une seule étape à travers les noyaux CUDA, définir des points d'arrêt et points d'observation, etc... Ces outils ont été spécifiquement développés pour accélérer le débogage de programmes CUDA; vous pourriez trouver utile.

Désolé pour le Linux-seul aspect. Nous avons commencé un Windows branche [ainsi que d'un Mac OS X port] mais le génie fardeau est déjà assez grand pour le stress de nos activités de recherche. Si quelqu'un a des temps et de l'intérêt, ils veulent peut-être nous aider à fournir un soutien pour Windows!

Espérons que cette aide.

[1] GPU Ocelot - voir mon site web répertorié
[2] Ocelot Débogueur Interactif - http://forums.nvidia.com/index.php?showtopic=174820

37voto

Stringer Points 7273

Vous pouvez vérifier aussi gpuocelot projet qui est un vrai émulateur dans le sens que PTX (bytecode dans lequel CUDA code est converti) sera émulé.

Il y a aussi un LLVM traducteur, il serait intéressant de tester si c'est plus rapide que lors de l'utilisation -deviceemu.

15voto

jskaggz Points 1751

Le CUDA toolkit a un construit en elle jusqu'à ce que le CUDA de la version 3.0 du cycle. Je vous utilisez l'un de ces très anciennes versions de CUDA, assurez-vous d'utiliser -deviceemu lors de la compilation avec nvcc.

4voto

Sean Points 424

Soyez prudent lorsque vous êtes à la programmation à l'aide de -deviceemu comme il y a des opérations qui nvcc acceptera alors qu'en mode d'émulation, mais pas lorsqu'ils sont effectivement en cours d'exécution sur un GPU. C'est le plus souvent trouvé avec le dispositif-interaction hôte.

Et comme vous l'avez mentionné, se préparer pour une certaine lenteur d'exécution.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X