【发布时间】:2012-10-22 05:19:53
【问题描述】:
如何强制 GCC 在我的代码中使用 threadIdx 行进行编译?
我正在尝试使用 c 包装器编译我的 cuda 应用程序。
要生成 .so 文件,我运行: nvcc -arch=sm_11 -o libtest.so --shared -Xcompiler -fPIC main.cu
然后我尝试编译 c 包装器: gcc -std=c99 -I/usr/local/cuda/include -o main -L. -ltest main.c
这会在我的代码(包含文件的包含)中导致以下错误: 错误:“threadIdx”未声明
注意:一切都可以作为 GPU 应用程序编译和运行,无需任何 C 包装。
【问题讨论】:
-
threadIdx 是设备内置变量。它应该仅显示在设备代码中。设备代码属于 .cu 文件,应仅传递给 nvcc 编译器。如果您的主机代码中有 threadIdx,则说明有问题。