copy_batch#
copy 操作のグループを計算します。
説明#
copy_batch ルーチンは copy のバッチバージョンであり、1 回の呼び出しで複数の copy 操作を実行します。copy 操作では、1 つのベクトルが別のベクトルにコピーされます。
copy_batch は次の精度をサポートします。
T |
|---|
|
|
|
|
copy_batch (バッファーバージョン)#
copy_batch のバッファーバージョンは、ストライド API のみをサポートします。
ストライド API#
ストライド API 操作は次のように定義されます。
for i = 0 … batch_size – 1
X と Y は、x と y のオフセット i * stridex と i * stridey にあるベクトルです
Y = X
end for説明:
XとYはベクトルです
ストライド API では、すべてのベクトル x (y) は同じパラメーター (サイズ、増分) を持ち、互いに stridex (stridey) によって指定された一定のストライドで格納されます。x と y 配列にはすべての入力ベクトルが含まれます。x と y のベクトルの合計数は、batch_size パラメーターで指定されます。
構文#
namespace oneapi::mkl::blas::column_major {
void copy_batch(sycl::queue &queue,
std::int64_t n,
sycl::buffer<T, 1> &x,
std::int64_t incx,
std::int64_t stridex,
sycl::buffer<T, 1> &y,
std::int64_t incy,
std::int64_t stridey,
std::int64_t batch_size)
}namespace oneapi::mkl::blas::row_major {
void copy_batch(sycl::queue &queue,
std::int64_t n,
sycl::buffer<T, 1> &x,
std::int64_t incx,
std::int64_t stridex,
sycl::buffer<T, 1> &y,
std::int64_t incy,
std::int64_t stridey,
std::int64_t batch_size)
}入力パラメーター#
- queue
ルーチンを実行するキュー。
- n
ベクトル
XとYの要素数。- x
入力ベクトル
Xを保持するバッファー。バッファーのサイズはbatch_size*stridex以上である必要があります。- incx
ベクトル
Xの 2 つの連続する要素間のストライド。ゼロであってはなりません。- stridex
連続する 2 つのベクトル
X間のストライド。最小値は 0 です。- y
入力/出力ベクトル
Yを保持するバッファー。バッファーのサイズはbatch_size*stridey以上である必要があります。- incy
ベクトル
Yの 2 つの連続する要素間のストライド。ゼロであってはなりません。- stridey
連続する 2 つのベクトル
Y間のストライド。(1 + (n-1)*abs(incy)) 以上である必要があります。行列ストレージを参照してください。- batch_size
実行する
copy計算の数。最小値は 0 です。
出力パラメーター#
- y
出力バッファーは
batch_sizecopy操作で上書きされます。
copy_batch (USM バージョン)#
copy_batch の USM バージョンは、グループ API とストライド API をサポートします。
グループ API#
グループ API の整数ポインターの Ti タイプは、std::int64_t または std::int32_t のいずれかです。
グループ API 操作は次のように定義されます。
idx = 0
for i = 0 … group_count – 1
for j = 0 … group_size – 1
X と Y は x[idx] と y[idx] のベクトルです
Y = X
idx = idx + 1
end for
end for説明:
XとYはベクトルです
グループ API の場合、各グループには同じパラメーター (サイズと増分) を持つベクトルが含まれます。x 配列と y 配列には、すべての入力ベクトルへのポインターが含まれています。x と y のベクトルの合計数は次のように与えられます。
構文#
namespace oneapi::mkl::blas::column_major {
sycl::event copy_batch(sycl::queue &queue,
const Ti *n,
const T **x,
const Ti *incx,
T **y,
const Ti *incy,
std::int64_t group_count,
const Ti *group_size,
const std::vector<sycl::event> &dependencies = {})
}namespace oneapi::mkl::blas::row_major {
sycl::event copy_batch(sycl::queue &queue,
const Ti *n, const T **x,
const Ti *incx,
T **y,
const Ti *incy,
std::int64_t group_count,
const Ti *group_size,
const std::vector<sycl::event> &dependencies = {})
}入力パラメーター#
- queue
ルーチンを実行するキュー。
- n
group_count整数の配列。n[i]は、グループi内のすべてのベクトルに対してベクトルXとYの要素数を指定します。- x
サイズが
total_batch_countの入力ベクトルXへのポインターの配列。グループiのXベクトルに割り当てられる配列のサイズは、(1 + (n[i]– 1)*abs(incx[i])) 以上である必要があります。行列ストレージを参照してください。- incx
group_count整数の配列。incx[i]はグループi内のベクトルXのストライドを指定します。ゼロであってはなりません。- y
サイズが
total_batch_countの入力/出力ベクトルYへのポインターの配列。グループiのYベクトルに割り当てられる配列のサイズは、(1 + (n[i]– 1)*abs(incy[i])) 以上である必要があります。行列ストレージを参照してください。- incy
group_count整数の配列。incy[i]はグループi内のベクトルYのストライドを指定します。ゼロであってはなりません。- group_count
グループの数最小値は 0 です。
- group_size
group_count整数の配列。group_size[i]はグループi内のcopy操作の数を指定します。group_size内の各要素の最小値は 0 です。- dependencies
計算を開始する前に待機するイベントのリスト (存在する場合)。省略した場合、依存関係はデフォルトでなくなります。
出力パラメーター#
- y
Yベクトルを保持するポインターの配列。total_batch_countcopy操作で上書きされます。
戻り値#
計算が完了したことを確認するために待機する出力イベント。
例#
USM バージョンの copy_batch の使用方法の例は、oneMKL インストール・ディレクトリーの次の場所にあります。
share/doc/mkl/examples/sycl/blas/source/copy_batch_usm.cppストライド API#
ストライド API 操作は次のように定義されます。
for i = 0 … batch_size – 1
X と Y は、x と y のオフセット i * stridex と i * stridey にあるベクトルです
Y = X
end for説明:
XとYはベクトルです
ストライド API では、すべてのベクトル x (y) は同じパラメーター (サイズ、増分) を持ち、互いに stridex (stridey) によって指定された一定のストライドで格納されます。x と y 配列にはすべての入力ベクトルが含まれます。x と y のベクトルの合計数は、batch_size パラメーターで指定されます。
構文#
namespace oneapi::mkl::blas::column_major {
sycl::event copy_batch(sycl::queue &queue,
std::int64_t n,
const T *x,
std::int64_t incx,
std::int64_t stridex,
T *y,
std::int64_t incy,
std::int64_t stridey,
std::int64_t batch_size,
const std::vector<sycl::event> &dependencies = {})
}namespace oneapi::mkl::blas::row_major {
sycl::event copy_batch(sycl::queue &queue,
std::int64_t n,
const T *x,
std::int64_t incx,
std::int64_t stridex,
T *y,
std::int64_t incy,
std::int64_t stridey,
std::int64_t batch_size,
const std::vector<sycl::event> &dependencies = {})
}入力パラメーター#
- queue
ルーチンを実行するキュー。
- n
ベクトル
XとYの要素数。- x
入力ベクトル
Xへのポインター。配列のサイズはbatch_size*stridex以上である必要があります。- incx
ベクトル
Xの 2 つの連続する要素間のストライド。ゼロであってはなりません。- stridex
連続する 2 つのベクトル
X間のストライド。最小値は 0 です。- y
入力/出力ベクトル
Yへのポインター。配列のサイズはbatch_size*stridey以上である必要があります。- incy
ベクトル
Yの 2 つの連続する要素間のストライド。ゼロであってはなりません。- stridey
連続する 2 つのベクトル
Y間のストライド。 (1 + (n-1)*abs(incy)) 以上である必要があります。行列ストレージを参照してください。- batch_size
実行する
copy計算の数。最小値は 0 です。- dependencies
計算を開始する前に待機するイベントのリスト (存在する場合)。省略した場合、依存関係はデフォルトでなくなります。
出力パラメーター#
- y
出力ベクトルは、
batch_sizecopy操作で上書きされます。
戻り値#
計算が完了したことを確認するために待機する出力イベント。