2012-03-14 21 views
2

私はThrustを初めて使用しています。私はthrust::host_vectorからthrust::device_vectorにコピーしようとしています。どちらも既に実装されているクラスのタイプSequenceです。thrust :: device_vectorエラー

「無効なデバイス機能」というエラーが表示されます。私は540

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

のGeForce GTにCUDA 4.0 VS2010を使用してい は誰でも助けてくださいことはできますか?

+0

コードは正常です。エラーはあなたのコードのどこかにあると思います。上記のコードを呼び出す前に、各CUDAコールからの戻り値を確認してください。 –

+2

'class Sequence'の定義を提供できますか? – harrism

答えて

3

このエラーメッセージは、通常、実行時にGPUアーキテクチャに一致するバイナリが見つからない、つまり、コンパイルに正しいGPU SMバージョンが含まれていないことを意味します。 VS2010を使用しているので、GPUアーキテクチャは通常、ビルドのカスタマイズによって設定されます。 CUDA C/C++、Deviceのプロジェクトプロパティでは、 "Code Generation"オプションが表示されます。あなたのGPUの世代はわかりませんが、両方のFermiアーキテクチャ用に "compute_20、sm_20; compute_20、sm_21"を試すことができます。

関連する問題