我正在尝试测试最近传递给我职责的一些代码。当CUDA项目传递给我工作时,我似乎无法在VS13 [解决方案]中获得[新项目]。
我已经创建了一个CUDA 6.5运行时项目。我还添加了自己的代码所需的依赖项。 在编译时,我收到了几个[错误C2061:语法错误:标识符“表面”]或“纹理”。
我目前不知道自己错过了什么。我猜我需要添加一些依赖项目,但在查找此错误消息时很难在线找到任何相关资源。我已经在正确的位置添加了“compute_30,sm_30”(即与编译的项目中的位置相同)。
编辑:相关的是,在main函数中包含的someClass.h中,文件抛出错误是#included。
如下所述,问题是可视化编译器中包含特定于CUDA的文件。
答案 0 :(得分:1)
正如交叉发布here中所讨论的,此问题的根本原因是涉及surface
和texture
关键字的代码位于.h文件中,最终是包含在.cpp文件中
在VS CUDA项目中,默认情况下,.cpp文件由cl.exe(windows主机代码编译器)编译。 .cu文件由NVIDIA GPU编译器/驱动程序nvcc编译。
cl.exe无法理解surface
或texture
个关键字,因此会引发上述语法错误。
唯一的解决方案是安排您的项目,使这些构造只出现在或将被包含在将由nvcc处理的文件中,nvcc是理解surface
和texture
的编译器(和其他CUDA)关键字。
作为参考,有各种CUDA示例代码(例如this one)使用表面和纹理结构,并且还具有在.cpp和.cu文件之间分区的项目代码。如果您希望了解如何组织此类项目的示例,您可以研究这些。