oneapi::mkl::sparse::symv#

入力行列の下三角または上三角から構築された対称行列のスパース行列とデンスベクトルの積を計算します。

説明#

サポートされている <DATA_TYPE><INT_TYPE> データタイプと整数タイプの一覧については、Sparse BLAS でサポートされているデータと整数タイプを参照してください。また、スローされる可能性のある例外の詳細については、エラー処理を参照してください。

oneapi::mkl::sparse::symv ルーチンは、次のように定義される入力行列 \(A\) の下三角部分または上三角部分から構築された実対称行列の疎対称行列とデンスベクトルの積を計算します

\[y \leftarrow \alpha\cdot \text{sym}(A)\cdot x + \beta \cdot y\]

ここで、\(\alpha\)\(\beta\) はスカラー、\(A\)\(m\) 行と列の次元を持つ実数値の正方スパース行列、\(\text{sym}()\)oneapi::mkl::uplo 値に従って行列を対称化する行列修飾子、\(x\)\(y\) はデンスベクトルです。

与えられた行列を下部、対角部、上部に分解 \(A = L+D+U\) する場合、oneapi::mkl::uplo::lower を選択した symv ルーチンは \(\text{sym}(A) = L+D+L^T\) を使用して行列積を実行し、oneapi::mkl::uplo::upper を選択した場合は \(\text{sym}(A) = U^T+D+U\) を使用して行列積を求めます。

API#

構文

SYCL* バッファーを使用:

namespace oneapi::mkl::sparse { 
    void symv ( 
        sycl::queue &queue, 
        oneapi::mkl::uplo uplo_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 symv ( 
        sycl::queue &queue, 
        oneapi::mkl::uplo uplo_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

上部は対称形の製品に使用されます。

alpha

スカラー \(\alpha\) を指定します。

A

スパース行列およびその他の内部データを含むオブジェクトへのハンドル。oneapi::mkl::sparse::set_<sparse_matrix_type>_data ルーチンの 1 つを使用して作成されます。

現在、<sparse_matrix_type> でサポートされているは csr のみです。

x

入力行列の列数 \(m\) と等しいサイズ以上の SYCL* バッファーまたはデバイスがアクセス可能な USM ポインター。

beta

スカラー \(\beta\) を指定します。

y

入力行列の行数 \(m\) 以上のサイズの SYCL* バッファーまたはデバイスがアクセス可能な USM ポインター。

dependencies

oneapi::mkl::sparse::symv ルーチンが依存するイベントのリストを含む、std::vector<sycl::event> タイプのベクトル。

出力パラメーター#

y

更新されたベクトル \(y\) によって上書きされます。

戻り値 (USM のみ)#

sycl::event

symv ルーチンの完了を待機したり、依存関係として追加できる SYCL* イベント。

#

SYCL バッファーで oneapi::mkl::sparse::symv を使用する例は、oneMKL インストール・ディレクトリーの以下の場所にあります。

share/doc/mkl/examples/sycl/sparse_blas/source/csr_symv.cpp