gpt4 book ai didi

compiler-errors - 推力(CUDA库)编译错误,例如 “' vectorize_from_shared_kernel__entry': is not a member of 'thrust::detail::device::cuda' ”

转载 作者:行者123 更新时间:2023-12-02 10:45:43 25 4
gpt4 key购买 nike

我使用CUDA VS向导创建了一个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) : error C2039: 'vectorize_from_shared_kernel__entry' : is not a member of 'thrust::detail::device::cuda' 1>C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/tmpxft_00003cc0_00000000-3_sample.cudafe1.stub.c(29) : error C2039: 'vectorize_from_shared_kernel__entry' : is not a member of 'thrust::detail::device::cuda' 1>C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/tmpxft_00003cc0_00000000-3_sample.cudafe1.stub.c(29) : error C2065: 'vectorize_from_shared_kernel__entry' : undeclared identifier 1>C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/tmpxft_00003cc0_00000000-3_sample.cudafe1.stub.c(29) : error C2062: type 'int' unexpected 1>C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/tmpxft_00003cc0_00000000-3_sample.cudafe1.stub.c(29) : error C2039: 'vectorize_from_shared_kernel__entry' : is not a member of 'thrust::detail::device::cuda' 1>C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/tmpxft_00003cc0_00000000-3_sample.cudafe1.stub.c(29) : error C2039: 'vectorize_from_shared_kernel__entry' : is not a member of 'thrust::detail::device::cuda' 1>C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/tmpxft_00003cc0_00000000-3_sample.cudafe1.stub.c(29) : error C2065: 'vectorize_from_shared_kernel__entry' : undeclared identifier 1>C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/tmpxft_00003cc0_00000000-3_sample.cudafe1.stub.c(29) : error C2062: type 'int' unexpected 1>C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/tmpxft_00003cc0_00000000-3_sample.cudafe1.stub.c(36) : error C2143: syntax error : missing ';' before '<' 1>C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/tmpxft_00003cc0_00000000-3_sample.cudafe1.stub.c(36) : error C2182: '__wrapper__device_stub_vectorize_from_shared_kernel' : illegal use of type 'void' 1>C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/tmpxft_00003cc0_00000000-3_sample.cudafe1.stub.c(36) : error C2988: unrecognizable template declaration/definition 1>C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/tmpxft_00003cc0_00000000-3_sample.cudafe1.stub.c(36) : error C2059: syntax error : '<' 1>C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/tmpxft_00003cc0_00000000-3_sample.cudafe1.stub.c(38) : error C2143: syntax error : missing ';' before '}' 1>C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/tmpxft_00003cc0_00000000-3_sample.cudafe1.stub.c(38) : fatal error C1506: unrecoverable block scoping error



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

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

最佳答案

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

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

关于compiler-errors - 推力(CUDA库)编译错误,例如 “' vectorize_from_shared_kernel__entry': is not a member of 'thrust::detail::device::cuda' ”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2395119/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com