oneapi::mkl::sparse::omatcopy#
スパース行列の形式を変更せずに、行列ハンドル内のユーザーデータを新しいハンドル内のユーザーデータにアウトオブプレースでコピー/転置します。
説明#
oneapi::mkl::sparse::omatcopy API は、特定のスパース行列ハンドルに格納されているユーザー指定のスパース行列配列を、別のスパース行列ハンドルの配列にコピーします。このルーチンを使用すると、ユーザーはコピー内で転置操作や配列インデックスを変更できます。この API では、アウトオブプレースのコピー/転置のみがサポートされます。
注
スローされる例外の詳細は、エラー処理を参照してください。
注
このルーチンは、行列ハンドル作成ルーチン oneapi::mkl::sparse::set_<sparse_matrix_type>_data を通じて oneMKL に提供される配列を操作します。出力行列ハンドルの配列のみが変更され、入力ハンドルの配列は変更されません。
API#
構文#
USM および SYCL* バッファーを使用:
namespace oneapi::mkl::sparse {
sycl::event omatcopy (
sycl::queue &queue,
oneapi::mkl::transpose transpose_val,
oneapi::mkl::sparse::matrix_handle_t spMat_in,
oneapi::mkl::sparse::matrix_handle_t spMat_out,
const std::vector<sycl::event> &dependencies = {});
}インクルード・ファイル#
oneapi/mkl/spblas.hpp
入力パラメーター#
- queue
SYCL* カーネルの実行に使用される SYCL* コマンドキューを指定します。
- transpose_val
入力行列に対する演算
op()を指定します。- oneapi::mkl::transpose::nontrans
非転置、
op(A)=A。
- oneapi::mkl::transpose::trans
転置、
op(A)=AT。
- oneapi::mkl::transpose::conjtrans
共役転置、
op(A)=AH。
- spMat_in
入力スパース行列およびその他の内部データを含むオブジェクトへのハンドル。
oneapi::mkl::sparse::set_<sparse_matrix_type>_dataルーチンの 1 つを使用して作成されます。注
<sparse_matrix_type>でサポートされているケースは、CPU と GPU デバイスの両方でcsrとcooです。spMat_outは同じ<sparse_matrix_type>で作成する必要があります。- spMat_out
出力スパース行列およびその他の内部データを含むオブジェクトへのハンドル。
oneapi::mkl::sparse::set_<sparse_matrix_type>_dataルーチンの 1 つを使用して作成されます。oneapi::mkl::transpose::nontrans操作の場合、この出力ハンドルのスパース行列の次元/配列の長さは入力ハンドルと同じである必要があることに注意してください。oneapi::mkl::transpose::transおよびoneapi::mkl::transpose::conjtrans操作の出力行列ハンドルの行数と列数は、入力行列ハンドルの列数と行数と同じである必要があります。また、転置演算の場合、スパース行列内の非ゼロの数は変更されません。注
<sparse_matrix_type>でサポートされているケースは、CPU と GPU デバイスの両方でcsrとcooです。spMat_inは同じ<sparse_matrix_type>で作成する必要があります。- dependencies
oneapi::mkl::sparse::omatcopyルーチンが依存するイベントのリストを含む、std::vector<sycl::event> &タイプのベクトル。
戻り値#
sycl::eventomatcopyルーチンの完了を待機したり、依存関係として追加できる SYCL* イベント。// API 引数と使用例 sycl::event ev_opt = sparse::omatcopy(queue, trans_val, spMat_in, spMat_out); // USM で許可 sycl::event ev_opt = sparse::omatcopy(queue, trans_val, spMat_in, spMat_out, {}); // USM で許可 sycl::event ev_opt = sparse::omatcopy(queue, trans_val, spMat_in, spMat_out, dependencies); // USM で許可 sparse::omatcopy(queue, trans_val, spMat_in, spMat_out); // sycl::buffer で推奨 sparse::omatcopy(queue, trans_val, spMat_in, spMat_out, {}); // sycl::buffer の場合は推奨されませんが、サポートされています。 sparse::omatcopy(queue, trans_val, spMat_in, spMat_out, dependencies); // sycl::buffer の場合は推奨されませんが、サポートされています。 sycl::event ev_opt = sparse::omatcopy(queue, trans_val, spMat_in, spMat_out); // sycl::buffer の場合は推奨されませんが、サポートされています。ほとんどの sycl::buffer oneMKL API には依存関係を渡す機能がないことに注意してください。