omatadd#

オプションの転置を使用して、2 つの一般行列の合計を計算します。

説明

omatadd ルーチンは、引数にオプションの転置を指定して、アウトオブプレースでスケールの行列加算を実行します。操作はのように定義されています。

\[C \leftarrow alpha*op(A) + beta*op(B)\]

説明:

  • op(X) は、op(X) = X、op(X) = XT、または op(X) = XH のいずれかです

  • alphabeta はスカラーです

  • AB、および C は行列です

  • op(A) は m x n 行列です

  • op(B) は m x n 行列です

  • Cm x n の行列です

一般に、ABC は、次のインプレース操作を除いて、メモリー内で重複してはなりません:

  • op(A) が非転置かつ lda = ldc の場合、AC は同じメモリーを指すことがあります;

  • op(B) が非転置かつ ldb = ldc の場合、BC は同じメモリーを指すことがあります;

omatadd は次の精度をサポートします。

T

float

double

std::complex<float>

std::complex<double>

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::nontrans

transa = transpose::trans または transa = transpose::conjtrans

列優先

Am x n の行列です。配列 a のサイズは lda * n 以上でなければなりません

An x m の行列です。配列 a のサイズは lda * m 以上でなければなりません

行優先

Am x n の行列です。配列 a のサイズは lda * m 以上でなければなりません

An x m の行列です。配列 a のサイズは lda * n 以上でなければなりません

lda

行列 A の先頭次元。正である必要があります

transa = transpose::nontrans

transa = transpose::trans または transa = transpose::conjtrans

列優先

m 以上である必要があります

n 以上である必要があります

行優先

n 以上である必要があります

m 以上である必要があります

beta

行列 B のスケーリング係数。

b

入力行列 B を保持するバッファー。beta が 0 の場合、このバッファーにはアクセスされません。それ以外では、サイズは次の条件を満たす必要があります。

transb = transpose::nontrans

transb = transpose::trans または transb = transpose::conjtrans

列優先

Bm x n の行列です。配列 b のサイズは ldb * n 以上でなければなりません

Bn x m の行列です。配列 b のサイズは ldb * m 以上でなければなりません

行優先

Bm x n の行列です。配列 b のサイズは ldb * m 以上でなければなりません

Bn x m の行列です。配列 b のサイズは ldb * n 以上でなければなりません

ldb

行列 B の先頭次元。正である必要があります。

transb = transpose::nontrans

transb = transpose::trans または transb = transpose::conjtrans

列優先

m 以上である必要があります

n 以上である必要があります

行優先

n 以上である必要があります

m 以上である必要があります

ldc

行列 C の先頭次元。行列が列優先レイアウトで保存される場合、ldcm 以上である必要があります。行列が行優先レイアウトで保存される場合、ldcn 以上である必要があります。正である必要があります。

出力パラメーター#

c

出力バッファーは alpha * op(A) + beta * op(B) で上書きされます。

列優先

Cm x n の行列です。配列 c のサイズは ldc * n 以上でなければなりません

行優先

Cm x n の行列です。配列 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::nontrans

transa = transpose::trans または transa = transpose::conjtrans

列優先

Am x n の行列です。配列 a のサイズは lda * n 以上でなければなりません

An x m の行列です。配列 a のサイズは lda * m 以上でなければなりません

行優先

Am x n の行列です。配列 a のサイズは lda * m 以上でなければなりません

An x m の行列です。配列 a のサイズは lda * n 以上でなければなりません

lda

行列 A の先頭次元。正である必要があります

transa = transpose::nontrans

transa = transpose::trans または transa = transpose::conjtrans

列優先

m 以上である必要があります

n 以上である必要があります

行優先

n 以上である必要があります

m 以上である必要があります

beta

行列 B のスケーリング係数。value_or_pointer データタイプの詳細については、スカラー引数を参照してください。

b

入力行列 B へのポインター。行列ストレージを参照してください。beta が 0 の場合、 b はアクセスされず、null ポインターになる可能性があります。それ以外では、次の条件を満たす必要があります。

transb = transpose::nontrans

transb = transpose::trans または transb = transpose::conjtrans

列優先

Bm x n の行列です。配列 b のサイズは ldb * n 以上でなければなりません

Bn x m の行列です。配列 b のサイズは ldb * m 以上でなければなりません

行優先

Bm x n の行列です。配列 b のサイズは ldb * m 以上でなければなりません

Bn x m の行列です。配列 b のサイズは ldb * n 以上でなければなりません

ldb

行列 B の先頭次元。正である必要があります。

transb = transpose::nontrans

transb = transpose::trans または transb = transpose::conjtrans

列優先

m 以上である必要があります

n 以上である必要があります

行優先

n 以上である必要があります

m 以上である必要があります

ldc

行列 C の先頭次元。行列が列優先レイアウトで保存される場合、ldcm 以上である必要があります。行列が行優先レイアウトで保存される場合、ldcn 以上である必要があります。正である必要があります。

dependencies

計算を開始する前に待機するイベントのリスト (存在する場合)。省略した場合、依存関係はデフォルトでなくなります。

出力パラメーター#

c

alpha * op(A) + beta * op(B) で上書きされた出力行列へのポインター。

列優先

Cm x n の行列です。配列 c のサイズは ldc * n 以上でなければなりません

行優先

Cm x n の行列です。配列 c のサイズは ldc * m 以上でなければなりません

戻り値#

計算が完了したことを確認するために待機する出力イベント。