Как заставить VS 2010 распознавать определенные функции CUDA - PullRequest
11 голосов
/ 31 мая 2011

На данный момент CUDA уже распознает ключевую функцию CUDA C / C ++, такую ​​как cudaMalloc, cudaFree, cudaEventCreate и т. Д.

Он также распознает определенные типы, такие как dim3 и cudaEvent_t.

Однако он не распознает другие функции и типы, такие как шаблон текстуры, функции __syncthreads или функция atomicCAS.

Все компилируется просто отлично, но мне надоело видеть красные подчеркивания повсюду, и я хочу видеть пример параметров, отображаемых при вводе любой распознаваемой функции.

Как заставить VS ловить эти функции?

Ответы [ 2 ]

10 голосов
/ 31 мая 2011

Вы можете создать фиктивный файл #include следующей формы:

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

Это должно скрыть поддельные прототипы от компиляторов CUDA и Visual C ++, но все же сделать их видимыми для IntelliSense.

Источник для __INTELLISENSE__ макроса: http://blogs.msdn.com/b/vcblog/archive/2011/03/29/10146895.aspx

4 голосов
/ 31 мая 2011

Вам необходимо добавить специфичные для CUDA ключевые слова, такие как __syncthreads, в файл usertype.dat для Visual Studio. Пример файла usertype.dat входит в состав NVIDIA CUDA SDK. Вам также необходимо убедиться, что Visual Studio распознает файлы .cu как файлы c / c ++, как описано в этом сообщении :

Обратите внимание, что там, где в этом сообщении используется $(CUDA_INC_PATH), в последних версиях CUDA вы должны использовать $(CUDA_PATH)/include.

Кроме того, я бы порекомендовал Visual Assist X - не бесплатно, но стоит денег - для улучшения intellisense. Это хорошо работает с CUDA, если вы будете следовать этим инструкциям:

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

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

...