gesv (USM バージョン)#

正方係数行列と複数の右辺を持つ連立一次方程式の解を計算します。このルーチンは、oneapi::mkl::lapack 名前空間に属します。

説明#

このルーチンは、X について線形方程式系 A*X = B を解きます。ここで、A は n 行 n 列の行列、行列 B の列は個々の右辺、X の列は対応する解です。

部分ピボットと行交換による LU 分解は、AA = P*L*U として因数分解するために使用されます。ここで、P は順列行列、L は単位下三角行列、U は上三角行列です。次に、A の因数分解された形式を使用して、連立方程式 A*X = B を解きます。

API#

構文#

namespace oneapi::mkl::lapack { 
  sycl::event gesv(sycl::queue &queue, 
  int64_t n, 
  int64_t nrhs, 
  T *a, 
  int64_t lda, 
  int64_t *ipiv, 
  T *b, 
  int64_t ldb, 
  T *scratchpad, 
  int64_t scratchpad_size, 
  const std::vector<sycl::event> &events = {}) 
}

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

T

デバイスサポート

float

CPU、GPU

double

CPU、GPU

std::complex<float>

CPU、GPU

std::complex<double>

CPU、GPU

入力パラメーター#

queue

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

n

行列 A の次数 (0 n)

nrhs

右辺の数 (0 nrhs)。

a

n 行 n 列の係数行列 A へのポインター。

lda

a の先頭次元。

b

右辺行列 B の n 行 nrhs 列行列へのポインター

ldb

b の先頭次元。

scratchpad

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

scratchpad_size

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

events

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

出力パラメーター#

a

A = P*L*U の因数分解からの因数 LU によって上書きされます。L の単位対角要素は保存されません。

b

バッファー b は、解行列 X によって上書きされます。

ipiv

配列、サイズは max(1, n) 以上。getrf (USM バージョン) によって返される ipiv 配列。

例外#

例外

説明

mkl::lapack::exception

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

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

info = i の場合、Ui 番目の対角要素はゼロであり、解決は完了しませんでした。

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

戻り値#

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