首页 文章

Thrust(CUDA Library)编译错误,如“'vectorize_from_shared_kernel__entry':不是'thrust::detail::device::cuda'的成员”

提问于
浏览
1

我使用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':不是'thrust :: detail :: device :: 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':不是'thrust :: detail :: device :: 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':不是'thrust :: detail的成员:: device :: 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':不是'thrust :: detail :: device :: 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:语法错误:缺少'; “在'<'1> 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:语法错误:'<'1> 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 .

1 回答

  • 2

    这是一个.cu文件(用nvcc编译)? Thrust代码应该放在.cu文件中 .

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

相关问题