linearfrac#
スカラー・パラメーターを持つベクトル a と b の要素ごとの線形分数変換を計算します。
説明#
linearfrac(a,b,scalea,shifta,scaleb,shiftb) 関数は、スカラー・パラメーター (スケーリング乗数 scalea、scaleb、シフト加数 shifta、shiftb) を使用して、ベクトル a をベクトル b で線形分数変換します。
y[i]=(scalea·a[i]+shifta)/(scaleb·b[i]+shiftb)、i=1,2 … n
linearfrac 関数は EP 精度モードでのみ実装されるため、この関数には特定の値は定義されていません。HA または LA モードで使用する場合、linearfrac は VM エラーステータスを status::accuracy_warning に設定します。計算結果の正当性は、各入力パラメーターで定義されているしきい値の範囲内で保証されます (下の表を参照)。それ以外の場合、動作は未指定となります。
入力パラメーターのしきい値制限 |
|---|
|
|
|
|
|
|
|
|
EMIN と EMAX は最小指数と最大指数であり、p は ANSI/IEEE 標準 754-2008 [IEEE754] に従ったデータタイプの有効ビット数 (精度) です:
単精度の場合、
EMIN= -126、EMAX= 127、p= 24倍精度の場合、
EMIN= -1022、EMAX= 1023、p= 53
scalea=0 および/または scaleb=0 の一般的なケースでは、しきい値は緩和されます。
scalea=0 の場合、
a[i]とshiftaの値に制限はありません。scaleb=0 の場合、
b[i]とshiftbの値に制限はありません。
API#
構文#
バッファー API
namespace oneapi::mkl::vm {
sycl::event linearfrac(sycl::queue & exec_queue,
std::int64_t n,
sycl::buffer<T> & a,
sycl::buffer<T> & b,
T scalea,
T shifta,
T scaleb,
T shiftb,
sycl::buffer<T> & y,
oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::not_defined,
oneapi::mkl::vm::error_handler<T> errhandler = {});
}namespace oneapi::mkl::vm {
sycl::event linearfrac(sycl::queue & exec_queue,
sycl::buffer<T> & a,
oneapi::mkl::slice sa,
sycl::buffer<T> & b,
oneapi::mkl::slice sb,
T scalea,
T shifta,
T scaleb,
T shiftb,
sycl::buffer<T> & y,
oneapi::mkl::slice sy,
oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::not_defined,
oneapi::mkl::vm::error_handler<T> errhandler = {});
}USM API
namespace oneapi::mkl::vm {
sycl::event linearfrac(sycl::queue & exec_queue,
std::int64_t n,
T const * a,
T const * b,
T scalea,
T shifta,
T scaleb,
T shiftb,
T * y,
std::vector<sycl::event> const & depends = {},
oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::not_defined,
oneapi::mkl::vm::error_handler<T> errhandler = {});
}namespace oneapi::mkl::vm {
sycl::event linearfrac(sycl::queue & exec_queue,
T const * a,
oneapi::mkl::slice sa,
T const * b,
oneapi::mkl::slice sb,
T scalea,
T shifta,
T scaleb,
T shiftb,
T * y,
oneapi::mkl::slice sy,
std::vector<sycl::event> const & depends = {},
oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::not_defined,
oneapi::mkl::vm::error_handler<T> errhandler = {});
}linearfrac は次の精度とデバイスをサポートしています。
T |
デバイスサポート |
|---|---|
|
GPU |
|
CPU |
|
CPU および GPU |
|
CPU および GPU |
入力パラメーター#
バッファー API
- exec_queue
ルーチンが実行されるキュー。
- n
計算する要素の数を指定します。
- a
1 番目の入力ベクトルを含むバッファー。
- sa
aのスライスセレクター。oneMKL スライスタイプの説明については、データタイプを参照してください。- b
2 番目の入力ベクトルを含むバッファー。
- sb
bのスライスセレクター。oneMKL スライスタイプの説明については、データタイプを参照してください。- scalea
ベクトル
aのスケーリング乗数の定数値- shifta
ベクトル
aの加数をシフトする定数値- scaleb
ベクトル
bのスケーリング乗数の定数値- shiftb
ベクトル
bの加数をシフトする定数値- sy
yのスライスセレクター。oneMKL スライスタイプの説明については、データタイプを参照してください。- mode
この関数呼び出しのグローバル VM モード設定をオーバーライドします。指定可能な値とその説明については、set_mode 関数を参照してください。これはオプションのパラメーターです。デフォルト値は
mode::not_definedです。- errhandler
この関数呼び出しのローカルエラー処理モードを設定します。引数と説明については、create_error_handler 関数を参照してください。これはオプションのパラメーターです。ローカル・エラー・ハンドラーはデフォルトで無効になっています。
USM API
- exec_queue
ルーチンが実行されるキュー。
- n
計算する要素の数を指定します。
- a
最初の入力ベクトルへのポインター。
- sa
aのスライスセレクター。oneMKL スライスタイプの説明については、データタイプを参照してください。- b
2 番目の入力ベクトルへのポインター。
- sb
bのスライスセレクター。oneMKL スライスタイプの説明については、データタイプを参照してください。- scalea
ベクトル
aのスケーリング乗数の定数値- shifta
ベクトル
aの加数をシフトする定数値- scaleb
ベクトル
bのスケーリング乗数の定数値- shiftb
ベクトル
bの加数をシフトする定数値- sy
yのスライスセレクター。oneMKL スライスタイプの説明については、データタイプを参照してください。- depends
依存イベントのベクトル (入力データの準備ができるまで待機)。これはオプションのパラメーターです。デフォルトは空のベクトルです。
- mode
この関数呼び出しのグローバル VM モード設定をオーバーライドします。指定可能な値とその説明については、set_mode 関数を参照してください。これはオプションのパラメーターです。デフォルト値は
mode::not_definedです。- errhandler
この関数呼び出しのローカルエラー処理モードを設定します。引数と説明については、create_error_handler 関数を参照してください。これはオプションのパラメーターです。ローカル・エラー・ハンドラーはデフォルトで無効になっています。
出力パラメーター#
バッファー API
- y
出力ベクトルを含むバッファー。
- 戻り値 (event)
計算終了イベント。
USM API
- y
出力ベクトルへのポインター。
- 戻り値 (event)
計算終了イベント。
例#
linearfrac の使用例は、oneMKL インストール・ディレクトリーの以下の場所にあります。
share/doc/mkl/examples/sycl/vml/source/vllinearfrac.cpp