2010-10-17 7 views
4

Comment compiler l'application CUDA est Visual Studio 2010?Comment compiler l'application CUDA est Visual Studio 2010?

Voici mes étapes: 1. Créer un projet vide C++ sans en-têtes précompilés 2. Ajouter main.cpp

int main() 
{ 
return 0; 
} 
  1. Ajouter kernels.cu

    j'ai parlé exemple de projet MAtrixMul et copié ses paramètres étape par étape. il peut être respecté maintenant

#include "cuda.h"

__global__ void VecAdd(float* A, float* B, float* C) 
{ 
int i = threadId.x; 
C[i] = A[i] + B[i]; 
} 
  1. Clic droit sur le projet -> Créer des personnalisations -> Vérifier cuda 3.2
  2. kernels.cu -> propriétés -> Compiler avec CUDA C/C++
  3. ESSAYEZ Compiler: J'obtiens l'erreur:

Error 37 error : This version of the CUDA Toolkit does not support the v100 compiler. Please verify that the Platform Toolset property is set to v90 under the General node of the project properties. C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\BuildCustomizations\CUDA 3.1.targets 157 4 dfdfs

  1. Changer de plateforme ToolSet à V90
  2. compiler un: Je reçois des erreurs:

Error 38 error MSB3721: The command ""C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v3.1\bin\nvcc.exe" -gencode=arch=compute_10,code=\"sm_10,compute_10\" --use-local-env --cl-version 2008 -ccbin "C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v3.1\include" -G0 --keep-dir "Debug\" -maxrregcount=32 --machine 32 --compile -D_NEXUS_DEBUG -g -Xcompiler "/EHsc /nologo /Od /Zi /MDd " -o "Debug\kernels.obj" "E:\Projects!Probing\dfdfs\kernels.cu"" exited with code 2. C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\BuildCustomizations\CUDA 3.1.targets 272 4 dfdfs

Error 37 error : identifier "threadId" is undefined E:\Projects!Probing\dfdfs\kernels.cu 5 1 dfdfs

S'il vous plaît me healp dehors.

Merci, Ilya

+0

vérifier ce lien J'ai suivi ce lien et cela fonctionne, alors essayez-le, http://www.ademiller.com/blogs/tech/2011/05/visual-studio-2010-and-cuda-easier -with-rc2/ –

Répondre

5

Oui je l'ai fait, et cela fonctionne.

  1. Créer C++ projet

  2. Project (clic droit) -> construire la personnalisation Cochez la case "compilateur Cuda 3.2" *

  3. Ajouter cudart.lib à Propriétés-> linker->> dépendances supplémentaires entrées-

  4. Ajouter main.cu -> propriétés du type d'objet = CUDA C/C++ *

  5. Project -> propriétés -> Propriétés de configuration -> Général -> jeu d'outils V90 **

*) apparaît après avoir installé Nvidia Parallel Nsight. Soyez prudent, vous avez besoin de pilotes spéciaux pour cela, plus sur la page d'accueil de NSight)

**) vous devez installer visual C++ 2008 express.

Quoi qu'il en soit, le projet d'exemple devrait toujours être disponible à my nvidia forum post. Le problème dont je me plains ici concerne uniquement les conducteurs dépassés.

1

J'ai trouvé this post sur les forums de cuda chez nVidia. Un des modérateurs dit (Nov 09: Nous ne supportons pas encore VS2010). Cela peut ne plus être le cas, mais votre message d'erreur indique que la version de la boîte à outils CUDA que vous utilisez ne prend pas en charge le compilateur V100. Cela signifie que vous devrez peut-être mettre à niveau votre boîte à outils CUDA.

Si vous avez la dernière version, vérifiez et voyez si la boîte à outils CUDA prend en charge VS2010 pour le moment. V90 est une façon de faire référence au compilateur fourni avec VS2008, donc je suppose que VS2010 est le compilateur v100.

Peut-être que vous avez un abonnement MSDN et pouvez revenir à VS2008.

This SO post semble également suggérer que CUDA ne prend pas en charge le compilateur VS2010

+0

vous avez tort, il est maintenant supporté –

+0

Je n'ai pas dit qu'il n'était pas supporté, j'ai dit que j'avais trouvé un certain nombre de vieux messages qui disaient que ce n'était pas _yet_ supporté. –

+2

ils sont sur rc. J'ai résolu le problème (voir ma réponse). –

0

Visual Studio 2010 est certainement soutenu (encore!) - assurez-vous d'utiliser le nSight récemment publié 1.5 (et non la version bêta) . Je n'ai pas mis à jour la question que j'ai posée, mais @portland, vous avez suivi toutes les étapes correctes. Vous avez simplement une faute de frappe dans votre noyau.

Vous avez référencé threadId.x au lieu de threadIdx.x - notez le x.

+0

J'ai corrigé ça, et je m'étais encore excité avec le code 2. , je me suis référé à l'exemple de projet MAtrixMul et copié ses paramètres étape par étape. ça a marché! –

+0

Ce chemin: '" E: \ Projects! Probing \ dfdfs \ kernels.cu "' semble suspect avec un point d'exclamation dedans. –

+0

@M. Tibbits, merci, mais ce n'est pas grave. J'ai compris quel est le problème. Je ne peux pas fermer la discussion maintenant. –

0

Je me suis référé à l'exemple de projet MAtrixMul et ai copié ses réglages étape par étape.il peut être respecté maintenant, mais ne traite aucun calcul. Le problème est décrit here at SO in details

Vous pouvez voir mon projet avec tout ce qu'il a besoin de my post at nvidia forums (2,7 kb)

Merci, Ilya