2012-01-30 37 views
1

我正在使用boost::numeric::ublas::vector<double>http://www.boost.org/doc/libs/1_41_0/libs/numeric/ublas/doc/vector.htm)。boost :: numeric :: ublas :: vector内部数据存储指针

我怎样才能得到一个内部数据指针的双? 我需要内部指针,因为我想将矢量复制到CUDA (i.e. using cudaMemcpy)。还是有任何优雅的方式来复制我的助推向量/矩阵?

我知道我可以这样做:

boost::numeric::ublas::vector<double> vector; 
double* ptr = &vector[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++指针指向正在存储的类型。

相关问题