【问题标题】:Thrust (CUDA Library) Compile error like "'vectorize_from_shared_kernel__entry' : is not a member of 'thrust::detail::device::cuda'"Thrust(CUDA 库)编译错误,例如“'vectorize_from_shared_kernel__entry':不是 'thrust::detail::device::cuda' 的成员”
【发布时间】:2011-01-24 14:31:55
【问题描述】:

我使用CUDA VS Wizard创建了一个VS项目,并尝试使用Thrust构建一个cuda程序,测试程序很简单:

// ignore headers
int main(void)
{
 thrust::device_vector<double> X;
 X.resize(100);
}

我会得到一些编译错误,例如:

1>C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/tmpxft_00003cc0_00000000-3_sample.cudafe1.stub.c(29) : 错误 C2039: 'vectorize_from_shared_kernel__entry' : 不是成员 '推力::细节::设备::cuda' 1>C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/tmpxft_00003cc0_00000000-3_sample.cudafe1.stub.c(29) : 错误 C2039: 'vectorize_from_shared_kernel__entry' : 不是成员 '推力::细节::设备::cuda' 1>C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/tmpxft_00003cc0_00000000-3_sample.cudafe1.stub.c(29) : 错误 C2065: 'vectorize_from_shared_kernel__entry' : 未声明 标识符 1>C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/tmpxft_00003cc0_00000000-3_sample.cudafe1.stub.c(29) : 错误 C2062: 类型 'int' 意外 1>C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/tmpxft_00003cc0_00000000-3_sample.cudafe1.stub.c(29) : 错误 C2039: 'vectorize_from_shared_kernel__entry' : 不是成员 '推力::细节::设备::cuda' 1>C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/tmpxft_00003cc0_00000000-3_sample.cudafe1.stub.c(29) : 错误 C2039: 'vectorize_from_shared_kernel__entry' : 不是成员 '推力::细节::设备::cuda' 1>C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/tmpxft_00003cc0_00000000-3_sample.cudafe1.stub.c(29) : 错误 C2065: 'vectorize_from_shared_kernel__entry' : 未声明 标识符 1>C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/tmpxft_00003cc0_00000000-3_sample.cudafe1.stub.c(29) : 错误 C2062: 类型 'int' 意外 1>C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/tmpxft_00003cc0_00000000-3_sample.cudafe1.stub.c(36) : 错误 C2143: 语法错误: 缺少';'在'C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/tmpxft_00003cc0_00000000-3_sample.cudafe1.stub.c(36) :错误 C2182:'__wrapper__device_stub_vectorize_from_shared_kernel': 非法使用“void”类型 1>C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/tmpxft_00003cc0_00000000-3_sample.cudafe1.stub.c(36) : 错误 C2988: 无法识别的模板声明/定义 1>C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/tmpxft_00003cc0_00000000-3_sample.cudafe1.stub.c(36) : 错误 C2059: 语法错误: 'C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/tmpxft_00003cc0_00000000-3_sample.cudafe1.stub.c(38) : 错误 C2143: 语法错误: 缺少';'前 '}' 1>C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/tmpxft_00003cc0_00000000-3_sample.cudafe1.stub.c(38) : 致命错误 C1506: 不可恢复的块范围错误

但是,如果我注释掉第二条语句“X.resize(100);”,它可以构建成功。 所以我猜推力设置,构建规则设置和CUDA设置是正确的。你知道为什么会出现这些编译错误吗?

我正在使用 VS 2008、CUDA 2.3 和 Thrust 1.1。

【问题讨论】:

    标签: compiler-errors cuda thrust


    【解决方案1】:

    这是在 .cu 文件中吗(使用 nvcc 编译)?推力代码应放在 .cu 文件中。

    顺便说一句,我个人避免使用 CUDA VS 向导(部分原因是 NVIDIA 不提供/支持它)并使用this other post 中描述的策略。

    【讨论】:

      猜你喜欢
      • 2012-02-21
      • 2014-09-11
      • 1970-01-01
      • 1970-01-01
      • 2013-06-25
      • 1970-01-01
      • 2020-07-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多