web-dev-qa-db-fra.com

Erreur non prise en charge par CUDA 9 avec Visual Studio 2017

J'ai récemment mis à jour mon VS 2017 et maintenant je ne peux même pas construire un projet CUDA par défaut (celui avec l'ajout de vecteur).

Je soupçonne que cela est dû à l'erreur suivante:

Severity    Code    Description Project File    Line    Suppression State
Error   C1189   #error:  -- unsupported Microsoft Visual Studio version! 
 Only the versions 2012, 2013, 2015 and 2017 are supported! ver2    
c:\program files\nvidia gpu computing 
toolkit\cuda\v9.0\include\crt\Host_config.h 133 

Les autres erreurs ne sont pas pertinentes et disparaîtront une fois que je corrigerai celle-ci. Notez que je suis capable de construire et d'exécuter simpleCUFFT à partir d'échantillons CUDA.

Avant la mise à jour, j'ai pu créer le projet CUDA par défaut, mais je n'ai pas pu créer le projet exemple CUDA. J'ai mis à jour mon VS2017 à l'aide du programme d'installation VS et installé le SDK CUDA 10.0.15063.0. Ci-joint la capture d'écran screenshot avec les composants installés.

Veuillez me faire savoir si des informations supplémentaires sont nécessaires. Je connais le sujet suivant et puisque j'utilise la dernière boîte à outils CUDA, je n'ai pas besoin d'apporter de modifications dans Host_config.h.

Merci, Mikhail

Edit: Ma version VS (telle qu'affichée dans l'installateur VS) est 15.5.0 Ma version nvcc est la version 9.0, V9.0.176

Edit2: J'ai essayé de changer la ligne 133 de Host_config.h en:

  #if _MSC_VER < 1600 || _MSC_VER > 1912

Cette erreur n'apparaît plus, cependant, un tas d'erreurs "expression doit avoir une valeur constante" apparaissent dans le fichier type_trails. Je n'ai aucune idée de comment y remédier.

11
Mikhail Genkin

Après une période douloureuse, j'ai pu résoudre le problème. Voici la réponse pour ceux qui ont un problème similaire:

1) Assurez-vous que vous disposez du jeu d'outils VC++ 2015.3 v140 (peut être installé à partir du programme d'installation Web ou Visual Studio)

2) Dans les propriétés du projet (général) -> Ensemble d'outils de plate-forme, choisissez Visual Studio 2015 (v140).

Edit (21/05/2018): Je viens de mettre à jour Visual studio 2017 vers la dernière version 15.7.1. À partir de maintenant, je peux choisir le jeu d'outils VS 2017 v141 et cela fonctionne très bien.

19
Mikhail Genkin

J'utilise CUDA 9.2 et VS 2017 (version 15.7.5). Modifier simplement Host_config.h (généralement sous C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9. *\Include\crt, peut être trouvé dans la sortie VS de build) travaille pour moi.

Changer la ligne

#if _MSC_VER < 1600 || _MSC_VER > 1913

à

#if _MSC_VER < 1600 || _MSC_VER > 1914

ou quelque chose de similaire, basé sur la version de cl.exe

2
Chao

Dans la mise à jour VS 15.4.3, Microsoft a mis à jour le numéro de version de son compilateur CL vers 14.12 ( https://www.visualstudio.com/ru-ru/news/releasenotes/vs2017-relnotes#15.4.4 )

C'est pourquoi CUDA 9.0.176 refuse de compiler. Aujourd'hui, NVIDIA a mis à jour CUDA vers 9.1.85, il suffit donc de mettre à jour simplement CUDA vers 9.1 https://developer.nvidia.com/cuda-downloads

2
porchini

Pour tous ceux qui lisent cette question, mettez à jour dans CUDA 10. Cela fonctionne dès la sortie de la boîte. Pas besoin d'installer les ensembles d'outils du compilateur précédents et similaires mentionnés dans d'autres réponses. Téléchargez simplement CUDA 10, installez-le et désinstallez les versions précédentes de CUDA. Faites ensuite un nouveau projet CUDA 10 et placez votre code. Ça va marcher.

Si vous obtenez des erreurs, n'oubliez pas de définir compute_xx,sm_xx de manière appropriée, dans Propriétés du projet -> CUDA C/C++ -> Périphérique -> Génération de code.

1
Nikos