oneapi::mkl::sparse::matmatd#
スパース行列とスパース行列の積を計算し、密 (デンス) な結果を生成します。
説明#
注
サポートされている <DATA_TYPE> と <INT_TYPE> データタイプと整数タイプの一覧については、Sparse BLAS でサポートされているデータと整数タイプを参照してください。また、スローされる可能性のある例外の詳細については、エラー処理を参照してください。
oneapi::mkl::sparse::matmatd ルーチンは、スパース行列とスパース行列の積を計算し、デンス行列の結果は次のように定義されます
説明: \(\alpha\) と \(\beta\) はスカラー、\(A\) と \(B\) はスパース行列、\(C\) は c_nrows 行 c_ncols 列のデンス行列、\(\text{op()}\) は A と B に対する次の記述を使用する行列修飾子です:
デンス行列オブジェクト C は、行優先または列優先のレイアウトで格納されます。スパース行列オブジェクト A と B には、行列積に適切な数の行と列があります。
API#
構文
SYCL* バッファーを使用:
namespace oneapi::mkl::sparse {
void matmatd(sycl::queue &queue,
oneapi::mkl::layout c_layout,
oneapi::mkl::transpose opA,
oneapi::mkl::transpose opB,
const DATA_TYPE alpha,
matrix_handle_t A, matrix_handle_t B,
const DATA_TYPE beta,
sycl::buffer<DATA_TYPE, 1> &C const std::int64_t c_nrows,
const std::int64_t c_ncols,
const std::int64_t ldc);
}USM ポインターを使用:
namespace oneapi::mkl::sparse {
sycl::event matmatd( sycl::queue &queue,
oneapi::mkl::layout c_layout,
oneapi::mkl::transpose opA,
oneapi::mkl::transpose opB,
const DATA_TYPE alpha,
matrix_handle_t A,
matrix_handle_t B,
const DATA_TYPE beta,
DATA_TYPE *C, const std::int64_t c_nrows,
const std::int64_t c_ncols,
const std::int64_t ldc,
const std::vector<sycl::event> &dependencies = {});
}インクルード・ファイル#
oneapi/mkl/spblas.hpp
入力パラメーター#
- queue
SYCL* カーネルの実行に使用される SYCL* コマンドキューを指定します。
- c_layout
デンス行列
Cのメモリー内の保存方式を指定します。- opA
入力行列
Aに対する演算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}\)。
- opB
入力行列
Bに対する演算op()を指定します。oneapi::mkl::transpose::nontrans非転置、\(\text{op}(B) = B\)。
oneapi::mkl::transpose::trans転置、\(\text{op}(B) = B^{T}\)。
oneapi::mkl::transpose::conjtrans共役転置、\(\text{op}(B) = B^{H}\)。
- alpha
スカラー \(\alpha\) を指定します。
- A
スパース行列およびその他の内部データを含むオブジェクトへのハンドル。
oneapi::mkl::sparse::set_<sparse_matrix_type>_dataルーチンの 1 つを使用して作成されます。注
現在
<sparse_matrix_type>でサポートされているはcsrのみです。- B
スパース行列およびその他の内部データを含むオブジェクトへのハンドル。
oneapi::mkl::sparse::set_<sparse_matrix_type>_dataルーチンの 1 つを使用して作成されます。注
現在
<sparse_matrix_type>でサポートされているはcsrのみです。- beta
スカラー \(\beta\) を指定します。
- C
SYCL* バッファーまたはデバイスアクセス可能な USM ポインターのサイズは
rows*cols以上です。説明:layout=oneapi::mkl::layout::col_majorlayout=oneapi::mkl::layout::row_major行数 (
Cの行数)ldc
c_ncols
cols (cols(Cの列数) の列数)
c_nrows
ldc
- c_nrows
行列
Cの行数。- c_ncols
行列
Cの列数。- ldc
C行列の先頭次元を指定します。正の数値で、c_layout=oneapi::mkl::layout::row_majorの場合c_ncols以上で、c_layout=oneapi::mkl::layout::col_majorの場合c_nrows以上である必要があります。- dependencies
oneapi::mkl::sparse::matmatdルーチンが依存するイベントのリストを含む、std::vector<sycl::event>タイプのベクトル。
出力パラメーター#
- C
更新された行列
Cによって上書きされます。
戻り値 (USM のみ)#
- sycl::event
matmatdルーチンの完了を待機したり、依存関係として追加される SYCL* イベント。
例#
SYCL* バッファーまたは USM ポインターで oneapi::mkl::sparse::matmatd を使用する例は、oneMKL インストール・ディレクトリーの以下の場所にあります。
share/doc/mkl/examples/sycl/sparse_blas/source/csr_matmatd.cppshare/doc/mkl/examples/sycl/sparse_blas/source/csr_matmatd_usm.cpp