oneapi::mkl::sparse::gemv#

スパース行列とデンスベクトルの積を計算します。

説明#

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

oneapi::mkl::sparse::gemv ルーチンは、次のように定義されるスパース行列とデンスベクトルの積を計算します

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

ここで、\(\alpha\)\(\beta\) はスカラー、\(A\)num_rowsnum_cols 列の一般スパース行列、\(op()\) は行列修飾子です:

\[\begin{split}\text{op}(A) = \begin{cases} A,& \text{ oneapi::mkl::transpose::nontrans}\\ A^{T},& \text{ oneapi::mkl::transpose::trans}\\A^{H},& \text{ oneapi::mkl::transpose::conjtrans} \end{cases}\end{split}\]

デンスベクトル \(x\)\(y\) は、\(\text{op}(A)\) の行列積次元に基づいて適切なサイズになります。

API#

構文#

SYCL* バッファーを使用:

namespace oneapi::mkl::sparse { 
    void gemv ( 
        sycl::queue &queue, 
        oneapi::mkl::transpose opA, 
        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 gemv ( 
        sycl::queue &queue, 
        oneapi::mkl::transpose opA, 
        const DATA_TYPE alpha, 
        oneapi::mkl::sparse::matrix_handle_t A, 
        const DATA_TYPE *x, 
        DATA_TYPE beta, 
        DATA_TYPE *y, 
        const std::vector<sycl::event> &dependencies= {}) 
}

インクルード・ファイル#

  • oneapi/mkl/spblas.hpp

入力パラメーター#

queue

SYCL* カーネルの実行に使用される SYCL* コマンドキューを指定します。

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}\)

alpha

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

A

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

<sparse_matrix_type> でサポートされているケースは、CPU と GPU デバイスの両方で csrcoo です。

x

opA = oneapi::mkl::transpose::nontrans の場合は少なくとも入力行列の列数に等しく、それ以外の場合は少なくとも入力行列の行数に等しいサイズの SYCL* バッファーまたはデバイスがアクセス可能な USM ポインターです。

beta

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

y

opA = oneapi::mkl::transpose::nontrans の場合は少なくとも入力行列の行数に等しく、それ以外の場合は少なくとも入力行列の列数に等しいサイズの SYCL* バッファーまたはデバイスがアクセス可能な USM ポインターです。

dependencies

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

出力パラメーター#

y

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

戻り値 (USM のみ)#

sycl::event

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

#

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

share/doc/mkl/examples/sycl/sparse_blas/source/coo_gemv.cpp
share/doc/mkl/examples/sycl/sparse_blas/source/csr_gemv_usm.cpp