versiones gcc cuda compatibility

versiones - La versión X de CUDA se queja de que no admite la versión Y de gcc: ¿qué hacer?



using cuda on ubuntu (4)

La pregunta es acerca de una combinación específica de versiones, pero es relevante de manera más general.

Acabo de actualizar dist desde Kubuntu 12.04 a 14.04. Ahora, cuando quiero compilar el código CUDA (con CUDA 6.5), obtengo:

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

Instalé gcc-4.8 (y 4.7) e intenté usar la solución symlinks-in /usr/local/cuda/bin que se sugiere aquí:

CUDA incompatible con mi versión de gcc

pero esto no funciona ¿Que debería hacer?


Volver a una configuración compatible. Se enumeran en el documento de inicio de cualquier distribución reciente de CUDA.

Para su configuración particular que ha enumerado actualmente, puede tener mejor suerte con CUDA 7 RC, que ahora está disponible para los desarrolladores registrados.


Tuve un problema similar con CUDA Toolkit 7.5 y gcc 5.2.1.

Modifiqué el archivo host_config.h en /usr/local/cuda/include/ :

Simplemente elimine las líneas donde verifica la versión de gcc. Resolvió mi problema.

Los créditos van a Darren Garvey ( https://groups.google.com/forum/#!topic/torch7/WaNmWZqMnzw )


Muy a menudo encontrará que CUDA ha tenido lanzamientos más nuevos cuando se encuentre con este problema. Por ejemplo, la formulación original de la pregunta fue sobre CUDA 6 y GCC 4.9; CUDA 7 admite GCC 4.9. CUDA 8 es compatible con GCC 5.x. Y así.


Esta solución es relevante para múltiples combinaciones de versiones de CUDA y GCC.

Puede decirle al nvcc de CUDA que use una versión específica de gcc. Entonces, supongamos que quiere que gcc 4.7 se use con CUDA 6. Ejecute:

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

y luego agregue el siguiente nvcc a su nvcc comando nvcc :

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

Si está compilando con CMake, agregue una configuración adecuada antes de buscar CUDA en su CMakeLists.txt , por ejemplo:

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

Además, parece que clang también puede compilar CUDA, quizás valga la pena experimentarlo (aunque tendrías que construirlo adecuadamente).

Nota: Algunas distribuciones de Linux (u otro sistema operativo) no tienen paquetes para múltiples versiones de gcc (en la misma versión de la distribución del sistema operativo). Aconsejaría no intentar instalar un paquete de otra versión de la distribución en una versión anterior, y considerar la creación de gcc en su lugar. Eso no es del todo trivial, pero es bastante factible , y por supuesto, es su única opción si no tiene acceso de root a su máquina.