How to get VS 2010 to recognize certain CUDA funct

2019-01-09 10:46发布

问题:

At the moment CUDA already recognizes a key CUDA C/C++ function such as cudaMalloc, cudaFree, cudaEventCreate, etc.

It also recognizes certain types like dim3 and cudaEvent_t.

However, it doesn't recognize other functions and types such as the texture template, the __syncthreads functions, or the atomicCAS function.

Everything compiles just fine, but I'm tired of seeing red underlinings all over the place and I want to the see the example parameters displayed when you type in any recognizable function.

How do I get VS to catch these functions?

回答1:

You could create a dummy #include file of the following form:

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

This should hide the fake prototypes from the CUDA and Visual C++ compilers, but still make them visible to IntelliSense.

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



回答2:

You need to add CUDA-specific keywords like __syncthreads to the usertype.dat file for visual studio. An example usertype.dat file is included with the NVIDIA CUDA SDK. You also need to make sure that visual studio recognizes .cu files as c/c++ files as described in this post:

Note however that where that post uses $(CUDA_INC_PATH), with recent versions of CUDA you should use $(CUDA_PATH)/include.

Also, I would recommend Visual Assist X -- not free, but worth the money -- to improve intellisense. It works well with CUDA if you follow these instructions:

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

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