1

私は使用していますboost::numeric::ublas::vector<double>http://www.boost.org/doc/libs/1_41_0/libs/numeric/ublas/doc/vector.htm)。

doubleへの内部データポインタを取得するにはどうすればよいですか? ベクトルを にコピーしたいので、内部ポインタが必要ですCUDA (i.e. using cudaMemcpy)。または、ブースト ベクトル/マトリックスをコピーするエレガントな方法はありますか?

私は次のようなことができることを知っています:

boost::numeric::ublas::vector<double> vector;
double* ptr = &vector[0];

もっとエレガントな方法はありますか?

4

1 に答える 1

1

unbounded_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 に答える