8

Por el momento CUDA ya reconoce una función clave CUDA C/C++, como cudaMalloc, cudaFree, cudaEventCreate, etc.Como llegar VS 2010 para reconocer ciertas funciones CUDA

También reconoce ciertos tipos como dim3 y cudaEvent_t. No se reconocen otras funciones y tipos como la plantilla de textura, las funciones __syncthreads o la función atomicCAS.

Todo se compila muy bien, pero estoy cansado de ver los subrayados rojos por todas partes y quiero ver los parámetros de ejemplo que se muestran cuando escribe en cualquier función reconocible.

¿Cómo obtengo VS para atrapar estas funciones?

Respuesta

9

Se puede crear un archivo #include de relleno de la siguiente forma:

#pragma once 
#ifdef __INTELLISENSE__ 
void __syncthreads(); 
... 
#endif 

Esto debería ocultar los prototipos falsos de la CUDA y los compiladores de C++ Visual, pero aún así hacerlos visibles a IntelliSense.

Fuente de __INTELLISENSE__ macro: http://blogs.msdn.com/b/vcblog/archive/2011/03/29/10146895.aspx

4

Es necesario añadir palabras clave específicas como CUDA-__syncthreads en el archivo usertype.dat para Visual Studio. Un ejemplo de archivo usertype.dat se incluye con NVIDIA CUDA SDK. También es necesario asegurarse de que Visual Studio reconoce .cu archivos como archivos de c/C++ como se describe en this post:

Nota sin embargo, que si dicha función utiliza $(CUDA_INC_PATH), con versiones recientes de CUDA se debe utilizar $(CUDA_PATH)/include.

Además, recomendaría Visual Assist X - no gratis, pero vale la pena el dinero - para mejorar intellisense. Funciona bien con CUDA si sigue estas instrucciones:

http://www.wholetomato.com/forum/topic.asp?TOPIC_ID=5481

http://forums.nvidia.com/index.php?showtopic=53690

+0

__syncthreads está en el archivo usertype.dat, y se resalta en color azul, pero la función sigue sin ser reconocida (subrayado en rojo). He seguido las instrucciones del blog muy claramente, pero eso solo funcionó para las funciones que describí anteriormente. También encontré manualmente el directorio de inclusión de CUDA 4.0. El único beneficio fue que pude abrir los documentos. – sj755