thrust :: device_vector错误

时间:2012-03-14 22:49:32

标签: cuda thrust

我是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; 
    } 
} 

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:3)

该错误消息通常意味着运行时无法找到与您的GPU架构匹配的二进制文件,即您没有在编译中包含正确的GPU SM版本。由于您使用的是VS2010,因此GPU架构通常通过构建自定义进行设置。在CUDA C / C ++,Device下的项目属性中,您应该看到“代码生成”选项。我不确定你的GPU是哪一代,但你可以尝试“compute_20,sm_20; compute_20,sm_21”为两个费米架构构建。