0

我只是在学习与 ViennaCL 合作。在 CPU 上的第一次尝试运行良好,现在我正在尝试使用 OpenCL。但是,我无法将数据传输到 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. 我将 OS X 与提供的 OpenCL 驱动程序一起使用。

我在这里做错了什么?

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

4

1 回答 1

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
于 2013-05-16T14:59:15.877 回答