我正在使用 boost::numeric::ublas::vector<double>
(http://www.boost.org/doc/libs/1_41_0/libs/numeric/ublas/doc/vector.htm)。
如何获得指向 double 的内部数据指针?
我需要内部指针,因为我想将 vector 复制到 CUDA (i.e. using cudaMemcpy)
.或者是否有任何优雅的方式来复制我的 boost vector/矩阵?
我知道我可以做类似的事情:
boost::numeric::ublas::vector<double> vector;
double* ptr = &vector[0];
但是有没有更优雅的方式呢?
最佳答案
我认为如果您使用 unbounded_array
作为存储模型来实例化您的 vector:
vector<double, unbounded_array<double,n_elements>> vector;
然后你可以这样做:
cudaMemcpy(device_dest,
vector.data().begin(),
vector.data().size(),
cudaMemcpyHostToDevice);
这是有效的,因为 unbounded_array
迭代器是一个标准的 C++ 指针,指向被存储的类型。
关于c++ - boost::numeric::ublas::vector 内部数据存储指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9059774/