2

我是推力新手。我正在尝试从 a 复制thrust::host_vector到 a 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; 
    } 
} 

有人可以帮忙吗?

4

1 回答 1

4

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

于 2012-03-15T13:23:19.110 回答