2016-09-08 3 views
0

のメンバーではありませんraw_ptr私はスラスト例を使用して私の最初のVexCLプログラムをコンパイルしようとしていると私は、次のエラーメッセージが出ます:エラー:device_vector

raw_ptrはVEX」のメンバではありません::バックエンドを:: OpenCLのは::ここdevice_vector」

は、私は十分に言語を理解していないコード

vex::Context ctx(vex::Filter::Env && vex::Filter::Count(1)); 
std::cout << ctx << std::endl; 

vex::profiler<> prof(ctx); 

typedef int T; 
const size_t n = 16 * 1024 * 1024; 
vex::vector<T> x(ctx, n); 
vex::Random<T> rnd; 

// Get raw pointers to the device memory. 
T *x_begin = x(0).raw_ptr(); // Here is where the error is occurring. 
T *x_end = x_begin + x.size(); 

です。私はこの問題の助けを感謝します。それはVexCLThrust(CUDAに目標とされる他の高レベルのライブラリ)のインタフェースを扱うよう

おかげ

クリス

答えて

1

スラスト例は、で開始することが最善ではありません。 例をコンパイルするには、VxCLでCUDAバックエンドを使用する必要があります。つまり、/OpenCL.libの代わりにプリプロセッサマクロ を定義し、libcuda.so(またはWindowsの場合はcuda.lib)とリンクする必要があります。

エラーが発生したのは、device_vectorクラスがCUDAバックエンドでraw_ptr()メソッドしか公開していないためです。

関連する問題