ViennaCL на OS X: невозможно скопировать данные на графический процессор
Я только учусь работать с ViennaCL. Первые попытки на процессоре работали нормально, сейчас я пытаюсь использовать OpenCL. Однако мне не удается передать данные на графический процессор - хотя матрицы, кажется, созданы, они не получают никакого содержимого:
#define VIENNACL_WITH_OPENCL
#define VIENNACL_WITH_UBLAS
#include <boost/numeric/ublas/matrix.hpp>
#include "viennacl/matrix.hpp"
int main() {
boost::numeric::ublas::matrix<float> data_cpu(1,1);
data_cpu(0,0) = 1;
viennacl::matrix<float> data_gpu(1,1);
viennacl::copy(data_cpu, data_gpu);
assert(data_cpu(0,0) == data_gpu(0,0));
}
После этого, data_gpu(0,0)
является 0
но я считаю, что это должно быть 1
,
Я собираю это с g++ nocopy.cpp -framework OpenCL
, Я использую OS X с предоставленным драйвером OpenCL.
Что я здесь не так делаю?
Редактировать: Удаление VIENNACL_WITH_OPENCL
решает проблему, но не то, что я хочу.
1 ответ
Решение
Похоже (мой?) OS X установка OpenCL как-то не работает. Другие, простые, OpenCL примеры также не работают:
noname:histogram Markus$ ./histogram
OpenCL Device Vendor = NVIDIA, OpenCL Device Name = GeForce GT 650M, OpenCL Device Version = OpenCL 1.1
Image Histogram for image type = CL_RGBA, CL_UNORM_INT8: verify_histogram_results failed for indx = 0, gpu result = 0, expected result = 8204
Image dimensions: 1920 x 1080 pixels, Image type = CL_RGBA, CL_UNORM_INT8
Time to compute histogram = 0 ms
Image Histogram for image type = CL_RGBA, CL_FLOAT: verify_histogram_results failed for indx = 0, gpu result = 0, expected result = 8049
Image dimensions: 1920 x 1080 pixels, Image type = CL_RGBA, CL_FLOAT
Time to compute histogram = 0 ms
noname:histogram Markus$ pwd
/Users/Markus/Desktop/tmp/opencl-book-samples-read-only/src/Chapter_14/histogram