web-dev-qa-db-fra.com

CUDA version X se plaint de ne pas supporter la version Y de gcc - que faire?

La question concerne une combinaison spécifique de versions mais est pertinente plus généralement.

Je viens de passer de Kubuntu 12.04 à 14.04. Maintenant, quand je veux compiler le code CUDA (avec CUDA 6.5), je reçois:

#error -- unsupported GNU version! gcc 4.9 and up are not supported!

J'ai installé gcc-4.8 (et 4.7) et essayé d'utiliser la solution de liens symboliques dans/usr/local/cuda/bin suggérée ici:

CUDA incompatible avec ma version gcc

mais ça ne marche pas. Que devrais-je faire?

13
einpoklum

Cette solution concerne plusieurs combinaisons de versions CUDA et GCC.


Vous pouvez indiquer à la variable nvcc de CUDA d'utiliser une version spécifique de gcc. Supposons donc que vous souhaitiez utiliser gcc 4.7 avec CUDA 6. Vous exécutez:

Sudo apt-get install gcc-4.7 g++-4.7

puis ajoutez le commutateur suivant à votre ligne de commande nvcc:

nvcc --compiler-bindir /usr/bin/gcc-4.7  # rest of the command line here

Si vous construisez avec CMake, ajoutez un paramètre approprié avant de rechercher CUDA dans votre CMakeLists.txt, par exemple:

set(CUDA_Host_COMPILER /usr/bin/gcc-4.7)  # -> ADD THIS LINE <-
find_package(CUDA)

En outre, il semble que Clang puisse également compiler CUDA, cela vaut peut-être la peine d’être expérimenté (bien que vous deviez le construire correctement).

Remarque: Certaines distributions Linux (ou autres systèmes d'exploitation) ne disposent pas de packages pour plusieurs versions de gcc (dans la même version de la distribution de système d'exploitation). Je vous déconseille d'essayer d'installer un paquet à partir d'une autre version de la distribution d'une version plus ancienne, et envisagez plutôt de construire gcc. Ce n'est pas tout à fait trivial mais c'est tout à fait faisable - et bien sûr, c'est votre seule option si vous n'avez pas d'accès root à votre machine.

19
einpoklum

Revenez à une configuration prise en charge. Ils sont répertoriés dans le document de démarrage de toute distribution CUDA récente. 

Pour votre configuration particulière que vous avez listée, vous aurez peut-être plus de chance avec CUDA 7 RC, qui est maintenant disponible pour les développeurs enregistrés.

2
Robert Crovella

Très souvent, vous constaterez que CUDA a eu de nouvelles versions au moment où vous rencontrez ce problème. Par exemple, la formulation initiale de la question portait sur CUDA 6 et GCC 4.9; CUDA 7 a soutenu GCC 4.9. CUDA 8 prend en charge GCC 5.x. Etc.

1
einpoklum

J'ai eu un problème similaire avec CUDA Toolkit 7.5 et gcc 5.2.1.

J'ai modifié le fichier Host_config.h dans /usr/local/cuda/include/:

Supprimez simplement les lignes où il vérifie la version de gcc. Cela a résolu mon problème.

Les crédits vont à Darren Garvey ( https://groups.google.com/forum/#!topic/torch7/WaNmWZqMnzw )

1
Conchylicultor