【发布时间】:2012-12-03 08:29:55
【问题描述】:
我已经使用 CUDA 4.2 一个星期了,但我遇到了一个小问题。 当我编写 __syncthreads() 函数时,它会变成下划线,看起来好像是错误的......
然后,如果我将鼠标放在功能上,则会出现一条消息:
标识符 __syncthreads();未定义。
但是当我编译我的项目时,输出表单 build 说:
========== 构建:1 成功,0 失败,0 最新,0 跳过 ==========
所以我猜测一切正常,但 Visual Studio 强调该函数的事实让我感到困惑......我怎样才能让 Visual Studio 知道该函数是在编译过程之前定义的?
注意:内核调用也会发生同样的事情:kernel>> 其中第三个“
我知道这可能是一个小问题,但我想解决它...非常感谢! 我在带有 Cuda 4.2 和 Nsight 2.2 的 win7 上使用 Visual Studio 2010
【问题讨论】:
-
是文件名something.c还是something.cu,而最后一个表示cuda文件而不是纯c文件。虽然没有使用 cuda 的 VS 经验。
-
@ks6g10... 显然这将是一个
cu文件。你还能在哪里使用__syncthreads? -
@sgar91 是的,你只能在 cu 文件中使用它,如果使用 nvidia nsight 将文件命名为 .c 而不是 .cu,它将注册为错误。当传递给 nvcc 时,它可以以某种方式编译。
-
尝试包含
cuda_runtime.h和/或device_functions.h,看看红色下划线是否消失。我并不是真的建议这是一个很好的解决方案,因为它may have side effects,但我认为这就是 IDE 确定要下划线的方式 - 它正在解析您的代码以在某处定义。