【问题标题】:compiling cuda with gcc results in: error: ‘threadIdx’ undeclared用 gcc 编译 cuda 会导致:错误:'threadIdx' undeclared
【发布时间】: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,则说明有问题。

标签: c gcc cuda gpgpu nvcc


【解决方案1】:

Gcc 无法编译代码的 cuda 部分。您需要 nvcc 来编译代码。 gcc遇到threadIdx时不知道该怎么办。

【讨论】:

    猜你喜欢
    • 2013-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-14
    • 2013-09-25
    • 2015-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多