syr2k#

対称ランク 2k 更新を実行します。

説明#

syr2k ルーチンは、一般行列 AB を使用して、n x n 対称行列 C のランク 2k 更新を実行します。操作はのように定義されています。

trans = transpose::nontrans の場合、

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

ここで、A および Bn x k の行列です。

trans = transpose::trans の場合、

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

ここで、A および Bk x n の行列です。

どちらの場合も、次のようになります。

  • alphabeta はスカラーです

  • C は対称行列、AB は一般行列です

  • 両方の行列乗算の内側の次元は k です

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

T

float

double

std::complex<float>

std::complex<double>

syr2k (バッファーバージョン)#

構文#

namespace oneapi::mkl::blas::column_major { 
    void syr2k(sycl::queue &queue, 
               oneapi::mkl::uplo upper_lower, 
               oneapi::mkl::transpose trans, 
               std::int64_t n, 
               std::int64_t k, 
               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 syr2k(sycl::queue &queue, 
               oneapi::mkl::uplo upper_lower, 
               oneapi::mkl::transpose trans, 
               std::int64_t n, 
               std::int64_t k, 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

ルーチンを実行するキュー。

upper_lower

行列 C が上三角行列か下三角行列であるかを指定します。詳細はデータタイプを参照してください。

trans

上記のように適用される転置操作を指定します。trans = transpose::conjtrans の場合でも、結合は実行されません。

n

行列 C の行数と列数。最小値は 0 です。

k

行列乗算の内部次元。最小値は 0 です。

alpha

ランク 2k 更新の複素数スケーリング係数。

a

入力行列 A を保持するバッファー。行列ストレージを参照してください。

trans = transpose::nontrans

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

列優先

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

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

行優先

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

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

lda

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

trans = transpose::nontrans

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

列優先

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

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

行優先

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

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

b

入力行列 B を保持するバッファー。行列ストレージを参照してください。

trans = transpose::nontrans

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

列優先

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

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

行優先

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

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

ldb

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

trans = transpose::nontrans

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

列優先

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

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

行優先

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

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

beta

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

c

入力/出力行列 C を保持するバッファー。バッファーのサイズはldc * n 以上である必要があります。行列ストレージを参照してください。

ldc

行列 C の先頭次元。正の数であり、n 以上である必要があります。

mode

オプション。計算モードの設定。詳細は、計算モードを参照してください。

出力パラメーター#

c

更新された C 行列で上書きされた出力バッファー。

syr2k (USM バージョン)#

構文#

namespace oneapi::mkl::blas::column_major { 
    sycl::event syr2k(sycl::queue &queue, 
                      oneapi::mkl::uplo upper_lower, 
                      oneapi::mkl::transpose trans, 
                      std::int64_t n, 
                      std::int64_t k, 
                      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 syr2k(sycl::queue &queue, 
                      oneapi::mkl::uplo upper_lower, 
                      oneapi::mkl::transpose trans, 
                      std::int64_t n, 
                      std::int64_t k, 
                      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

ルーチンを実行するキュー。

upper_lower

行列 C が上三角行列か下三角行列であるかを指定します。詳細はデータタイプを参照してください。

trans

上記のように適用される転置操作を指定します。trans = transpose::conjtrans の場合でも、結合は実行されません。

n

行列 C の行数と列数。最小値は 0 です。

k

行列乗算の内部次元。最小値は 0 です。

alpha

ランク 2k 更新の複素数スケーリング係数。value_or_pointer データタイプの詳細については、スカラー引数を参照してください。

a

入力行列 A へのポインター。行列ストレージを参照してください。

trans = transpose::nontrans

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

列優先

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

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

行優先

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

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

lda

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

trans = transpose::nontrans

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

列優先

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

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

行優先

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

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

b

入力行列 B へのポインター。行列ストレージを参照してください。

trans = transpose::nontrans

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

列優先

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

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

行優先

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

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

ldb

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

trans = transpose::nontrans

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

列優先

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

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

行優先

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

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

beta

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

c

入力/出力行列 C へのポインター。配列のサイズはldc * n 以上である必要があります。行列ストレージを参照してください。

ldc

行列 C の先頭次元。正の数であり、n 以上である必要があります。

mode

オプション。計算モードの設定。詳細は、計算モードを参照してください。

dependencies

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

modedependencies はそれぞれ省略できます。dependencies を提供するのに mode を指定する必要はありません。

出力パラメーター#

c

更新された C 行列によって上書きされた出力行列へのポインター。

戻り値#

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