symm#
1 つの入力行列が対称行列で、もう 1 つの入力行列が一般行列である行列-行列積を計算します。
説明
symm ルーチンは、スカラー - 行列 - 行列積を計算し、その結果をスカラー - 行列積に加算します。ここで、乗算の行列の 1 つは対称です。引数 left_right は、対称行列 A が乗算の左辺にあるか (left_right = side::left)、右辺にあるか (left_right = side::right) を決定します。操作はのように定義されています。
(left_right = side::left) である場合は、
(left_right = side::right) である場合は、
説明:
alphaとbetaはスカラーですAはmxmまたはnxnの対称行列ですBおよびCはmxnの行列です
symm は次の精度をサポートします。
T |
|---|
|
|
|
|
symm (バッファーバージョン)#
構文#
namespace oneapi::mkl::blas::column_major {
void symm(sycl::queue &queue,
oneapi::mkl::side left_right,
oneapi::mkl::uplo upper_lower,
std::int64_t m,
std::int64_t n,
T alpha,
sycl::buffer<T,1> &a,
std::int64_t lda,
sycl::buffer<T,1> &b,
std::int64_t ldb,
T beta,
sycl::buffer<T,1> &c,
std::int64_t ldc,
compute_mode mode = compute_mode::unset)
}namespace oneapi::mkl::blas::row_major {
void symm(sycl::queue &queue,
oneapi::mkl::side left_right,
oneapi::mkl::uplo upper_lower,
std::int64_t m,
std::int64_t n,
T alpha,
sycl::buffer<T,1> &a,
std::int64_t lda,
sycl::buffer<T,1> &b,
std::int64_t ldb,
T beta,
sycl::buffer<T,1> &c,
std::int64_t ldc,
compute_mode mode = compute_mode::unset)
}入力パラメーター#
- queue
ルーチンを実行するキュー。
- left_right
行列
Aが乗算の左辺にあるか右辺にあるかを指定します。詳細はデータタイプを参照してください。- upper_lower
行列
Aが上三角行列か下三角行列であるかを指定します。詳細はデータタイプを参照してください。- m
行列
Bと行列Cの行数。最小値は 0 です。- n
行列
B) と行列Cの列数。最小値は 0 です。- alpha
行列 - 行列積のスケーリング係数。
- a
入力行列
Aを保持するバッファー。バッファーのサイズは、left_right=side::leftの場合はlda*m以上、left_right=side::rightの場合はlda*nである必要があります。行列ストレージを参照してください。- lda
行列
Aの先頭次元。left_right=side::leftの場合はm以上、left_right=side::rightの場合はn以上である必要があります。正である必要があります。- b
入力行列
Bを保持するバッファー。バッファーのサイズは、列優先レイアウトの場合はldb*n以上、行優先レイアウトの場合はldb*m以上である必要があります。行列ストレージを参照してください。- ldb
行列
Bの先頭次元。列優先レイアウトの場合はm以上、行優先レイアウトの場合はn以上である必要があります。正である必要があります。- beta
行列
Cのスケーリング係数。- c
入力/出力行列
Cを保持するバッファー。バッファーのサイズは、列優先レイアウトの場合はldc*n以上、行優先レイアウトの場合はldc*m以上である必要があります。行列ストレージを参照してください。- ldc
行列
Cの先頭次元。列優先レイアウトの場合はm以上、行優先レイアウトの場合はn以上である必要があります。正である必要があります。- mode
オプション。計算モードの設定。計算モードを参照してください。
出力パラメーター#
- c
出力バッファーは、
left_right=side::leftの場合はalpha*A*B+beta*Cで上書きされ、left_right=side::rightの場合はalpha*B*A+beta*Cで上書きされます。注
beta= 0 の場合、symmを呼び出す前に行列Cを初期化する必要はありません。
symm (USM バージョン)#
構文#
namespace oneapi::mkl::blas::column_major {
sycl::event symm(sycl::queue &queue,
oneapi::mkl::side left_right,
oneapi::mkl::uplo upper_lower,
std::int64_t m,
std::int64_t n,
oneapi::mkl::value_or_pointer<T> alpha,
const T *a,
std::int64_t lda,
const T *b,
std::int64_t ldb,
oneapi::mkl::value_or_pointer<T> beta, T *c,
std::int64_t ldc,
compute_mode mode = compute_mode::unset,
const std::vector<sycl::event> &dependencies = {})
}namespace oneapi::mkl::blas::row_major {
sycl::event symm(sycl::queue &queue,
oneapi::mkl::side left_right,
oneapi::mkl::uplo upper_lower,
std::int64_t m,
std::int64_t n,
oneapi::mkl::value_or_pointer<T> alpha,
const T *a,
std::int64_t lda,
const T *b,
std::int64_t ldb,
oneapi::mkl::value_or_pointer<T> beta,
T *c, std::int64_t ldc,
compute_mode mode = compute_mode::unset,
const std::vector<sycl::event> &dependencies = {})
}入力パラメーター#
- queue
ルーチンを実行するキュー。
- left_right
行列
Aが乗算の左辺にあるか右辺にあるかを指定します。詳細はデータタイプを参照してください。- upper_lower
行列
Aが上三角行列か下三角行列であるかを指定します。詳細はデータタイプを参照してください。- m
行列
Bと行列Cの行数。最小値は 0 です。- n
行列
B) と行列Cの列数。最小値は 0 です。- alpha
行列 - 行列積のスケーリング係数。
value_or_pointerデータタイプの詳細については、スカラー引数を参照してください。- a
入力行列
Aへのポインター。配列のサイズは、left_right=side::leftの場合はlda*m以上、left_right=side::rightの場合はlda*nである必要があります。行列ストレージを参照してください。- lda
行列
Aの先頭次元。left_right=side::leftの場合はm以上、left_right=side::rightの場合はn以上である必要があります。正である必要があります。- b
入力行列
Bへのポインター。配列のサイズは、列優先レイアウトの場合はldb*n以上、行優先レイアウトの場合はldb*m以上である必要があります。行列ストレージを参照してください。- ldb
行列
Bの先頭次元。列優先レイアウトの場合はm以上、行優先レイアウトの場合はn以上である必要があります。正である必要があります。- beta
行列
Cのスケーリング係数。value_or_pointerデータタイプの詳細については、スカラー引数を参照してください。- c
入力/出力行列
Cへのポインター。配列のサイズは、列優先レイアウトの場合はldc*n以上、行優先レイアウトの場合はldc*m以上である必要があります。行列ストレージを参照してください。- ldc
行列
Cの先頭次元。列優先レイアウトの場合はm以上、行優先レイアウトの場合はn以上である必要があります。正である必要があります。- mode
オプション。計算モードの設定。計算モードを参照してください。
- dependencies
オプション。計算を開始する前に待機するイベントのリスト (存在する場合)。省略した場合、依存関係はデフォルトでなくなります。
modeとdependenciesはそれぞれ省略できます。dependencies を提供するのにmodeを指定する必要はありません。
出力パラメーター#
- c
left_right=side::leftの場合は、alpha*A*B+beta*Cで上書きされ、left_right=side::rightの場合はalpha*B*A+beta*Cで上書きされる出力行列へのポインター。注
beta= 0 の場合、symmを呼び出す前に行列Cを初期化する必要はありません。
戻り値#
計算が完了したことを確認するために待機する出力イベント。