0

スパース行列の乗算にcuspを使用しています。結果の行列から、行列をデバイスメモリからホストメモリにコピーせずに最大値が必要になります。結果の行列を推力デバイスポインターでラップし、関数thrust::max_elementを使用して最大要素を取得することを計画しています。行列はcoo形式です。Cが結果のスパース行列の場合、
C.row_indices []:行番号
を含みますC.column_indices []:列番号を含みます
C.values []:実際の値を含みます

したがって、基本的には、C.values配列から最も高い値が必要です。
使用する

thrust::device_ptr<int> dev_ptr = C.values;

エラーが発生しています

error: no instance of constructor "thrust::device_ptr<T>::device_ptr [with T=int]" matches the argument list
 argument types are: (cusp::array1d<float, cusp::host_memory>)

結果のマトリックスをスラストライブラリで使用するためにラップするにはどうすればよいですか?

4

1 に答える 1

1

デバイス マトリックスの定義が次のような場合:

cusp::coo_matrix<int, double, cusp::device_memory> A_d = A;

次に、これを試してください:

thrust::device_ptr<double> dev_ptr = &(A_d.values[0]);
thrust::device_ptr<double> max_ptr = thrust::max_element(dev_ptr, dev_ptr + 6);
于 2012-10-30T15:54:00.923 に答える