axpy_batch#

axpy 操作のグループを計算します。

説明#

axpy_batch ルーチンは axpy のバッチバージョンであり、1 回の呼び出しで複数の axpy 操作を実行します。各 axpy 操作は、スカラー - ベクトル積をベクトルに加算します。

axpy_batch は次の精度をサポートします。

T

float

double

std::complex<float>

std::complex<double>

axpy_batch (バッファーバージョン)#

axpy_batch のバッファーバージョンは、ストライド API のみをサポートします。

ストライド API#

ストライド API 操作は次のように定義されます。

for i = 0 … batch_size – 1 
    X と Y は、x と y のオフセット i * stridex と i * stridey にあるベクトルです 
    Y = alpha * X + Y 
end for

説明:

  • alpha はスカラーです

  • XY はベクトルです

ストライド API では、すべてのベクトル XY は同じパラメーター (サイズ、増分) を持ち、互いに stridexstridey によって指定された一定のストライドで格納されます。x 配列と y 配列にはすべての入力ベクトルが含まれます。xy のベクトルの合計数は、batch_size パラメーターで指定されます。

構文#

namespace oneapi::mkl::blas::column_major { 
    void axpy_batch(sycl::queue &queue, 
                    std::int64_t n, 
                    T alpha, 
                    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 axpy_batch(sycl::queue &queue, 
                    std::int64_t n, 
                    T alpha, 
                    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

ベクトル XY の要素数。

alpha

スカラー alpha を指定します。

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

実行するaxpy 計算の数。最小値はゼロです。

出力パラメーター#

y

出力バッファーは、alpha * X + Y 形式の batch_size axpy 操作によって上書きされます。

axpy_batch (USM バージョン)#

axpy_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 = alpha[i] * X + Y idx = idx + 1 
    end for 
end for

説明:

  • alpha はスカラーです

  • XY はベクトルです

グループ API の場合、各グループには同じパラメーター (サイズと増分) を持つベクトルが含まれます。x 配列とy 配列には、すべての入力ベクトルへのポインターが含まれています。xy のベクトルの合計数は次のように与えられます。

\[total\_batch\_count = \sum_{i=0}^{group\_count-1}group\_size[i]\]

構文#

namespace oneapi::mkl::blas::column_major { 
    sycl::event axpy_batch(sycl::queue &queue, 
                           const Ti *n, 
                           const T *alpha, 
                           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 axpy_batch(sycl::queue &queue, 
                           const Ti *n, 
                           const T *alpha, 
                           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 内のすべてのベクトルに対してベクトル XY の要素数を指定します。

alpha

group_count スカラー要素の配列。alpha[i] はグループ i 内のベクトル X のスケーリング係数を指定します。

x

サイズが total_batch_count の入力ベクトル X へのポインターの配列。グループ iX ベクトルに割り当てられる配列のサイズは、(1 + (n[i] – 1)*abs(incx[i])) 以上である必要があります。行列ストレージを参照してください。

incx

group_count 整数の配列。incx[i] はグループ i 内のベクトル X のストライドを指定します。ゼロであってはなりません。

y

サイズが total_batch_count の入力/出力ベクトル Y へのポインターの配列。グループ iY ベクトルに割り当てられる配列のサイズは、(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 内の axpy 操作の数を指定します。group_size 内の各要素の最小値は 0 です。

dependencies

計算を開始する前に待機するイベントのリスト (存在する場合)。省略した場合、依存関係はデフォルトでなくなります。

出力パラメーター#

y

Y ベクトルを保持するポインターの配列。alpha * X + Y 形式の total_batch_count axpy 操作によって上書きされます。

戻り値#

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

ストライド API#

ストライド API 操作は次のように定義されます。

for i = 0 … batch_size – 1 
    X と Y は、x と y のオフセット i * stridex と i * stridey にあるベクトルです 
    Y = alpha * X + Y 
end for

説明:

  • alpha はスカラーです

  • XY はベクトルです

ストライド API では、すべてのベクトル XY は同じパラメーター (サイズ、増分) を持ち、互いに stridexstridey によって指定された一定のストライドで格納されます。x 配列と y 配列にはすべての入力ベクトルが含まれます。xy のベクトルの合計数は、batch_size パラメーターで指定されます。

構文#

namespace oneapi::mkl::blas::column_major { 
    sycl::event axpy_batch(sycl::queue &queue, 
                           std::int64_t n, 
                           oneapi::mkl::value_or_pointer<T> alpha, 
                           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 axpy_batch(sycl::queue &queue, 
                           std::int64_t n, 
                           oneapi::mkl::value_or_pointer<T> alpha, 
                           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

ベクトル XY の要素数。

alpha

スカラー alpha を指定します。value_or_pointer データタイプの詳細については、スカラー引数を参照してください。

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

実行する axpy 計算の数。最小値は 0 です。

dependencies

計算を開始する前に待機するイベントのリスト (存在する場合)。省略した場合、依存関係はデフォルトでなくなります。

出力パラメーター#

y

alpha * X + Y 形式の batch_size axpy 演算によって上書きされる出力ベクトル Y へのポインター。

戻り値#

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