1

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

但有更优雅的方式吗?

4

1 回答 1

1

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

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

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

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

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

于 2012-01-30T09:16:38.087 回答