oneapi::mkl::sparse::set_matmat_data#
実行される sparse::matmat 操作を反映する oneapi::mkl::sparse::matmat_descr_t オブジェクト内の oneapi::mkl::sparse::matrix_view_descr および oneapi::mkl::transpose の値を設定します。\(C = \text{op}(A) \cdot \text{op}(B)\).
説明#
oneapi::mkl::sparse::set_matmat_data ルーチンを使用すると、ユーザーは、sparse::matmat ルーチンで使用される oneapi::mkl::sparse::matmat_descr_t オブジェクト内のスパース行列 - スパース行列演算を設定できます。
列挙のクラス oneapi::mkl::sparse::matrix_view_descr は、oneapi/mkl/spblas.hppヘッダーファイルで定義されています。
namespace oneapi::mkl::sparse {
enum class matrix_view_descr : std::int32_t {
general
};
}一般ビューでは、行列の下部、対角部分、上部のすべてのデータが sparse::matrix_handle_t オブジェクトに入力されていると想定されます。matmat 記述子の一般的な使用モデルは次のとおりです:
using namespace oneapi::mkl;
sparse::matmat_descr_t descr = nullptr;
sparse::init_matmat_descr(&descr);
// 一般的な記述例
// C = A * B
sparse::matrix_view_descr viewA = sparse::matrix_view_descr::general;
sparse::matrix_view_descr viewB = sparse::matrix_view_descr::general;
sparse::matrix_view_descr viewC = sparse::matrix_view_descr::general;
transpose opA = transpose::nontrans;
transpose opB = transpose::nontrans;
sparse::set_matmat_data(descr, viewA, opA, viewB, opB, viewC);
// sparse::matmat() API で descr を使用
sparse::release_matmat_descr(&descr);API#
構文#
namespace oneapi::mkl::sparse {
void set_matmat_descr (
sparse::matmat_descr_t descr,
sparse::matrix_view_descr viewA,
transpose opA,
sparse::matrix_view_descr viewB,
transpose opB,
sparse::matrix_view_descr viewC);
}インクルード・ファイル#
oneapi/mkl/spblas.hpp
入力パラメーター#
- viewA、viewB、viewC
sparse::matrix_view_descr列挙値は、\(A\)、\(B\) および \(C\) 行列の表現方法を記述します。現在は一般タイプのみがサポートされています。- opA, opB
入力行列に対する演算
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}\)。
注
現在、サポートされている操作は
oneapi::mkl::transpose::nontransのみです。
出力パラメーター#
- descr
sparse::matmat_descr_tオブジェクトは、sparse::matmat ルーチンによって実行されるスパース行列 - スパース行列演算を定義するために使用されます。