OS X 上的 ViennaCL:无法将数据复制到 GPU

Posted

技术标签:

【中文标题】OS X 上的 ViennaCL:无法将数据复制到 GPU【英文标题】:ViennaCL on OS X: Can't copy data to GPU 【发布时间】:2013-05-14 14:26:00 【问题描述】:

我刚刚学习与 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 可以解决问题,但这不是我想要的。

【问题讨论】:

更新:这似乎是 OS X 的问题 - 在另一台 (SLES) 机器上,它可以工作。有什么想法吗? 【参考方案1】:

看起来(我的?)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

【讨论】:

以上是关于OS X 上的 ViennaCL:无法将数据复制到 GPU的主要内容,如果未能解决你的问题,请参考以下文章

从 Mac OS X 复制不会复制到 iPhone 模拟器

Xcode 5 上的目标 OS X 10.7+

将小的 .sql 文件上传到 MySQL 数据库文件返回错误(OS X 上的 XAMPP)

无法在 Mac OS X 上链接静态库

Mac OS X 上的 OpenGL 纹理损坏

在Mac OS X 10.6上的Python中,无法在Matplotlib中将字体更改为Helvetica