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

question directe: Comment puis-je créer un simple projet hello world CUDA dans visual studio 2010?

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

j'ai migré pour gagner 7, et VS 2010 parce que je veux vraiment essayer nSight. J'ai nSight 1.5 est installé. Mais c'est là où je suis totalement perdu. Si je procède comme avant, la nvcc indique qu'elle ne supporte que msvc 8.0 et 9.0. Mais le site Web indique clairement qu'il soutient VS 2010.

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

mais je devine qu'au moins une partie de mes problèmes proviennent de la des spécifications d'outils de construction personnalisées maison. Plusieurs sites web parler de l'ajout d'un *.les règles s'appliquent à la compilation, mais j'ai compris que cela ne s'applique qu'à VS 2008. Sous "Build Customizations", je vois CUDA 3.1 et 3.2, mais quand j'ajoute des noyaux au projet, ils ne sont pas construits. un autre site web proclame que la clé est trois fichiers: Cuda.props Cuda.xml Cuda.cible , mais ça ne dit pas Comment ou où ajouter ces fichiers -- ou plutôt je parie que je ne comprends pas les notes référencées dans le site web.

So est-ce que quelqu'un sait comment créer un projet simple dans VS 2010 qui construit un noyau CUDA -- en utilisant soit la configuration Nsight 1.5, soit NvCudaRuntimeApi.v3.2.règles fichier quels navires avec le CUDA 3.2 RC?

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

23
demandé sur Community 2010-09-23 17:25:38

3 réponses

CUDA TOOLKIT 4.0 and later

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 n'importe quel fichier .les fichiers cu dans votre projet dans votre application. Si vous avez choisi de ne pas installer les 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éer un nouveau projet en utilisant les assistants standards MS (par exemple un projet de console vide)
  • implémentez votre code hôte (série) dans .c ou .fichiers cpp
  • ajouter la personnalisation de la construction NVIDIA (clic droit sur le projet, personnalisation de la construction , cochez la case CUDA correspondante)
  • voir note 1 si L'on utilise CUDA 4.0
  • implémentez vos enveloppes et noyaux.cu files
  • si vous avez ajouté des fichiers .cu avant les personnalisations de construction, alors vous aurez besoin de définir le type des fichiers .cu à CUDA C/C++ (clic droit sur le fichier, propriétés , définir Type D'article )
  • ajouter la bibliothèque d'exécution CUDA (clic droit sur le projet et choisir propriétés , puis dans Linker - > Input ajouter cudart.lib au supplémentaire Dépendances )
  • alors construisez votre projet et le .les fichiers cu seront compilés.obj et ajouté au lien automatiquement

incidemment, Je préconiserais éviter cutil si possible, au lieu de rouler votre propre vérification. Cutil n'est pas supporté par NVIDIA, il est juste utilisé pour essayer de garder les exemples dans le SDK concentré sur le programme réel et la conception de l'algorithme et éviter de répéter les mêmes choses dans chaque exemple (par exemple, parsing en ligne de commande). Si vous écrivez les vôtres, alors vous aurez un meilleur contrôle et vous saurez ce qui se passe. Par exemple, le cutilSafeCall wrapper appelle exit() si la fonction échoue - une application réelle (par opposition à un échantillon) devrait probablement gérer la défaillance plus élégamment!


NOTE

  1. pour CUDA 4.0 seulement vous peut devoir appliquer cette correction 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

45
répondu Tom 2011-10-07 11:40:48

cette réponse s'applique à CUDA 3.2, à partir de 4.0 CUDA supporte le compilateur VC 10 directement, voir autres réponses pour plus d'informations

vous avez besoin soit VS 2008 ou le SDK de Windows 6.1 installé. C'est parce que NSight 1.5 RC ou le CUDA 3.2 SDK utilisent le compilateur VC 9 sous le capot. J'ai obtenu ce travail avec succès avec 2008 installé et on m'a dit qu'il devrait fonctionner avec le SDK mais n'ont pas essayé.

avec NSight 1.5 et / ou le SDK CUDA 3.2 vous ne devriez pas avoir besoin de muck avec des règles de construction personnalisées. J'y ai été et c'est douloureux. Avec les dernières constructions tout ce qui disparaît:

  • créez votre projet VC++.
  • ajouter A. CU file.
  • , Sélectionnez le fichier de projet dans l'Explorateur de solutions.
  • Ouvrir Le Projet | Construire Des Personnalisations...
  • cocher la Case "CUDA 3.2 (.cible, .accessoires)" personnalisation.
  • sélectionner a. Le fichier CU dans votre projet et appuyez sur Alt-Enter pour montrer ses propriétés.
  • assurez-vous que son type D'article est défini à" CUDA C/C++ "

Il faut juste construire. Dites-moi si cela vous aide et si vous rencontrez des problèmes, car c'est de mémoire.

la bonne nouvelle que CUDA travaille avec VS 2010 est devenue beaucoup plus facile.

Ade

BTW: je vais mettre à jour mon billet de blog.

7
répondu Ade Miller 2011-10-10 08:54:27

un autre bon tutoriel ici:

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

si vous avez une erreur à propos de ' < 'Notez cette étape (d'une réponse précédente):

si vous avez ajouté .les fichiers cu avant les personnalisations de construction, alors vous aurez besoin de définir le type de la .cu files to CUDA C / C++ (right-click on the file, Properties, set Item Type)

mais si vous suivez leurs pas, ça devrait marcher!

7
répondu biaspoint 2012-01-12 03:45:15