2016-09-08 2 views
0

Я пытаюсь скомпилировать свою первую программу VexCL на примере тяги, и я получаю следующее сообщение об ошибке:Ошибка при компиляции программы VexCL: raw_ptr не является членом device_vector

raw_ptr не является членом «Векс :: бэкэндом :: 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(); 

Я не понимаю язык достаточно хорошо. Я ценю любую помощь в этом вопросе.

Благодаря

Chris

ответ

1

Упорный пример не лучше начать с того, как он занимается взаимодействия VexCL и Thrust (другую библиотеку высокого уровня, который предназначен на CUDA). Итак, чтобы скомпилировать этот пример, вам необходимо использовать бэкэнд CUDA в VexCL. То есть, вам необходимо определитьпрепроцессорный макрос и ссылку на libcuda.so (или cuda.lib, если на Windows), а не libOpenCL.so/OpenCL.lib.

Ошибка, возникшая из-за того, что класс device_vector предоставляет только метод raw_ptr(), когда на сервере CUDA.

Смежные вопросы