持续获得error : identifier "atomicAdd" is undefined
之后,我发现解决方案是使用-arch sm_20
标志进行编译。但是如何在VS 2010中传递这个编译器标志?我在Project > Properties
下尝试过这样做:
但这显然没有效果,错误仍然存在 - 我做错了什么?
非常感谢。
答案 0 :(得分:13)
您可以在此对话框中选择GPU代码生成选项:
在这种情况下,“compute_20”表示我正在为虚拟计算架构2.0进行编译 - 虚拟架构会影响PTX生成阶段。
昏迷之后的第二部分是“sm_21”。这会影响CUBIN的生成阶段。它定义了我想要将PTX编译为的真正GPU架构。
您可以找到控制代码生成的{nvcc命令行参数here的详细说明。
答案 1 :(得分:2)
转到“CUDA C / C ++”下的“设备”部分。在“代码生成”中,您可以指定sm_20
。不需要-arch
。
答案 2 :(得分:2)
请注意项目和.cu文件都有单独的属性。显然他们在编译之前就已经合并了。
我为此尝试为计算3.0和版本指定GPU而感到困惑。更大,但.cu属性有一些剩余的1.0& 2.0