oneapi::mkl::sparse::optimize_trmv#
行列構造を解析して、oneapi::mkl::sparse::trmv 内部を最適化します。
説明#
oneapi::mkl::sparse::optimize_trmv ルーチンは、行列構造を解析して最適化します。最適化されたデータは行列ハンドルに保存されます。
注
スローされる例外の詳細は、エラー処理を参照してください。
API#
構文#
USM および SYCL* バッファーを使用:
namespace oneapi::mkl::sparse {
sycl::event optimize_trmv (
sycl::queue &queue,
oneapi::mkl::uplo uplo_val,
oneapi::mkl::transpose opA,
oneapi::mkl::diag diag_val,
oneapi::mkl::sparse::matrix_handle_t A,
const std::vector<sycl::event> &dependencies = {});
}インクルード・ファイル#
oneapi/mkl/spblas.hpp
入力パラメーター#
- queue
SYCL* カーネルの実行に使用される SYCL* コマンドキューを指定します。
- uplo_val
行列のどの部分を処理するか指定します。
oneapi::mkl::uplo::lower下三角行列部分を処理します。
oneapi::mkl::uplo::upper上三角行列部分を処理します。
- opA
入力行列に対する演算
op()を指定します。oneapi::mkl::transpose::nontrans非転置、\(op(A) = A\)。
oneapi::mkl::transpose::trans転置、\(op(A) = A^{T}\)。
oneapi::mkl::transpose::conjtrans共役転置、\(op(A) = A^{H}\)。
注
現在、
operationでサポートされているはoneapi::mkl::transpose::nontransのみです。- diag_val
計算に使用する対角線の単位を指定します。
oneapi::mkl::diag::nonunit対角要素は 1 と等しくない可能性があります。
oneapi::mkl::diag::unit対角要素は 1 になります。
注
現在、
diag_valでサポートされているはoneapi::mkl::diag::nonunitのみです。- A
スパース行列およびその他の内部データを含むオブジェクトへのハンドル。
oneapi::mkl::sparse::set_<sparse_matrix_type>_dataルーチンの 1 つを使用して作成されます。注
<sparse_matrix_type>でサポートされるケースは、CPU と GPU デバイスではcsr、CPU デバイスではcooのみです。- dependencies
oneapi::mkl::sparse::optimize_trmvルーチンが依存するイベントのリストを含む、std::vector<sycl::event> &タイプのベクトル。
戻り値#
- sycl::event
optimize_trmvルーチンの完了を待機したり、依存関係として追加できる SYCL* イベント。sycl::event ev_opt = sparse::optimize_trmv(queue, uplo_val, opA, diag_val, A); // USM で使用が許可されます sycl::event ev_opt = sparse::optimize_trmv(queue, uplo_val, opA, diag_val, A, {}); // USM で使用が許可されます sycl::event ev_opt = sparse::optimize_trmv(queue, uplo_val, opA, diag_val, A, dependencies); // USM で使用が許可されます sparse::optimize_trmv(queue, uplo_val, opA, diag_val, A); // sycl::buffer での使用が推奨されます static_cast<void>(sparse::optimize_trmv(queue, uplo_val, opA, diag_val, A)); // sycl::buffer での使用が推奨されます (イベントを使用していないことを明示的に指定します - 例で示します) sparse::optimize_trmv(queue, uplo_val, opA, diag_val, A, {}); // sycl::buffer の場合は推奨されませんが、サポートされています sparse::optimize_trmv(queue, uplo_val, opA, diag_val, A, dependencies); // sycl::buffer の場合は推奨されませんが、サポートされています sycl::event ev_opt = sparse::optimize_trmv(queue, uplo_val, opA, diag_val, A); // sycl::buffer でも使用できますが、ほとんどの sycl::buffer oneMKL API では依存関係を渡すことができません