我刚刚开始 CUDA 编程,并且进展顺利,我的 GPU 被识别出来了。我已经使用这个非常有用的指南在 Visual Studio 中部分设置了 Intellisense:
http://www.ademiller.com/blogs/tech/2010/10/visual-studio-2010-adding-intellisense-support-for-cuda-c/
和这里:
http://www.ademiller.com/blogs/tech/2011/05/visual-studio-2010-and-cuda-easier-with-rc2/
但是,Intellisense 仍然无法接收这样的内核调用:
// KernelCall.cu
#include <iostream>
#include "cuda.h"
#include "cuda_runtime.h"
#include "device_launch_parameters.h"
__global__ void kernel(void){}
int main()
{
kernel<<<1,1>>>();
system("pause");
return 0;
}
行 kernel<<<1,1>>>() 带有红色下划线,特别是第一个箭头左侧的一个箭头,错误为“错误:预期和表达式”。但是,如果我将鼠标悬停在该函数上,它的返回类型和参数会正确显示。它仍然编译得很好,我只是想知道如何摆脱这个小烦恼。
最佳答案
Visual Studio 为 C++ 提供 IntelliSense,火箭科学家博客中的技巧基本上依赖于 CUDA-C 与 C++ 的相似性,仅此而已。
在C++语言中,正确解析尖括号很麻烦。你有 <
作为小于和用于模板,以及 <<
作为转变,记得不久前我们不得不在嵌套的模板声明之间放置一个空格。
所以事实证明,提出这种语法的 NVIDIA 人并不是语言专家,他碰巧选择了最糟糕的分隔符,然后将其增加了三倍,好吧,你会遇到麻烦。令人惊讶的是,Intellisense 在看到这一点时竟然能正常工作。
我知道在 CUDA 中获得完整 IntelliSense 的唯一方法是从运行时 API 切换到驱动程序 API。 C++ 只是 C++,而 CUDA 仍然是(某种)C++,没有 <<<>>>
语言解析必须解决的坏处。
关于visual-studio-2010 - 为 CUDA 内核调用设置 Visual Studio Intellisense,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6061565/