ungbr (USM バージョン)#

gebrd (USM バージョン) 関数によって決定された複素ユニタリー行列 Q または Pt を生成します。このルーチンは、oneapi::mkl::lapack 名前空間に属します。

説明#

このルーチンは、gebrd (USM バージョン) 関数によって形成されたユニタリー行列 Q および PT の全体または一部を生成します。有効な引数の組み合わせはすべて入力パラメーターに記載されています。ほとんどの場合、以下が必要です:

mm 列の行列 Q 全体を計算するには、次を使用します。

ungbr(queue, generate::q, m, m, n, a, ...)

(配列 a には少なくとも m 列が必要であることに注意してください)。

m > n の場合に Q の先頭の n 列を形成するには、次を使用します。

ungbr(queue, generate::q, m, n, n, a, ...)

nn 列の行列 PT 全体を計算するには、次を使用します。

ungbr(queue, generate::p, n, n, m, a, ...)

(配列 a には少なくとも n 行が必要であることに注意してください)。

m < n の場合に PT の先頭の m 行を形成するには、次を使用します。

ungbr(queue, generate::p, m, n, m, a, ...)

API#

構文#

namespace oneapi::mkl::lapack { 
  sycl::event ungbr(sycl::queue &queue, 
  mkl::generate gen, 
  int64_t m, 
  int64_t n, 
  int64_t k, 
  T *a, 
  int64_t lda, 
  const T *tau, 
  T *scratchpad, 
  int64_t scratchpad_size, 
  const std::vector<sycl::event> &events = {}) 
}

ungbr (USM バージョン) は、次の精度とデバイスをサポートします。

T

デバイスサポート

std::complex<float>

CPU

std::complex<double>

CPU

入力パラメーター#

queue

計算が実行されるデバイスキュー。

gen

generate::q または generate::p である必要があります。

gen= generate::q の場合、ルーチンは行列 Q を生成します。

gen= generate::p の場合、ルーチンは行列 P を生成します。

m

戻される行列 Q または PT の行数 (0 m)

gen= generate::q の場合、m n min(m, k) となります。

gen= generate::p の場合、n m min(n, k) となります。

n

戻される行列 Q または PT の行数 (0 n)。制約については m を参照してください。

k

gen= generate::q の場合、元の m 行 k 列の行列の列数が gebrd (USM バージョン) によって縮小されます。

gen= generate::p の場合、元の k 行 n 列の行列の行数が gebrd (USM バージョン) によって縮小されます。

a

gebrd (USM バージョン) によって返されるメモリーへポインター。

lda

a の先頭次元。

tau

gen= generate::q の場合、配列 tauq は gebrd (USM バージョン) 関数によって返されます。

gen= generate::p の場合、配列 taup は gebrd (USM バージョン) 関数によって返されます。

tau の次元は gen = generate::q の場合 min(m,k) 以上で、gen = generate::p の場合は min(n,k) 以上でなければなりません。

scratchpad

ルーチンが中間結果を保存するスクラッチパッド・メモリーへのポインター。

scratchpad_size

T タイプの浮動小数点要素の数であるスクラッチパッド・メモリーのサイズ。サイズは、ungbr_scratchpad_size 関数が返す値以下であってはなりません。

events

計算を開始する前に待機するイベントのリスト。デフォルトでは空のリストになります。

出力パラメーター#

a

gen、m、n で指定された、m 行 m 列の直交行列 Q または PT の先頭の n 列 (またはその先頭の行または列) で上書きされます。

例外#

例外

説明

mkl::lapack::exception

この例外は、計算中に問題が発生した場合にスローされます。例外オブジェクトの info() メソッドを使用して、問題の情報コードを取得できます。

info = -i の場合、i 番目のパラメーターの値が不正です。

info がスクラッチパッドのサイズとして渡された値と等しく、detail() がゼロ以外を返す場合、渡されたスクラッチパッドのサイズが十分ではなく、必要なサイズは例外オブジェクトの detail() メソッドによって返される値以上である必要があります。

戻り値#

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