omatadd#
オプションの転置を使用して、2 つの一般行列の合計を計算します。
説明
omatadd ルーチンは、引数にオプションの転置を指定して、アウトオブプレースでスケールの行列加算を実行します。操作はのように定義されています。
説明:
op(
X) は、op(X) =X、op(X) =XT、または op(X) =XH のいずれかですalphaとbetaはスカラーですA、B、およびCは行列ですop(
A) はmxn行列ですop(
B) はmxn行列ですCはmxnの行列です
一般に、A、B、C は、次のインプレース操作を除いて、メモリー内で重複してはなりません:
op(A)が非転置かつlda=ldcの場合、AとCは同じメモリーを指すことがあります;
op(B)が非転置かつldb=ldcの場合、BとCは同じメモリーを指すことがあります;
omatadd は次の精度をサポートします。
T |
|---|
|
|
|
|
omatadd (バッファーバージョン)#
構文#
namespace oneapi::mkl::blas::column_major {
void omatadd(sycl::queue &queue,
oneapi::mkl::transpose transa,
oneapi::mkl::transpose transb,
std::int64_t m,
std::int64_t n,
T alpha,
sycl::buffer<T, 1> &a,
std::int64_t lda,
T beta,
sycl::buffer<T, 1> &b,
std::int64_t ldb,
sycl::buffer<T, 1> &c,
std::int64_t ldc)
}namespace oneapi::mkl::blas::row_major {
void omatadd(sycl::queue &queue,
oneapi::mkl::transpose transa,
oneapi::mkl::transpose transb,
std::int64_t m,
std::int64_t n,
T alpha,
sycl::buffer<T, 1> &a,
std::int64_t lda,
T beta,
sycl::buffer<T, 1> &b,
std::int64_t ldb,
sycl::buffer<T, 1> &c,
std::int64_t ldc)
}入力パラメーター#
- queue
ルーチンが実行されるキュー。
- transa
行列 A に適用される転置演算 op(
A) を指定します。- transb
行列 B に適用される転置演算 op(
B) を指定します。- m
結果行列
Cの行数。最小値は 0 です。- n
結果行列
Cの列数。最小値は 0 です。- alpha
行列
Aのスケーリング係数。- a
入力行列
Aを保持するバッファー。alphaが 0 の場合、このバッファーにはアクセスされません。それ以外では、サイズは次の条件を満たす必要があります。transa=transpose::nontranstransa=transpose::transまたはtransa=transpose::conjtrans列優先
Aはmxnの行列です。配列aのサイズはlda*n以上でなければなりませんAはnxmの行列です。配列aのサイズはlda*m以上でなければなりません行優先
Aはmxnの行列です。配列aのサイズはlda*m以上でなければなりませんAはnxmの行列です。配列aのサイズはlda*n以上でなければなりません- lda
行列
Aの先頭次元。正である必要がありますtransa=transpose::nontranstransa=transpose::transまたはtransa=transpose::conjtrans列優先
m以上である必要がありますn以上である必要があります行優先
n以上である必要がありますm以上である必要があります- beta
行列
Bのスケーリング係数。- b
入力行列
Bを保持するバッファー。betaが 0 の場合、このバッファーにはアクセスされません。それ以外では、サイズは次の条件を満たす必要があります。transb=transpose::nontranstransb=transpose::transまたはtransb=transpose::conjtrans列優先
Bはmxnの行列です。配列bのサイズはldb*n以上でなければなりませんBはnxmの行列です。配列bのサイズはldb*m以上でなければなりません行優先
Bはmxnの行列です。配列bのサイズはldb*m以上でなければなりませんBはnxmの行列です。配列bのサイズはldb*n以上でなければなりません- ldb
行列
Bの先頭次元。正である必要があります。transb=transpose::nontranstransb=transpose::transまたはtransb=transpose::conjtrans列優先
m以上である必要がありますn以上である必要があります行優先
n以上である必要がありますm以上である必要があります- ldc
行列
Cの先頭次元。行列が列優先レイアウトで保存される場合、ldcはm以上である必要があります。行列が行優先レイアウトで保存される場合、ldcはn以上である必要があります。正である必要があります。
出力パラメーター#
- c
出力バッファーは
alpha* op(A) +beta* op(B) で上書きされます。列優先
Cはmxnの行列です。配列cのサイズはldc*n以上でなければなりません行優先
Cはmxnの行列です。配列cのサイズはldc*m以上でなければなりません
omatadd (USM バージョン)#
構文#
namespace oneapi::mkl::blas::column_major {
sycl::event omatadd(sycl::queue &queue,
oneapi::mkl::transpose transa,
oneapi::mkl::transpose transb,
std::int64_t m,
std::int64_t n,
oneapi::mkl::value_or_pointer<T> alpha,
const T *a,
std::int64_t lda,
oneapi::mkl::value_or_pointer<T> beta,
const T *b,
std::int64_t ldb,
T *c,
std::int64_t ldc,
const std::vector<sycl::event> &dependencies = {});
}namespace oneapi::mkl::blas::row_major {
sycl::event omatadd(sycl::queue &queue,
oneapi::mkl::transpose transa,
oneapi::mkl::transpose transb,
std::int64_t m,
std::int64_t n,
oneapi::mkl::value_or_pointer<T> alpha,
const T *a,
std::int64_t lda,
oneapi::mkl::value_or_pointer<T> beta,
const T *b,
std::int64_t ldb,
T *c,
std::int64_t ldc,
const std::vector<sycl::event> &dependencies = {});
}入力パラメーター#
- queue
ルーチンが実行されるキュー。
- transa
行列
Aに適用される転置演算 op(A) を指定します。詳細はデータタイプを参照してください。- transb
行列
Bに適用される転置演算 op(B) を指定します。詳細はデータタイプを参照してください。- m
結果行列
Cの行数。最小値は 0 です。- n
結果行列
Cの列数。最小値は 0 です。- alpha
行列
Aのスケーリング係数。value_or_pointerデータタイプの詳細については、スカラー引数を参照してください。- a
入力行列
Aへのポインター。行列ストレージを参照してください。alphaが 0 の場合、aはアクセスされず、null ポインターになる可能性があります。それ以外では、次の条件を満たす必要があります。transa=transpose::nontranstransa=transpose::transまたはtransa=transpose::conjtrans列優先
Aはmxnの行列です。配列aのサイズはlda*n以上でなければなりませんAはnxmの行列です。配列aのサイズはlda*m以上でなければなりません行優先
Aはmxnの行列です。配列aのサイズはlda*m以上でなければなりませんAはnxmの行列です。配列aのサイズはlda*n以上でなければなりません- lda
行列
Aの先頭次元。正である必要がありますtransa=transpose::nontranstransa=transpose::transまたはtransa=transpose::conjtrans列優先
m以上である必要がありますn以上である必要があります行優先
n以上である必要がありますm以上である必要があります- beta
行列
Bのスケーリング係数。value_or_pointerデータタイプの詳細については、スカラー引数を参照してください。- b
入力行列
Bへのポインター。行列ストレージを参照してください。betaが 0 の場合、bはアクセスされず、null ポインターになる可能性があります。それ以外では、次の条件を満たす必要があります。transb=transpose::nontranstransb=transpose::transまたはtransb=transpose::conjtrans列優先
Bはmxnの行列です。配列bのサイズはldb*n以上でなければなりませんBはnxmの行列です。配列bのサイズはldb*m以上でなければなりません行優先
Bはmxnの行列です。配列bのサイズはldb*m以上でなければなりませんBはnxmの行列です。配列bのサイズはldb*n以上でなければなりません- ldb
行列
Bの先頭次元。正である必要があります。transb=transpose::nontranstransb=transpose::transまたはtransb=transpose::conjtrans列優先
m以上である必要がありますn以上である必要があります行優先
n以上である必要がありますm以上である必要があります- ldc
行列
Cの先頭次元。行列が列優先レイアウトで保存される場合、ldcはm以上である必要があります。行列が行優先レイアウトで保存される場合、ldcはn以上である必要があります。正である必要があります。- dependencies
計算を開始する前に待機するイベントのリスト (存在する場合)。省略した場合、依存関係はデフォルトでなくなります。
出力パラメーター#
- c
alpha* op(A) +beta* op(B) で上書きされた出力行列へのポインター。列優先
Cはmxnの行列です。配列cのサイズはldc*n以上でなければなりません行優先
Cはmxnの行列です。配列cのサイズはldc*m以上でなければなりません
戻り値#
計算が完了したことを確認するために待機する出力イベント。