CUDA incompatible avec ma version gcc

102

J'ai des difficultés à compiler certains des exemples fournis avec CUDA SDK. J'ai installé le pilote développeur (version 270.41.19) et la boîte à outils CUDA, puis enfin le SDK (tous deux la version 4.0.17).

Au départ, il n'a pas du tout compilé, donnant:

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

J'ai trouvé la ligne responsable dans 81: /usr/local/cuda/include/host_config.h et l'ai changée en:

//#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 4)
#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 6)

à partir de ce moment, je n'ai que quelques exemples à compiler, cela s'arrête avec:

In file included from /usr/include/c++/4.6/x86_64-linux-gnu/bits/gthr.h:162:0,
             from /usr/include/c++/4.6/ext/atomicity.h:34,
             from /usr/include/c++/4.6/bits/ios_base.h:41,
             from /usr/include/c++/4.6/ios:43,
             from /usr/include/c++/4.6/ostream:40,
             from /usr/include/c++/4.6/iterator:64,
             from /usr/local/cuda/include/thrust/iterator/iterator_categories.h:38,
             from /usr/local/cuda/include/thrust/device_ptr.h:26,
             from /usr/local/cuda/include/thrust/device_malloc_allocator.h:27,
             from /usr/local/cuda/include/thrust/device_vector.h:26,
             from lineOfSight.cu:37:
/usr/include/c++/4.6/x86_64-linux-gnu/bits/gthr-default.h:251:1: error: pasting         "__gthrw_" and "/* Android's C library does not provide pthread_cancel, check for
`pthread_create' instead.  */" does not give a valid preprocessing token
make[1]: *** [obj/x86_64/release/lineOfSight.cu.o] Error 1

Comme certains des exemples sont compilés, je pense que ce n'est pas un problème de pilote, mais plutôt qu'il doit avoir quelque chose à voir avec une version gcc non prise en charge. Le déclassement n'est pas une option car gcc4.6 a un système entier en tant que dépendance à ce stade ...

fbielejec
la source
4
Pour les futurs lecteurs: assurez-vous d'utiliser la dernière version de CUDA (sauf si vous devez absolument en utiliser une ancienne). NVIDIA augmente la version maximale du compilateur prise en charge avec presque toutes les versions.
einpoklum
Cela peut être utile pour ceux qui ont CUDA 10 et obtiennent l'erreur d'une version de chaîne de compilateur gnu trop élevée: stackoverflow.com/questions/53344283/...
Douglas Daseeco

Réponses:

114

Comme déjà souligné, nvcc dépend de gcc 4.4. Il est possible de configurer nvcc pour utiliser la version correcte de gcc sans passer les paramètres du compilateur en ajoutant des liens logiciels vers le répertoire bin créé avec l'installation nvcc.

Le répertoire binaire cuda par défaut (le répertoire d'installation par défaut) est / usr / local / cuda / bin, l'ajout d'un lien logiciel vers la bonne version de gcc à partir de ce répertoire est suffisant:

sudo ln -s /usr/bin/gcc-4.4 /usr/local/cuda/bin/gcc

Gearoid Murphy
la source
2
La commande "update-alternatives" peut également aider, en particulier lors de l'installation de CUDA 5.0
phoad
4
J'ai également dû ajouter un lien symbolique vers la version correcte de g ++.
Auron le
17
J'ai également dû créer un lien vers g ++. Dans le cas contraire, simples nvccinvocations fonctionnent, mais disent, en appliquant makeaux échantillons CUDA, apporte bientôt invocations commençant par: nvcc -ccbin g++. Pour moi, j'ai utilisé sudo ln -s /usr/bin/gcc-4.9 /usr/local/cuda/bin/gccet sudo ln -s /usr/bin/g++-4.9 /usr/local/cuda/bin/g++.
user2023370
8
Si vous compilez avec, cmake .. && makevous pouvez essayer cmake -D CUDA_NVCC_FLAGS="-ccbin gcc-4.4" .. && make . Si vous utilisez plain, Makefilevous pouvez essayer make CXX=g++-4.4 CC=gcc-4.4 .
patryk.beza
1
quand j'essaye cette commande, elle dit "le fichier existe" et n'effectue pas le lien. De l'aide ?
Sentient07
59

gcc 4.5 et 4.6 ne sont pas pris en charge avec CUDA - le code ne se compilera pas et le reste de la chaîne d'outils, y compris cuda-gdb, ne fonctionnera pas correctement. Vous ne pouvez pas les utiliser et la restriction n'est pas négociable.

Votre seule solution est d'installer une version gcc 4.4 comme second compilateur (la plupart des distributions le permettent). Il existe une option pour nvcc --compiler-bindirqui peut être utilisée pour pointer vers un autre compilateur. Créez un répertoire local, puis créez des liens symboliques vers les exécutables de la version gcc prise en charge. Passez ce répertoire local à nvcc via l' --compiler-bindiroption, et vous devriez être en mesure de compiler le code CUDA sans affecter le reste de votre système.


MODIFIER :

Notez que cette question et cette réponse concernent CUDA 4.

Depuis sa rédaction, NVIDIA a continué d'étendre la prise en charge des versions ultérieures de gcc dans la nouvelle version de la chaîne d'outils CUDA

  • Depuis la version CUDA 4.1, gcc 4.5 est désormais pris en charge. gcc 4.6 et 4.7 ne sont pas pris en charge.
  • Depuis la version CUDA 5.0, gcc 4.6 est désormais pris en charge. gcc 4.7 n'est pas pris en charge.
  • Depuis la version CUDA 6.0, gcc 4.7 est désormais pris en charge.
  • À partir de la version CUDA 7.0, gcc 4.8 est entièrement pris en charge, avec un support 4.9 sur Ubuntu 14.04 et Fedora 21.
  • À partir de la version CUDA 7.5, gcc 4.8 est entièrement pris en charge, avec un support 4.9 sur Ubuntu 14.04 et Fedora 21.
  • À partir de la version CUDA 8, gcc 5.3 est entièrement pris en charge sur Ubuntu 16.06 et Fedora 23.
  • À partir de la version CUDA 9, gcc 6 est entièrement pris en charge sur Ubuntu 16.04, Ubuntu 17.04 et Fedora 25.
  • La version CUDA 9.2 ajoute la prise en charge de gcc 7
  • La version CUDA 10.1 ajoute la prise en charge de gcc 8

Il n'y a actuellement (à partir de CUDA 10.1) aucun support gcc 9 dans CUDA.

Notez que NVIDIA a récemment ajouté un tableau très utile ici qui contient le compilateur et la matrice du système d'exploitation pris en charge pour la version actuelle de CUDA.

talonmies
la source
Une idée de ce qui est utilisé pour CUDA 7.5?
GuySoft
2
J'utilise CUDA 7.5 avec gcc 4.9.3sur SLES 11 SP3 sans aucun problème.
Peter VARGA
3
Quoi? Comment un code est-il censé ne pas se compiler avec des versions supérieures (sauf pour les limitations codées en dur bien sûr) ? La seule chose à laquelle je peux penser est que, comme certaines versions, C11 / C ++ 11 sont activées par défaut, mais si cela pose un problème avec un ancien code, cela pourrait être facilement contourné avec un commutateur de ligne de commande.
Hi-Angel
2
Appuyé @ Salut-Angel. #talonmies que signifie même "la restriction n'est pas négociable"? Les nouvelles versions de gcc et gdb supportent les anciens en-têtes binaires pour les fichiers objets, comme ils l'ont "toujours" (en quelque sorte) fait, il n'y a aucune raison pour que les nouvelles versions de gcc ne fonctionnent pas. Mise à part les solutions de liaison symétriques, tout autre problème est probablement la configuration de l'indicateur de version du préprocesseur ac, et si le test de version gcc est "codé en dur" dans un en-tête cuda dans le cadre d'une définition ou d'une macro, il est assez facile à corriger. L'exception pourrait être le compilateur cuda gpu lui-même.
Beracah
1
Ce n'est pas une question de compatibilité binaire. La chaîne d'outils CUDA exige que nvcc et l'analyseur frontal GPU puissent intercepter et surcharger divers en-têtes internes du compilateur et de la libc / libc ++ pour compiler le code hôte et périphérique et les intégrer ensemble. L'analyseur CUDA doit être capable d'analyser correctement les en-têtes internes de gcc, entre autres. Les versions non testées de gcc peuvent échouer et échouent, indépendamment des protections de préprocesseur intégrées dans les en-têtes NVIDIA. Vous pouvez soit me croire (en tant que personne qui pirate la chaîne d'outils CUDA depuis près de 10 ans), ou non. À ce stade, je n'ai pas vraiment
talonmies
57
  1. Vérifiez la version GCC maximale prise en charge pour votre version CUDA:

     | CUDA version | max supported GCC version |
     |--------------|---------------------------|
     |      11      |             9             |
     |  10.1, 10.2  |             8             |
     |   9.2, 10.0  |             7             |
     |   9.0, 9.1   |             6             |
     |       8      |            5.3            |
     |       7      |            4.9            |
     |    5.5, 6    |            4.8            |
     |    4.2, 5    |            4.6            |
     |      4.1     |            4.5            |
     |      4.0     |            4.4            |
  2. Définissez une variable d'environnement pour cette version de GCC. Par exemple, pour CUDA 10.2:

     MAX_GCC_VERSION=8
  3. Assurez-vous que cette version est installée:

     sudo apt install gcc-$MAX_GCC_VERSION g++-$MAX_GCC_VERSION
  4. Ajoutez des liens symboliques dans les dossiers CUDA:

     sudo ln -s /usr/bin/gcc-$MAX_GCC_VERSION /usr/local/cuda/bin/gcc 
     sudo ln -s /usr/bin/g++-$MAX_GCC_VERSION /usr/local/cuda/bin/g++

    (ou substitut /usr/local/cuda par votre chemin d'installation CUDA, s'il n'y est pas)

Consultez ce gist GitHub pour plus d'informations sur le tableau de compatibilité CUDA-GCC .

bryant1410
la source
3
Sauvé ma vie cauchemar de configuration lol !!!! Merci. J'ai appliqué cela à cuda 10 avec des liens système gcc et g ++ 7. Pour tous ceux qui rencontrent cela.
thekevshow
Dois-je créer moi-même les dossiers /usr/bin/gccet /usr/bin/g++ou /usr/local/cuda/bin/gcc?
Josh Desmond
@JoshDesmond le lien symbolique pour les fichiers que vous avez mentionnés est créé à l'étape 4.
bryant1410
@ bryant1410 Lorsque j'ai exécuté les commandes à l'étape quatre, je me souviens avoir reçu une erreur du type "Erreur: le répertoire / usr / local / cuda / bin / gcc n'existe pas, abandon," ou quelque chose de similaire. Je me rends compte maintenant, (après avoir lu le détail de la question), que votre réponse suppose une étape 0 mentionnée par OP: "J'ai installé le toolkit CUDA, puis enfin le SDK". J'essayais de faire l'installation avec l' cuda_10.2.89_440.33.01_linux.runassistant de NVIDIA , qui a tout simplement échoué à l'exécution avec une plainte concernant la compatibilité gcc. J'ai fini par décider de désinstaller gcc 9: P
Josh Desmond
1
Si vous avez installé NVCC avec [ana | mini] conda (package conda-forge cudatoolkit-dev), vous devez créer un lien à l'intérieur de votre env comme ln -s /usr/bin/gcc-8 /home/user/miniconda3/envs/your_env/bin/gccetln -s /usr/bin/g++-8 /home/user/miniconda3/envs/your_env/bin/g++
Diego Ferri
25

La solution de Gearoid Murphy fonctionne mieux pour moi puisque sur ma distribution (Ubuntu 11.10), gcc-4.4 et gcc-4.6 sont dans le même répertoire, donc --compiler-bindir n'est pas utile. La seule mise en garde est que j'ai également dû installer g ++ - 4.4 et créer un lien symbolique:

sudo ln -s /usr/bin/gcc-4.4 /usr/local/cuda/bin/gcc
sudo ln -s /usr/bin/g++-4.4 /usr/local/cuda/bin/g++
Nicu Stiurca
la source
11

Pour CUDA7.5, ces lignes fonctionnent:

sudo ln -s /usr/bin/gcc-4.9 /usr/local/cuda/bin/gcc 
sudo ln -s /usr/bin/g++-4.9 /usr/local/cuda/bin/g++
neouyghur
la source
9

Découvrez comment utiliser les "alternatives de mise à jour" pour contourner ce problème:

... Si vous installez gcc 4.6, vous pouvez également utiliser la commande update-alternatives pour permettre de basculer facilement entre les versions. Cela peut être configuré avec:

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.6 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.6 
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.7 40 --slave /usr/bin/g++ g++ /usr/bin/g++-4.7 
sudo update-alternatives --config gcc
Akanes
la source
6

Si vous n'utilisez cmakepour moi aucun des hacks d'édition des fichiers et de liaison n'a fonctionné, j'ai donc compilé en utilisant les indicateurs qui spécifient la version gcc / g ++.
cmake -DCMAKE_C_COMPILER=gcc-6 -DCMAKE_CXX_COMPILER=g++-6 ..

A travaillé comme un charme.

Markroxor
la source
haha j'allais essayer de lier votre réponse à l'autre question ici parce que je pensais qu'il fallait la mettre sur ce fil. Bon travail encore! Merci
MikeDoho
On devrait s'abstenir de publier des réponses en double sur SO mais je n'avais pas le choix. :)
markroxor
5

Sur la plupart des distributions, vous avez la possibilité d'installer une autre version de gcc et g ++ à côté d'un compilateur le plus récent comme gcc-4.7. De plus, la plupart des systèmes de construction connaissent les variables d'environnement CCet CXX, qui vous permettent de spécifier respectivement d'autres compilateurs C et C ++. Donc, je suggère quelque chose comme:

CC=gcc-4.4 CXX=g++-4.4 cmake path/to/your/CMakeLists.txt

Pour Makefiles, il devrait y avoir une méthode similaire. Je ne recommande pas de définir des liens symboliques personnalisés dans / usr / local à moins que vous ne sachiez ce que vous faites.

math
la source
3

Cela fonctionne pour fedora 23. Les dépôts de compatibilité gcc seront légèrement différents selon votre version de fedora.

Si vous installez les référentiels suivants:

sudo yum install compat-gcc-34-c++-3.4.6-37.fc23.x86_64 compat-gcc-34-3.4.6-37.fc23.x86_64 

Maintenant, créez les liens souples comme mentionné ci-dessus en supposant que votre dossier bin cuda est dans /usr/local/cuda/

sudo ln -s /usr/bin/gcc-34 /usr/local/cuda/bin/gcc
sudo ln -s /usr/bin/g++-34 /usr/local/cuda/bin/g++

Vous devriez maintenant pouvoir compiler avec nvccsans l'erreur de version gcc.

Chris Chaffin
la source
2

La solution de Gearoid Murphy fonctionne comme un charme. Pour moi, j'avais deux répertoires pour cuda -

/usr/local/cuda 
/usr/local/cuda-5.0

Les liens souples ne devaient être ajoutés qu'au répertoire mentionné ci-dessous -

/usr/local/cuda 

De plus, les liens souples g ++ et gcc étaient requis comme mentionné par SchighSchagh.

arpwal
la source
2

Une autre façon de configurer nvcc pour utiliser une version spécifique de gcc (gcc-4.4, par exemple), est d'éditer nvcc.profile et de modifier PATH pour inclure le chemin vers le gcc que vous voulez utiliser en premier.

Par exemple (gcc-4.4.6 installé dans / opt):

PATH += /opt/gcc-4.4.6/lib/gcc/x86_64-unknown-linux-gnu/4.4.6:/opt/gcc-4.4.6/bin:$(TOP)/open64/bin:$(TOP)/share/cuda/nvvm:$(_HERE_):

L'emplacement de nvcc.profile varie, mais il doit être dans le même répertoire que l' exécutable nvcc lui-même.

C'est un peu un hack, car nvcc.profile n'est pas destiné à la configuration utilisateur selon le manuel nvcc, mais c'était la solution qui fonctionnait le mieux pour moi.

Ewerton
la source
Je suggère de faire cela, mais en pointant le chemin vers un répertoire avec g ++ lié symboliquement à la bonne version de gcc (particulièrement utile si votre distribution fournit une version gcc prise en charge). Par exemple:mkdir /usr/local/bin/cuda-hack && ln -s /usr/bin/g++-5 /usr/local/bin/cuda-hack
Sami Liedes
2

Pour les gens comme moi qui sont confus lors de l'utilisation cmake, le FindCUDA.cmakescript remplace certains éléments de nvcc.profile. Vous pouvez spécifier le nvcccompilateur hôte en définissant CUDA_HOST_COMPILERcomme indiqué sur http://public.kitware.com/Bug/view.php?id=13674 .

Cheshirekow
la source
cmake .. -DCMAKE_INSTALL_PREFIX=/InstallPos_GPU/ -DCMAKE_C_COMPILER="/gcc-8.3.0/bin/gcc" -DCMAKE_CXX_COMPILER="/gcc-8.3.0/bin/g++" -DGMX_GPU=ON -DCUDA_TOOLKIT_ROOT_DIR=/cuda-7.5/ -D NVCCFLAGS=" -ccbin /cuda-7.5/bin/" -DCUDA_HOST_COMPILER=/cuda-7.5/bin/gccJ'ai installé avec succès les gromacs avec support GPU.
pengchy
2

J'ai dû installer les anciennes versions de gcc, g ++.

    sudo apt-get install gcc-4.4
    sudo apt-get install g++-4.4

Vérifiez que gcc-4.4 est dans / usr / bin /, et de même pour g ++ Ensuite, je pourrais utiliser la solution ci-dessus:

    sudo ln -s /usr/bin/gcc-4.4 /opt/cuda/bin/gcc
    sudo ln -s /usr/bin/g++-4.4 /opt/cuda/bin/g++
os voyageant
la source
Lorsque j'essaye cette commande, elle dit "Le fichier existe" et n'effectue pas le lien. De l'aide ?
Sentient07
J'ai peur d'être trop loin d'y penser pour savoir quoi dire. J'espère que d'autres pourront vous aider.
travellingbones
2

Dans $CUDA_HOME/include/host_config.h, trouvez des lignes comme celles-ci (peuvent légèrement varier entre les différentes versions de CUDA):

//...
#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 9)

#error -- unsupported GNU version! gcc versions later than 4.9 are not supported!

#endif [> __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 9) <]
//...

Supprimez-les ou modifiez-les en fonction de votre état.

Notez que cette méthode est potentiellement dangereuse et peut interrompre votre build. Par exemple, gcc 5 utilise C ++ 11 par défaut, mais ce n'est pas le cas pour nvcc à partir de CUDA 7.5. Une solution de contournement consiste à ajouter

--Xcompiler="--std=c++98" pour CUDA <= 6,5

ou

--std=c++11 pour CUDA> = 7,0.

Kh40tiK
la source
où ajoutons-nous l' --std=c++option?
asgs
1

Si vous rencontrez cette erreur, veuillez lire le fichier journal:

$ cat /var/log/cuda-installer.log 
[INFO]: Driver installation detected by command: apt list --installed | grep -e nvidia-driver-[0-9][0-9][0-9] -e nvidia-[0-9][0-9][0-9]
[INFO]: Cleaning up window
[INFO]: Complete
[INFO]: Checking compiler version...
[INFO]: gcc location: /usr/bin/gcc

[INFO]: gcc version: gcc version 9.2.1 20191008 (Ubuntu 9.2.1-9ubuntu2) 

[ERROR]: unsupported compiler version: 9.2.1. Use --override to override this check.

Suivez simplement la suggestion du fichier journal:

sudo sh cuda_<version>_linux.run --override

Travail accompli :)

Je viens d'installer CUDA 10.2 avec gcc 9.2 sur Kubuntu 19.10 en utilisant l' --overrideoption.

Vanessa Deagan
la source
0

Pour compiler les exemples CUDA 8.0 sur Ubuntu 16.10, j'ai fait:

sudo apt-get install gcc-5 g++-5
cd /path/to/NVIDIA_CUDA-8.0_Samples
# Find the path to the library (this should be in NVIDIA's Makefiles)
LIBLOC=`find /usr/lib -name "libnvcuvid.so.*" | head -n1 | perl -pe 's[/usr/lib/(nvidia-\d+)/.*][$1]'`
# Substitute that path into the makefiles for the hard-coded, incorrect one
find . -name "*.mk" | xargs perl -pi -e "s/nvidia-\d+/$LIBLOC/g"
# Make using the supported compiler
HOST_COMPILER=g++-5 make

Cela a l'avantage de ne pas modifier l'ensemble du système ou de créer des liens symboliques uniquement vers les binaires (cela pourrait causer des problèmes de liaison de bibliothèque.)

Éponyme
la source
0

Cela a résolu mon problème:

sudo rm /usr/local/cuda/bin/gcc
sudo rm /usr/local/cuda/bin/g++
sudo apt install gcc-4.4 g++-4.4
sudo ln -s /usr/bin/gcc-4.4 /usr/local/cuda/bin/gcc
sudo ln -s /usr/bin/g++-4.4 /usr/local/cuda/bin/g++
Sherzod
la source
0

Pour CUDA 6.5 (et apparemment 7.0 et 7.5), j'ai créé une version du package gcc 4.8.5 RPM (sous Fedora Core 30) qui permet à cette version de gcc d'être installée avec le GCC actuel de votre système.

Vous pouvez trouver toutes ces informations ici .

ulatekh
la source
0

Dans mon cas, CUDA était déjà installé à partir de la version Ubuntu et cmake le détectait au lieu de la version nouvellement installée à l'aide du gestionnaire de SDK NVidia.

L'Iran dpkg -l | grep cuda et pu voir les deux versions.

Ce que j'ai dû faire, c'est désinstaller l'ancien CUDA (version 9.1 dans mon cas) et laisser la nouvelle version seule (version 10.2). J'ai utilisé la commande purge comme ceci:

sudo apt-get purge libcudart9.1 nvidia-cuda-dev nvidia-cuda-doc \
                                nvidia-cuda-gdb nvidia-cuda-toolkit

Veuillez vérifier que les noms de package correspondent à la version que vous souhaitez supprimer de votre installation.

J'ai dû réexécuter à cmakepartir d'un BUILDrépertoire vide pour rediriger toutes les #includebibliothèques et vers la version SDK (puisque les anciens chemins étaient cuits dans l'environnement de construction existant).

Alexis Wilke
la source
-1

Cela se produit parce que votre version actuelle de CUDA ne prend pas en charge votre version actuelle de GCC. Vous devez effectuer les opérations suivantes:

  1. Trouvez la version GCC prise en charge (dans mon cas 5 pour CUDA 9)

    • CUDA 4.1: GCC 4.5
    • CUDA 5.0: GCC 4.6
    • CUDA 6.0: GCC 4.7
    • CUDA 7.0: GCC 4.8
    • CUDA 7.5: GCC 4.8
    • CUDA 8: GCC 5.3
    • CUDA 9: GCC 5.5
    • CUDA 9.2: GCC 7
    • CUDA 10.1: GCC 8
  2. Installez la version GCC prise en charge

    sudo apt-get install gcc-5
    sudo apt-get install g++-5
  3. Changer les softlinks pour GCC dans le /usr/binrépertoire

    cd /usr/bin
    sudo rm gcc
    sudo rm g++
    sudo ln -s /usr/bin/gcc-5 gcc
    sudo ln -s /usr/bin/g++-5 g++
  4. Changer les softlinks pour GCC dans le /usr/local/cuda-9.0/binrépertoire

    cd /usr/local/cuda-9.0/bin
    sudo rm gcc
    sudo rm g++
    sudo ln -s /usr/bin/gcc-5 gcc
    sudo ln -s /usr/bin/g++-5 g++
  5. Ajouter -DCUDA_HOST_COMPILER=/usr/bin/gcc-5à votre setup.pyfichier, utilisé pour la compilation

    if torch.cuda.is_available() and CUDA_HOME is not None:
        extension = CUDAExtension
        sources += source_cuda
        define_macros += [("WITH_CUDA", None)]
        extra_compile_args["nvcc"] = [
            "-DCUDA_HAS_FP16=1",
            "-D__CUDA_NO_HALF_OPERATORS__",
            "-D__CUDA_NO_HALF_CONVERSIONS__",
            "-D__CUDA_NO_HALF2_OPERATORS__",
            "-DCUDA_HOST_COMPILER=/usr/bin/gcc-5"
        ]
  6. Supprimer l'ancien répertoire de construction

    rm -rd build/
  7. Compilez à nouveau en définissant CUDAHOSTCXX=/usr/bin/gcc-5

    CUDAHOSTCXX=/usr/bin/gcc-5 python setup.py build develop

Remarque: si vous obtenez toujours l' gcc: error trying to exec 'cc1plus': execvp: no such file or directoryerreur après avoir suivi ces étapes, essayez de réinstaller le GCC comme ceci, puis de compiler à nouveau:

sudo apt-get install --reinstall gcc-5
sudo apt-get install --reinstall g++-5

Crédits: https://github.com/facebookresearch/maskrcnn-benchmark/issues/25#issuecomment-433382510

tsveti_iko
la source