我正在使用boost::numeric::ublas::vector<double>
(http://www.boost.org/doc/libs/1_41_0/libs/numeric/ublas/doc/vector.htm)。
如何获得双精度的内部数据指针?
我需要内部指针,因为我想将向量复制到CUDA (i.e. using cudaMemcpy)
。或者是否有任何优雅的方法来复制我的提升载体/矩阵?
我知道我可以这样做:
boost::numeric::ublas::vector<double> vector;
double* ptr = &vector[0];
但是有更优雅的方式吗?
答案 0 :(得分:1)
我认为如果使用unbounded_array
作为存储模型实例化矢量:
vector<double, unbounded_array<double,n_elements>> vector;
然后你可以这样做:
cudaMemcpy(device_dest,
vector.data().begin(),
vector.data().size(),
cudaMemcpyHostToDevice);
这是有效的,因为unbounded_array
迭代器是指向存储类型的标准C ++指针。