oneapi::mkl::sparse::trmv#
行列の上三角部分または下三角部分に対してスパース行列とデンスベクトルの積を計算します。
説明#
注
サポートされている <DATA_TYPE> と <INT_TYPE> データタイプと整数タイプの一覧については、Sparse BLAS でサポートされているデータと整数タイプを参照してください。また、スローされる可能性のある例外の詳細については、エラー処理を参照してください。
oneapi::mkl::sparse::trmv ルーチンは、次のように定義される三角形部分上のスパース行列とデンスベクトルの積を計算します
ここで、\(\alpha\) と \(\beta\) はスカラー、\(A\) は m 行 m 列の疎な三角行列、\(x\) と \(y\) はサイズ m のデンスベクトルです。演算 \(\text{op}()\) は行列修飾子です:
与えられた行列を下部、対角部、上部に分解 \(A = L + D + U\) する場合、oneapi::mkl::uplo::lower または oneapi::mkl::uplo::upper のいずれかを選択して三角行列ベクトル積を実行すると、oneapi::mkl::diag::nonunit の場合はそれぞれ \(\text{op}(L+D)\) または \(\text{op}(D+U)\) を使用して適切な行列積が実行されます。また、oneapi::mkl::diag::unit を使用する場合は、\(\text{op}(L+I)\) または \(\text{op}(I+U)\) を使用して適切な行列積が実行されます。ここで、\(I\) は単位行列です。
API#
構文#
SYCL* バッファーを使用:
namespace oneapi::mkl::sparse {
void trmv (
sycl::queue &queue,
oneapi::mkl::uplo uplo_val,
oneapi::mkl::transpose opA,
oneapi::mkl::diag diag_val,
const DATA_TYPE alpha,
oneapi::mkl::sparse::matrix_handle_t A,
sycl::buffer<DATA_TYPE, 1> &x,
const DATA_TYPE beta,
sycl::buffer<DATA_TYPE, 1> &y)
}USM ポインターを使用:
namespace oneapi::mkl::sparse {
sycl::event trmv( sycl::queue &queue,
oneapi::mkl::uplo uplo_val,
oneapi::mkl::transpose opA,
oneapi::mkl::diag diag_val,
const DATA_TYPE alpha,
oneapi::mkl::sparse::matrix_handle_t A,
const DATA_TYPE *x,
const DATA_TYPE beta,
DATA_TYPE *y,
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非転置、\(\text{op}(A) = A\)。
oneapi::mkl::transpose::trans転置、\(\text{op}(A) = A^{T}\)。
oneapi::mkl::transpose::conjtrans共役転置、\(\text{op}(A) = A^{H}\)。
注
現在、
operationでサポートされているはoneapi::mkl::transpose::nontransのみです。- diag_val
計算に使用する対角線の単位を指定します。
oneapi::mkl::diag::nonunit対角要素は 1 と等しくない可能性があります。
oneapi::mkl::diag::unit対角要素は 1 になります。
- alpha
スカラー \(\alpha\) を指定します。
- A
スパース行列およびその他の内部データを含むオブジェクトへのハンドル。
oneapi::mkl::sparse::set_<sparse_matrix_type>_dataルーチンの 1 つを使用して作成されます。注
<sparse_matrix_type>でサポートされるケースは、CPU と GPU デバイスではcsr、CPU デバイスではcooのみです。- x
opA=oneapi::mkl::transpose::nontransの場合は少なくとも入力行列の列数に等しく、それ以外の場合は少なくとも入力行列の行数に等しいサイズの SYCL* バッファーまたはデバイスがアクセス可能な USM ポインターです。- beta
スカラー \(\beta\) を指定します。
- y
opA=oneapi::mkl::transpose::nontransの場合は少なくとも入力行列の行数に等しく、それ以外の場合は少なくとも入力行列の列数に等しいサイズの SYCL* バッファーまたはデバイスがアクセス可能な USM ポインターです。- dependencies
oneapi::mkl::sparse::trmvルーチンが依存するイベントのリストを含む、std::vector<sycl::event>タイプのベクトル。
出力パラメーター#
- y
更新されたベクトル \(y\) によって上書きされます。
戻り値 (USM のみ)#
- sycl::event
trmvルーチンの完了を待機したり、依存関係として追加できる SYCL* イベント。
例#
SYCL バッファーで oneapi::mkl::sparse::trmv を使用する例は、oneMKL インストール・ディレクトリーの以下の場所にあります。
share/doc/mkl/examples/sycl/sparse_blas/source/csr_trmv.cpp