gemv#
一般行列を使用して行列 - ベクトル積を計算します。
説明#
gemv ルーチンは、スカラー - 行列 - ベクトル積を計算し、その結果を一般行列に加算します。操作はのように定義されています。
説明:
op(
A) は、op(A) =A、op(A) =AT、または op(A) =AH のいずれかですalphaとbetaはスカラーですAはmxnの行列ですxとyはベクトルです
gemv は次の精度をサポートします。
T |
|---|
|
|
|
|
gemv (バッファーバージョン)#
構文#
namespace oneapi::mkl::blas::column_major {
void gemv(sycl::queue &queue,
oneapi::mkl::transpose trans,
std::int64_t m,
std::int64_t n,
T alpha,
sycl::buffer<T,1> &a,
std::int64_t lda,
sycl::buffer<T,1> &x,
std::int64_t incx,
T beta,
sycl::buffer<T,1> &y,
std::int64_t incy)
}namespace oneapi::mkl::blas::row_major {
void gemv(sycl::queue &queue,
oneapi::mkl::transpose trans,
std::int64_t m,
std::int64_t n,
T alpha,
sycl::buffer<T,1> &a,
std::int64_t lda,
sycl::buffer<T,1> &x,
std::int64_t incx,
T beta,
sycl::buffer<T,1> &y,
std::int64_t incy)
}入力パラメーター#
- queue
ルーチンを実行するキュー。
- trans
行列
Aに適用される転置演算 op(A) を指定します。詳細はデータタイプを参照してください。- m
行列
Aの行数。最小値は 0 です。- n
行列
Aの列数。最小値は 0 です。- alpha
行列 - ベクトル積のスケーリング係数。
- a
入力行列
Aを保持するバッファー。バッファーのサイズは、列優先レイアウトの場合はlda*n以上、行優先レイアウトの場合はlda*m以上である必要があります。行列ストレージを参照してください。- lda
行列
Aの先頭次元。列優先レイアウトの場合は正の値でm以上、行優先レイアウトの場合はn以上である必要があります。- x
入力ベクトル
xを保持するバッファー。ベクトルxの長さlenは、Aが転置されていない場合はnであり、Aが転置されている場合はmです。バッファーのサイズは (1 + (len- 1)*abs(incx) 以上である必要があります。行列ストレージを参照してください。- incx
ベクトル
xのストライド。ゼロであってはなりません。- beta
ベクトル
yのスケーリング係数。beta= 0 の場合、gemvを呼び出す前にベクトルyを初期化する必要はありません。- y
入力/出力ベクトル
yを保持するバッファー。ベクトルyの長さlenは、Aが転置されていない場合はmであり、Aが転置されている場合はnです。バッファーのサイズは (1 + (len- 1)*abs(incy) 以上である必要があります。行列ストレージを参照してください。- incy
ベクトル
yのストライド。ゼロであってはなりません。
出力パラメーター#
- y
更新されたベクトル
yを保持するバッファー。
例#
gemv の使用例は、oneMKL インストール・ディレクトリーの以下の場所にあります。
share/doc/mkl/examples/sycl/blas/source/gemv.cppgemv (USM バージョン)#
構文#
namespace oneapi::mkl::blas::column_major {
sycl::event gemv(sycl::queue &queue,
oneapi::mkl::transpose trans,
std::int64_t m,
std::int64_t n,
oneapi::mkl::value_or_pointer<T> alpha,
const T *a,
std::int64_t lda,
const T *x,
std::int64_t incx,
oneapi::mkl::value_or_pointer<T> beta,
T *y,
std::int64_t incy,
const std::vector<sycl::event> &dependencies = {})
}namespace oneapi::mkl::blas::row_major {
sycl::event gemv(sycl::queue &queue,
oneapi::mkl::transpose trans,
std::int64_t m,
std::int64_t n,
oneapi::mkl::value_or_pointer<T> alpha,
const T *a,
std::int64_t lda,
const T *x,
std::int64_t incx,
oneapi::mkl::value_or_pointer<T> beta,
T *y,
std::int64_t incy,
const std::vector<sycl::event> &dependencies = {})
}入力パラメーター#
- queue
ルーチンを実行するキュー。
- trans
行列
Aに適用される転置演算 op(A) を指定します。詳細はデータタイプを参照してください。- m
行列
Aの行数。最小値は 0 です。- n
行列
Aの列数。最小値は 0 です。- alpha
行列 - ベクトル積のスケーリング係数。
value_or_pointerデータタイプの詳細については、スカラー引数を参照してください。- a
入力行列
Aへのポインター。バッファーのサイズは、列優先レイアウトの場合はlda*n以上、行優先レイアウトの場合はlda*m以上である必要があります。- lda
行列
Aの先頭次元。列優先レイアウトの場合は正の値でm以上、行優先レイアウトの場合はn以上である必要があります。- x
入力ベクトル
xへのポインター。ベクトルxの長さlenは、Aが転置されていない場合はnであり、Aが転置されている場合はmです。ベクトルxを保持する配列のサイズは、(1 + (len- 1)*abs(incx)) 以上である必要があります。行列ストレージを参照してください。- incx
ベクトル
xのストライド。ゼロであってはなりません。- beta
ベクトル
yのスケーリング係数。beta= 0 の場合、gemvを呼び出す前にベクトルyを初期化する必要はありません。value_or_pointerデータタイプの詳細については、スカラー引数を参照してください。- y
入力/出力ベクトル
yへのポインター。ベクトルyの長さlenは、Aが転置されていない場合はmであり、Aが転置されている場合はnです。入力/出力ベクトルyを保持する配列のサイズは、(1 + (len- 1)*abs(incy)) 以上である必要があります。行列ストレージを参照してください。- incy
ベクトル
yのストライド。ゼロであってはなりません。- dependencies
計算を開始する前に待機するイベントのリスト (存在する場合)。省略した場合、依存関係はデフォルトでなくなります。
出力パラメーター#
- y
更新されたベクトル
yへのポインター。
戻り値#
計算が完了したことを確認するために待機する出力イベント。