2013-05-14 48 views
0

我刚刚学习与ViennaCL合作。第一次尝试在CPU上工作正常,现在我正在尝试使用OpenCL。但是,我不能管理获取数据到GPU - 而矩阵似乎创造,他们没有得到任何内容:OS X上的ViennaCL:无法将数据复制到GPU

#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。我使用提供的OpenCL驱动程序使用OS X.

我在这里做错了什么?

编辑:删除VIENNACL_WITH_OPENCL解决了问题,但不是我想要的。

+0

更新:这似乎是OS X的问题 - 在另一台(SLES)机器上,它工作正常。有任何想法吗? – mrks 2013-05-15 07:49:49

回答

0

看起来像(我的?)OpenCL的OS X安装被破坏了。其他普通的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