我是Thrust的新手。我正在尝试从thrust::host_vector
复制到thrust::device_vector
,类型Sequence
都是我已经实现的类。
但是我收到错误“无效的设备功能”。 我在GeForce GT 540上使用CUDA 4.0 VS2010。
thrust::host_vector <Sequence> Ind_Tabel_V;
void Ind_Table_Filling()
{
//some Code
Sequence s;
// some code
Ind_Tabel_V.push_back(s);
try
{
thrust::device_vector<Sequence> d_vec=Ind_Tabel_V;
}
catch (thrust::system_error &e)
{
std::cerr << "Error accessing vector element: " << e.what() << std::endl;
}
}
有人可以帮忙吗?
答案 0 :(得分:3)
该错误消息通常意味着运行时无法找到与您的GPU架构匹配的二进制文件,即您没有在编译中包含正确的GPU SM版本。由于您使用的是VS2010,因此GPU架构通常通过构建自定义进行设置。在CUDA C / C ++,Device下的项目属性中,您应该看到“代码生成”选项。我不确定你的GPU是哪一代,但你可以尝试“compute_20,sm_20; compute_20,sm_21”为两个费米架构构建。