2012-08-22 25 views
8

No puedo encontrar qué versión/qué conceptos de C++ son compatibles con CUDA 5.0. No pude encontrar ninguna información en la Guía de programación o Guía de referencia entregada con CUDA 5.0 RC. Especialmente me pregunto si CUDA 5.0 es compatible con C++ 11. ¿Podría alguien señalarme un lugar para buscar esta información?versión de C++ admitida por cuda 5.0

+0

¿Está preguntando sobre la compatibilidad con el código del dispositivo C++ o el código de host? – talonmies

Respuesta

1

No es compatible con gcc 4.7 por lo some of the c++11 features no están disponibles:

- Non-static data member initializers 
- Template aliases :(
- Delegating constructors 
- User-defined literals 
- Extended friend declarations 
- Explicit virtual overrides 
+0

Perdón por aceptar eso tarde, primero esperaba obtener una referencia a la documentación de cuda, pero esa lista es un gran comienzo. – soriak

4

Las notas de la versión contienen una lista de las plataformas de apoyo, incluidos los que se apoyan las versiones de las CGC, el 5.0 Release Candidate release notes muestran que el más reciente GCC compatible 4.6 para ciertas distribuciones (y más antiguas para otras distribuciones).

Una vez que sepa qué versión de GCC es compatible, compárela con la GCC C++0x/C++11 feature list.

+1

Solo el código de host se compila con GCC. – Dude

+0

@Dude: nvcc divide efectivamente un solo archivo para compilación por el compilador de host (en este caso GCC) y el compilador del dispositivo. El enlazador finalmente vincula los objetos del dispositivo y los objetos del servidor juntos. Realmente no entiendo lo que quieres decir con que solo se compila código de host con GCC, nadie dice nada diferente, pero nvcc solo admite ciertas versiones (ver notas de la versión). ¡No estoy seguro de que justificara un voto a la baja! – Tom

+0

OP está pidiendo características de C++ 11. ¿Estás seguro de que el compilador del dispositivo los implementa a todos? – Dude

7

Parece que no hay funciones de C++ 11 disponibles en 5.0 RC. NVCC todavía no entiende C++ 11 sintaxis utilizada en el estándar incluye de gcc 4.6 (ver Error while using CUDA and C++11):

$ NVCC --version

nvcc: NVIDIA (R) Cuda compiler driver 
Copyright (c) 2005-2012 NVIDIA Corporation 
Built on Tue_Jul_31_17:46:14_PDT_2012 
Cuda compilation tools, release 5.0, V0.2.1221 

$ cat test.cu

int main() 
{ 
} 

$ NVCC -Xcompiler "-std = C++ 0x" test.cu

/usr/include/c++/4.6/x86_64-linux-gnu/./bits/c++config.h(159): error: identifier "nullptr" is undefined 

/usr/include/c++/4.6/x86_64-linux-gnu/./bits/c++config.h(159): error: expected a ";" 

/usr/include/c++/4.6/bits/exception_ptr.h(93): error: incomplete type is not allowed 

...

0

ahora si está consultando sobre Cuda/C++ o la biblioteca de THRUST. la biblioteca de empuje es muy similar a stl C++ con respecto a los contenedores, iteradores y algoritmos, pero no es C++ 11.

nvcc compila el código de gpu. Compatibilidad con nvcc (Cuda C y C++ C++/thrust) código de compilación gcc gcc. gcc (soporte C y C++).

Cuestiones relacionadas