#visual-studio-2010 #cuda #intellisense #keyword #code-completion
#visual-studio-2010 #cuda #intellisense #ключевое слово #завершение кода
Вопрос:
На данный момент CUDA уже распознает ключевую функцию CUDA C / C , такую как cudaMalloc
, cudaFree
, cudaEventCreate
и т.д.
Он также распознает определенные типы, такие как dim3
и cudaEvent_t
.
Однако он не распознает другие функции и типы, такие как шаблон текстуры, __syncthreads
функции или atomicCAS
function.
Все компилируется просто отлично, но я устал видеть повсюду красные подчеркивания, и я хочу увидеть параметры примера, отображаемые при вводе любой распознаваемой функции.
Как мне заставить VS перехватывать эти функции?
Ответ №1:
Вы могли бы создать фиктивный файл #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
Ответ №2:
Вам нужно добавить ключевые слова, относящиеся к CUDA, такие как __syncthreads, в файл usertype.dat для visual studio. Пример файла usertype.dat включен в комплект NVIDIA CUDA SDK. Вам также необходимо убедиться, что visual Studio распознает файлы .cu как файлы c / c , как описано в этом сообщении:
Однако обратите внимание, что там, где используется этот post $(CUDA_INC_PATH)
, вам следует использовать последние версии CUDA $(CUDA_PATH)/include
.
Кроме того, я бы порекомендовал Visual Assist X — не бесплатный, но стоит денег — для улучшения intellisense. Это хорошо работает с CUDA, если вы будете следовать этим инструкциям:
Комментарии:
1. __syncthreads находится в файле usertype.dat, и он выделяется синим цветом, но функция по-прежнему не распознается (подчеркнуто красным). Я очень четко следовал инструкциям в блоге, но это работало только для функций, которые я описал выше. Я также вручную нашел каталог включения CUDA 4.0. Единственным преимуществом было то, что я смог открыть документы.