【发布时间】: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