2

私はスラストが初めてです。thrust::host_vectora から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 に答える