2012-01-30 88 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++指針指向正在存儲的類型。

相關問題