boost :: numeric :: ublas :: vector内部数据存储指针

时间:2012-01-30 05:32:03

标签: c++ boost cuda c++11 ublas

我正在使用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];

但是有更优雅的方式吗?

1 个答案:

答案 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 ++指针。