gerqf (USM バージョン)#

m 行 n 列の一般行列の RQ 分解を計算します。このルーチンは、oneapi::mkl::lapack 名前空間に属します。

説明#

このルーチンは、 mn 列の一般行列 ARQ 分解を形成します。ピボットは実行されません。

このルーチンは行列 Q を明示的に形成しません。代わりに、Q は min(m, n) 個の基本反射子の積として表されます。この表現で Q を操作するルーチンが提供されています。

API#

構文#

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

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

T

デバイスサポート

float

CPU

double

CPU

std::complex<float>

CPU

std::complex<double>

CPU

入力パラメーター#

queue

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

m

行列 A の行数 (0 m)。

n

行列 A の列数 (0 n)。

a

入力行列 A を保持するメモリーへのポインタ。a の 2 番目の次元は max(1, n) 以上でなければなりません。

lda

a の先頭次元、 max(1, m) 以上。

scratchpad

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

scratchpad_size

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

events

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

出力パラメーター#

a

因数分解データによって次のように上書きされます。

m n の場合、部分配列 a(1:m, n-m+1:n ) の上三角には、mm 列の上三角行列 R が含まれます。m n の場合、(m-n) 番目の下対角要素以上の要素には、mn 列の上台形行列 R が含まれます。

どちらの場合も、残りの要素は配列 tau とともに、min(m,n) 個の基本鏡映子の積として直交/ユニタリー行列 Q を表します。

tau

配列、サイズは min(m,n) 以上。

基本鏡映子の積に分解された行列 Q の基本鏡映子を定義するスカラーが含まれます。

例外#

例外

説明

mkl::lapack::exception

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

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

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

戻り値#

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