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

boost::numeric::ublas::vector internal data storage pointer

本文关键字:数据 存储 指针 内部 numeric ublas boost      更新时间:2023-10-16

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

但还有更优雅的方式吗?

我认为,如果您使用unbounded_array作为存储模型实例化向量:

vector<double, unbounded_array<double,n_elements>> vector;

然后你可以做这样的事情:

cudaMemcpy(device_dest, 
           vector.data().begin(), 
           vector.data().size(), 
           cudaMemcpyHostToDevice);

这是因为unbounded_array迭代器是指向所存储类型的标准C++指针。