我只是在学习与 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
解决了问题,但不是我想要的。