web-dev-qa-db-fra.com

Comment démarrer une application CUDA dans Visual Studio 2010?

Question directe: Comment puis-je créer un simple projet CUDA Hello World dans Visual Studio 2010?

Contexte: J'ai écrit des noyaux CUDA. Je suis intimement familier avec les fichiers .vcproj de Visual Studio 2005 - modifiés plusieurs à la main. Dans VS 2005, si je veux construire un noyau CUDA, j'ajoute une règle de construction personnalisée, puis je définis explicitement l'appel nvcc pour construire les fichiers.

J'ai migré vers Win 7 et VS 2010 parce que je veux vraiment essayer nSight. J'ai installé nSight 1.5. Mais c'est là que je suis totalement perdu. Si je continue comme avant, nvcc rapporte qu'il ne prend en charge que msvc 8.0 et 9.0. Mais le site Web indique clairement qu'il prend en charge VS 2010.

J'ai lu ailleurs que j'avais besoin d'avoir VS 2008 (msvc 9.0) également installé - mon Word. Le faire maintenant.

Mais je suppose qu'au moins une partie de mes problèmes provient des spécifications de l'outil de construction personnalisé. Plusieurssites Web parler de l'ajout d'un fichier * .rules à la construction, mais j'ai compris que cela ne s'applique qu'à VS 2008. Sous "Personnaliser la construction", je vois CUDA 3.1 et 3.2, mais lorsque j'ajoute des noyaux au projet, ils ne sont pas construits. n autre site Web proclame que la clé est de trois fichiers: Cuda.props Cuda.xml Cuda.targets , mais ce n'est pas le cas dites comment ou où ajouter ces fichiers - ou plutôt je parie que je ne comprends tout simplement pas les notes référencées sur le site.

Donc quelqu'un sait-il comment créer un projet simple dans VS 2010 qui construit un noyau CUDA - en utilisant soit la configuration nSight 1.5 ou le NvCudaRuntimeApi.v3. 2. fichier de règles livré avec le CUDA 3.2 RC?

Merci d'avance! J'offrirais une prime, mais je n'ai que 65 points au total.

23
M. Tibbits

CUDA TOOLKIT 4.0 et versions ultérieures

Le fichier de personnalisation de construction (installé dans le répertoire Program Files\MSBuild\Microsoft.Cpp\v4.0\BuildCustomizations) "Enseigne" à Visual Studio comment compiler et lier tous les fichiers .cu de votre projet dans votre application. Si vous avez choisi d'ignorer l'installation des personnalisations, ou si vous avez installé VS2010 après CUDA, vous pouvez les ajouter plus tard en suivant les instructions dans Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.0\extras\visual_studio_integration.

  • Créez un nouveau projet à l'aide des assistants MS standard (par exemple, un projet de console vide)
  • Implémentez votre code hôte (série) dans des fichiers .c ou .cpp
  • Ajoutez la personnalisation de la construction NVIDIA (clic droit sur le projet, Construisez les personnalisations, cochez la case CUDA appropriée)
  • Voir note 1 si vous utilisez CUDA 4.0
  • Implémentez vos wrappers et noyaux dans des fichiers .cu
  • Si vous avez ajouté des fichiers .cu Avant les personnalisations de construction, vous devrez définir le type des fichiers .cu Sur CUDA C/C++ (Cliquez avec le bouton droit sur le fichier, Propriétés, définir Type d'élément)
  • Ajoutez la bibliothèque d'exécution CUDA (faites un clic droit sur le projet et choisissez Propriétés, puis dans Linker -> Input ajoutez cudart.lib Au Dépendances supplémentaires)
  • Ensuite, créez votre projet et les fichiers .cu seront compilés en .obj et ajoutés au lien automatiquement

Soit dit en passant, je recommanderais d'éviter le cutil si possible, à la place lancez votre propre vérification. Cutil n'est pas pris en charge par NVIDIA, il est juste utilisé pour essayer de garder les exemples du SDK axés sur la conception réelle du programme et de l'algorithme et éviter de répéter les mêmes choses dans chaque exemple (par exemple, l'analyse de la ligne de commande). Si vous écrivez le vôtre, vous aurez un bien meilleur contrôle et vous saurez ce qui se passe. Par exemple, le wrapper cutilSafeCall appelle exit() si la fonction échoue - une application réelle (par opposition à un exemple) devrait probablement gérer l'échec de manière plus élégante!


[~ # ~] note [~ # ~]

  1. Pour CUDA 4.0 uniquement, vous devrez peut-être appliquer ce correctif aux personnalisations de construction. Ce correctif corrige le message suivant:

Le résultat "" de l'évaluation de la valeur "$ (CudaBuildTasksPath)" de l'attribut "AssemblyFile" dans l'élément n'est pas valide

44
Tom

Un autre bon tutoriel ici:

http://www.stevenmarkford.com/installing-nvidia-cuda-with-visual-studio-2010/

si vous obtenez une erreur sur "<", notez cette étape (à partir d'une réponse précédente):

Si vous avez ajouté des fichiers .cu avant les personnalisations de construction, vous devrez alors définir le type des fichiers .cu sur CUDA C/C++ (cliquez avec le bouton droit sur le fichier, Propriétés, définissez Type d'élément)

Mais si vous suivez leurs étapes, cela devrait fonctionner!

7
biaspoint

Cette réponse s'applique à CUDA 3.2, à partir de 4.0 CUDA prend en charge le VC 10 compilateur directement, voir les autres réponses pour plus d'informations

Vous devez installer VS 2008 ou le SDK Windows 6.1. C'est parce que NSight 1.5 RC ou le SDK CUDA 3.2 utilisent le compilateur VC 9 sous le capot. J'ai réussi à le faire avec 2008 installé et on m'a dit qu'il devrait fonctionner avec le SDK mais pas '' t essayé.

Avec NSight 1.5 et/ou le SDK CUDA 3.2, vous ne devriez pas avoir à vous soucier des règles de construction personnalisées. J'y suis allé et c'est douloureux. Avec les dernières versions, tout ce qui s'en va:

  • Créez votre projet VC++.
  • Ajoutez-y un fichier .CU.
  • Sélectionnez le fichier de projet dans l'Explorateur de solutions.
  • Projet ouvert | Créer des personnalisations ...
  • Vérifiez la personnalisation "CUDA 3.2 (.targets, .props)".
  • Sélectionnez un fichier .CU dans votre projet et appuyez sur Alt-Entrée pour afficher ses propriétés.
  • Assurez-vous que son type d'élément est défini sur "CUDA C/C++"

Il faut juste construire. Faites-moi savoir si cela aide et si vous rencontrez des problèmes car cela vient de la mémoire.

La bonne nouvelle, c'est que CUDA fonctionne avec VS 2010 est devenu beaucoup plus facile.

Ade

BTW: Je mettrai à jour mon article de blog.

7
Ade Miller