2016-09-08 1 views
0

내가 추력 예제를 사용하여 내 첫 번째 VexCL 프로그램을 컴파일하려고의 구성원이 아닌 raw_ptr 나는 다음과 같은 오류 메시지가 얻을 :오류 : device_vector

raw_ptr는 '벡스 :: 백엔드의 구성원이 아닌를 :: 여기

오픈 CL : 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() 메서드를 노출하기 때문에 오류가 발생했습니다.

관련 문제