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 では依存関係を渡すことができません