Pourquoi nvcc ne peut-il pas trouver mon installation Visual C ++?

J’utilise Windows 7 Pro x64 sur un Core i5 avec une NVIDIA 3100m, compatible avec CUDA.

J’ai essayé d’installer les kits d’outils CUDA 32 bits et 64 bits de NVIDIA. Malheureusement, avec l’un ou l’autre, je ne peux rien comstackr. nvcc dit “impossible de trouver une version cl prise en charge. Seuls MSVC 8.0 et MSVC 9.0 sont pris en charge”.

J’ai les compilateurs x86 et x86-64 installés via le SDK Windows 7 (version du compilateur 15.00.30729.01 pour les deux arcs). Les deux compilateurs fonctionnent correctement. J’ai construit et testé du code C et C ++ en les utilisant. J’ai essayé d’exécuter nvcc à partir de shells de commandes configurés à la fois pour la compilation 32 bits et 64 bits, et en utilisant l’option de ligne de commande -ccbin de nvcc pour la pointer vers le répertoire d’installation de Visual C ++.

Quelle est la bonne façon de gérer cette configuration? Y a-t-il un moyen de rendre nvcc plus bavard sur ce qui se passe? Le drapeau -v n’est pas terrible utile. Idéalement, une façon de le faire montre ce qu’il trouve par rapport à ce qu’il attend de trouver. Cela fonctionnera-t-il mieux si j’installe Visual C ++ Express à la place? Ou est-ce que seule une version commerciale de VC ++ est prise en charge pour une utilisation avec CUDA?

Il semble que vous n’ayez pas installé Visual Studio 2005 ou 2008, mais votre numéro de version du compilateur indique qu’il s’agit de MSVC 9.0. La manière la plus simple de tout faire fonctionner est d’installer Visual Studiso et je crois qu’Express fonctionnera.

Vous pouvez également consulter ce sujet sur le forum Nvidia.

Inclure cette ligne

comstackr-bindir = C: \ Program Files (x86) \ Microsoft Visual Studio 9.0 \ VC \ bin

dans

C: \ CUDA \ bin64 \ nvcc.profile

Avec CUDA v6.0, il est toujours nécessaire d’avoir une version plus ancienne de Visual Studio (j’utilise 2010), mais les autres solutions ne fonctionnaient pas pour moi.

Pour que cela fonctionne, ajoutez ce qui suit à votre nvcc.profile (C: / Program Files / NVIDIA GPU Computing Toolkit / CUDA / v6.0 / bin / nvcc.profile):

 CUDA_NVCC_FLAGS += --comstackr-bindir = "-IE:/PROGRA~2/MICROS~2.0/VC/bin" 

J’ai également installé VS 2013 et j’avais besoin de cet argument pour empêcher nvcc de trouver la nouvelle version (malheureusement incompatible) de cl.exe

J’essayais de faire fonctionner CUDA 6.5 avec VS 2010 express. Après la désinstallation de VS 2010 express, en installant Windows SDK 7.1 et en réinstallant VS 2010 express, définissez Windows SDK 7.1 comme un ensemble d’outils, etc. Rien n’a fonctionné. En fin de compte, ce qui a fonctionné pour moi a été d’append ce qui suit à CUDA_NVCC_FLAGS:

 --cl-version 2010 

Vous devrez peut-être aussi append:

 --machine 32 

J’ai d’abord essayé les drapeaux appropriés dans la ligne de commande.

Ce lien a été très utile