¿Por qué nvcc no puede comstackr un archivo CUDA con boost :: spirit?

Estoy tratando de integrar CUDA a una aplicación existente que usa boost :: spirit.

Al aislar el problema, descubrí que el siguiente código no se puede copiar con nvcc:

main.cu :

 #include  int main(){ exit(0); } 

Comstackndo con nvcc -o cudaTest main.cu Recibo muchos errores que se pueden ver aquí .

Pero si cambio el nombre de archivo a main.cpp y lo compilo nuevamente usando nvcc , funciona. ¿Qué está pasando aquí y cómo puedo solucionarlo?

nvcc veces tiene problemas para comstackr un código de plantilla complejo como el que se encuentra en Boost, incluso si el código solo se usa en __host__ funciones __host__ .

Cuando la extensión de un archivo es .cpp , nvcc no realiza ningún análisis y en su lugar reenvía el código al comstackdor de host, por lo que observa un comportamiento diferente según la extensión del archivo.

Si es posible, intente poner en cuarentena el código que depende de Boost en archivos .cpp que no necesitan ser analizados por nvcc .

También me aseguraré de probar el nvcc que viene con el reciente CUDA 4.1 . El soporte de plantilla de nvcc mejora con cada lanzamiento.