trmm#
1 つの入力行列が三角行列で、もう 1 つの入力行列が一般行列である行列 - 行列積を計算します。
説明#
trmm ルーチンは、乗算の行列の 1 つが三角行列であるスカラー - 行列積を計算します。引数 left_right は、三角行列 A が乗算の左辺にあるか (left_right = side::left)、右辺にあるか (left_right = side::right) を決定します。
使用できる操作には、インプレース操作とアウトオブプレース操作の 2 つがあります。インプレース操作は次のように定義されています。
(left_right = side::left) である場合は、
(left_right = side::right) である場合は、
アウトオブプレース操作は次のように定義されています。
(left_right = side::left) である場合は、
(left_right = side::right) である場合は、
説明:
op(
A) は、op(A) =A、op(A) =AT、または op(A) =AH のいずれかですalphaとbetaはスカラーですAはmxmまたはnxnの三角行列ですBは、mxnの一般行列ですCは、mxnの一般行列です
trmm は次の精度をサポートします。
T |
|---|
|
|
|
|
trmm (バッファーバージョン)#
インプレース API#
構文#
namespace oneapi::mkl::blas::column_major {
void trmm(sycl::queue &queue,
oneapi::mkl::side left_right,
oneapi::mkl::uplo upper_lower,
oneapi::mkl::transpose trans,
oneapi::mkl::diag unit_diag,
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,
compute_mode mode = compute_mode::unset)
}namespace oneapi::mkl::blas::row_major {
void trmm(sycl::queue &queue,
oneapi::mkl::side left_right,
oneapi::mkl::uplo upper_lower,
oneapi::mkl::transpose trans,
oneapi::mkl::diag unit_diag,
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,
compute_mode mode = compute_mode::unset)
}入力パラメーター#
- queue
ルーチンが実行されるキュー。
- left_right
行列
Aが乗算の左辺にあるか右辺にあるかを指定します。詳細はデータタイプを参照してください。- upper_lower
行列
Aが上三角行列か下三角行列であるかを指定します。詳細はデータタイプを参照してください。- trans
行列
Aに適用される転置演算 op(A) を指定します。詳細はデータタイプを参照してください。- unit_diag
行列
Aが単位三角行列であるかどうかを指定します。詳細はデータタイプを参照してください。- m
行列
Bの行数。最小値は 0 です。- n
行列
Bの列数。最小値は 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以上である必要があります。正である必要があります。- mode
オプション。計算モードの設定。詳細は、計算モードを参照してください。
出力パラメーター#
- b
出力バッファーは、
left_right=side::leftの場合はalpha* op(A) *Bで上書きされ、left_right=side::rightの場合はalpha*B* op(A) で上書きされます。注
alpha= 0 の場合、行列Bはゼロに設定され、AとBはエントリー時に初期化する必要はありません。
アウトオブプレース API#
構文#
namespace oneapi::mkl::blas::column_major {
void trmm(sycl::queue &queue,
oneapi::mkl::side left_right,
oneapi::mkl::uplo upper_lower,
oneapi::mkl::transpose trans,
oneapi::mkl::diag unit_diag,
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 trmm(sycl::queue &queue,
oneapi::mkl::side left_right,
oneapi::mkl::uplo upper_lower,
oneapi::mkl::transpose trans,
oneapi::mkl::diag unit_diag,
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が上三角行列か下三角行列であるかを指定します。詳細はデータタイプを参照してください。- trans
行列
Aに適用される転置演算 op(A) を指定します。詳細はデータタイプを参照してください。- unit_diag
行列
Aが単位三角行列であるかどうかを指定します。詳細はデータタイプを参照してください。- m
行列
Bの行数。最小値は 0 です。- n
行列
Bの列数。最小値は 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* op(A) *B+beta*Cで上書きされ、left_right=side::rightの場合はalpha*B* op(A) +beta*Cで上書きされます。
trmm (USM バージョン)#
インプレース API#
構文#
namespace oneapi::mkl::blas::column_major {
sycl::event trmm(sycl::queue &queue,
oneapi::mkl::side left_right,
oneapi::mkl::uplo upper_lower,
oneapi::mkl::transpose trans,
oneapi::mkl::diag unit_diag,
std::int64_t m,
std::int64_t n,
oneapi::mkl::value_or_pointer<T> alpha,
const T *a,
std::int64_t lda,
T *b,
std::int64_t ldb,
compute_mode mode = compute_mode::unset,
const std::vector<sycl::event> &dependencies = {})
}namespace oneapi::mkl::blas::row_major {
sycl::event trmm(sycl::queue &queue,
oneapi::mkl::side left_right,
oneapi::mkl::uplo upper_lower,
oneapi::mkl::transpose trans,
oneapi::mkl::diag unit_diag,
std::int64_t m,
std::int64_t n,
oneapi::mkl::value_or_pointer<T> alpha,
const T *a,
std::int64_t lda,
T *b,
std::int64_t ldb,
compute_mode mode = compute_mode::unset,
const std::vector<sycl::event> &dependencies = {})
}入力パラメーター#
- queue
ルーチンが実行されるキュー。
- left_right
行列
Aが乗算の左辺にあるか右辺にあるかを指定します。詳細はデータタイプを参照してください。- upper_lower
行列
Aが上三角行列か下三角行列であるかを指定します。詳細はデータタイプを参照してください。- trans
行列
Aに適用される転置演算 op(A) を指定します。詳細はデータタイプを参照してください。- unit_diag
行列
Aが単位三角行列であるかどうかを指定します。詳細はデータタイプを参照してください。- m
行列
Bの行数。最小値は 0 です。- n
行列
Bの列数。最小値は 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以上である必要があります。正である必要があります。- mode
オプション。計算モードの設定。詳細は、計算モードを参照してください。
- dependencies
オプション。計算を開始する前に待機するイベントのリスト (存在する場合)。省略した場合、依存関係はデフォルトでなくなります。
modeとdependenciesはそれぞれ省略できます。dependencies を提供するのにmodeを指定する必要はありません。
出力パラメーター#
- b
left_right=side::leftの場合は、alpha* op(A) *Bで上書きされ、left_right=side::rightの場合はalpha*B* op(A) で上書きされる出力行列へのポインター。注
alpha= 0 の場合、行列Bはゼロに設定され、AとBはエントリー時に初期化する必要はありません。
戻り値#
計算が完了したことを確認するために待機する出力イベント。
アウトオブプレース API#
構文#
namespace oneapi::mkl::blas::column_major {
sycl::event trmm(sycl::queue &queue,
oneapi::mkl::side left_right,
oneapi::mkl::uplo upper_lower,
oneapi::mkl::transpose trans,
oneapi::mkl::diag unit_diag,
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 trmm(sycl::queue &queue,
oneapi::mkl::side left_right,
oneapi::mkl::uplo upper_lower,
oneapi::mkl::transpose trans,
oneapi::mkl::diag unit_diag,
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が上三角行列か下三角行列であるかを指定します。詳細はデータタイプを参照してください。- trans
行列
Aに適用される転置演算 op(A) を指定します。詳細はデータタイプを参照してください。- unit_diag
行列
Aが単位三角行列であるかどうかを指定します。詳細はデータタイプを参照してください。- m
行列
Bの行数。最小値は 0 です。- n
行列
Bの列数。最小値は 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* op(A) *B+beta*Cで上書きされ、left_right=side::rightの場合はalpha*B* op(A) +beta*Cで上書きされる出力行列へのポインター。
戻り値#
計算が完了したことを確認するために待機する出力イベント。