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

时间:2010-03-07 03:56:25

标签: compiler-errors cuda thrust

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

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

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

  

1&GT; C:\ DOCUME〜1 \ ADMINI〜1个\ LOCALS〜1个\温度/ tmpxft_00003cc0_00000000-3_sample.cudafe1.stub.c(29)   :错误C2039:'vectorize_from_shared_kernel__entry':不是会员   'thrust :: detail :: device :: cuda'   1 GT; C:\ DOCUME〜1 \ ADMINI〜1个\ LOCALS〜1个\温度/ tmpxft_00003cc0_00000000-3_sample.cudafe1.stub.c(29)   :错误C2039:'vectorize_from_shared_kernel__entry':不是会员   'thrust :: detail :: device :: cuda'   1 GT; C:\ DOCUME〜1 \ ADMINI〜1个\ LOCALS〜1个\温度/ tmpxft_00003cc0_00000000-3_sample.cudafe1.stub.c(29)   :错误C2065:'vectorize_from_shared_kernel__entry':未声明   识别码   1 GT; C:\ DOCUME〜1 \ ADMINI〜1个\ LOCALS〜1个\温度/ tmpxft_00003cc0_00000000-3_sample.cudafe1.stub.c(29)   :错误C2062:输入'int'意外   1 GT; C:\ DOCUME〜1 \ ADMINI〜1个\ LOCALS〜1个\温度/ tmpxft_00003cc0_00000000-3_sample.cudafe1.stub.c(29)   :错误C2039:'vectorize_from_shared_kernel__entry':不是会员   'thrust :: detail :: device :: cuda'   1 GT; C:\ DOCUME〜1 \ ADMINI〜1个\ LOCALS〜1个\温度/ tmpxft_00003cc0_00000000-3_sample.cudafe1.stub.c(29)   :错误C2039:'vectorize_from_shared_kernel__entry':不是会员   'thrust :: detail :: device :: cuda'   1 GT; C:\ DOCUME〜1 \ ADMINI〜1个\ LOCALS〜1个\温度/ tmpxft_00003cc0_00000000-3_sample.cudafe1.stub.c(29)   :错误C2065:'vectorize_from_shared_kernel__entry':未声明   识别码   1 GT; C:\ DOCUME〜1 \ ADMINI〜1个\ LOCALS〜1个\温度/ tmpxft_00003cc0_00000000-3_sample.cudafe1.stub.c(29)   :错误C2062:输入'int'意外   1 GT; C:\ DOCUME〜1 \ ADMINI〜1个\ LOCALS〜1个\温度/ tmpxft_00003cc0_00000000-3_sample.cudafe1.stub.c(36)   :错误C2143:语法错误:缺少';'在'&lt;'之前   1 GT; C:\ DOCUME〜1 \ ADMINI〜1个\ LOCALS〜1个\温度/ tmpxft_00003cc0_00000000-3_sample.cudafe1.stub.c(36)   :错误C2182:'__ wrapper__device_stub_vectorize_from_shared_kernel':   非法使用'void'类型   1 GT; C:\ DOCUME〜1 \ ADMINI〜1个\ LOCALS〜1个\温度/ tmpxft_00003cc0_00000000-3_sample.cudafe1.stub.c(36)   :错误C2988:无法识别的模板声明/定义   1 GT; C:\ DOCUME〜1 \ ADMINI〜1个\ LOCALS〜1个\温度/ tmpxft_00003cc0_00000000-3_sample.cudafe1.stub.c(36)   :错误C2059:语法错误:'&lt;'   1 GT; C:\ DOCUME〜1 \ ADMINI〜1个\ LOCALS〜1个\温度/ tmpxft_00003cc0_00000000-3_sample.cudafe1.stub.c(38)   :错误C2143:语法错误:缺少';'之前'}'   1 GT; C:\ DOCUME〜1 \ ADMINI〜1个\ LOCALS〜1个\温度/ tmpxft_00003cc0_00000000-3_sample.cudafe1.stub.c(38)   :致命错误C1506:不可恢复的块范围错误

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

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

1 个答案:

答案 0 :(得分:2)

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

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