pow#
ベクトル a
の要素をベクトル b
の要素のべき乗した要素ごとの指数化を計算します。
説明#
pow(a,b)
関数は、2 つのベクトルの要素の a
の b
乗を計算します。
実関数 pow には、a
および b
パラメーターの入力範囲に関して一定の制限があります。具体的には、a
[i] が正の場合、b
[i] は任意の値になります。a
[i] が負の場合、b
[i] の値は整数 (正または負のいずれか) でなければなりません。
複素関数 pow には入力範囲の制限はありません。
引数 1 |
引数 2 |
結果 |
エラーコード |
---|---|---|---|
+0 |
負の奇数 |
+ |
|
-0 |
負の奇数 |
- |
|
+0 |
負の偶数 |
+ |
|
-0 |
負の偶数 |
+ |
|
+0 |
負の非整数 |
+ |
|
-0 |
負の非整数 |
+ |
|
-0 |
正の奇数 |
+0 |
|
-0 |
正の奇数 |
-0 |
|
+0 |
正の偶数 |
+0 |
|
-0 |
正の偶数 |
+0 |
|
+0 |
正の非整数 |
+0 |
|
-0 |
正の非整数 |
+0 |
|
-1 |
+ |
+1 |
|
-1 |
- |
+1 |
|
+1 |
任意の値 |
+1 |
|
+1 |
+0 |
+1 |
|
+1 |
-0 |
+1 |
|
+1 |
+ |
+1 |
|
+1 |
- |
+1 |
|
+1 |
QNAN |
+1 |
|
任意の値 |
+0 |
+1 |
|
+0 |
+0 |
+1 |
|
-0 |
+0 |
+1 |
|
+ |
+0 |
+1 |
|
- |
+0 |
+1 |
|
QNAN |
+0 |
+1 |
|
任意の値 |
-0 |
+1 |
|
+0 |
-0 |
+1 |
|
-0 |
-0 |
+1 |
|
+ |
-0 |
+1 |
|
- |
-0 |
+1 |
|
QNAN |
-0 |
+1 |
|
a < +0 |
非整数 |
QNAN |
|
|a| < 1 |
- |
+ |
|
+0 |
- |
+ |
|
-0 |
- |
+ |
|
|a| > 1 |
- |
+0 |
|
+ |
- |
+0 |
|
- |
- |
+0 |
|
|a| < 1 |
+ |
+0 |
|
+0 |
+ |
+0 |
|
-0 |
+ |
+0 |
|
|a| > 1 |
+ |
+ |
|
+ |
+ |
+ |
|
- |
+ |
+ |
|
- |
負の奇数 |
-0 |
|
- |
負の偶数 |
+0 |
|
- |
負の非整数 |
+0 |
|
- |
正の奇数 |
- |
|
- |
正の偶数 |
+ |
|
- |
正の非整数 |
+ |
|
+ |
b < +0 |
+0 |
|
+ |
b > +0 |
+ |
|
大きな有限値* |
大きな有限値* |
+/- |
|
QNAN |
QNAN |
QNAN |
|
QNAN |
SNAN |
QNAN |
|
SNAN |
QNAN |
QNAN |
|
SNAN |
SNAN |
QNAN |
* 実関数のオーバーフローは、HA/LA 精度モードでのみサポートされます。x と y が有限数であっても、結果が大きすぎてターゲットの精度に適合しない場合にオーバーフローが発生します。この場合、関数は次のようになります。
結果に
を返します。VM エラーステータスを status::overflow に設定します。
複素関数のオーバーフローは、RE(x)、RE(y)、IM(x)、IM(y) 引数がすべて有限数であっても、計算結果の実数部または虚数部が非常に大きく、ターゲット精度に適合しない場合に発生します (HA/LA 精度モードでのみサポートされます)。この場合、関数は結果のその部分に status::overflow
に設定します (status::accuracy_warning
ステータスを上書きします)。
この関数の複素倍精度バージョンは、EP 精度モードでのみ実装されています。HA または LA モードで使用する場合、関数は VM エラーステータスを status::accuracy_warning
に設定します。
API#
構文#
バッファー API
namespace oneapi::mkl::vm {
sycl::event pow(sycl::queue & exec_queue,
std::int64_t n,
sycl::buffer<T> & a,
sycl::buffer<T> & b,
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 pow(sycl::queue & exec_queue,
sycl::buffer<T> & a,
oneapi::mkl::slice sa,
sycl::buffer<T> & b,
oneapi::mkl::slice sb,
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 pow(sycl::queue & exec_queue,
std::int64_t n,
T const * a,
T const * b,
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 pow(sycl::queue & exec_queue,
T const * a,
oneapi::mkl::slice sa,
T const * b,
oneapi::mkl::slice sb,
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 = {});
}
pow
は次の精度とデバイスをサポートしています。
T |
デバイスサポート |
---|---|
|
GPU |
|
CPU |
|
CPU および GPU |
|
CPU および GPU |
|
CPU および GPU |
|
CPU および GPU |
入力パラメーター#
バッファー API
- exec_queue
ルーチンが実行されるキュー。
- n
計算する要素の数を指定します。
- a
1 番目の入力ベクトルを含むバッファー。
- sa
a
のスライスセレクター。oneMKL スライスタイプの説明については、データタイプを参照してください。- b
2 番目の入力ベクトルを含むバッファー。
- sb
b
のスライスセレクター。oneMKL スライスタイプの説明については、データタイプを参照してください。- 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 スライスタイプの説明については、データタイプを参照してください。- sy
y
のスライスセレクター。oneMKL スライスタイプの説明については、データタイプを参照してください。- depends
依存イベントのベクトル (入力データの準備ができるまで待機)。これはオプションのパラメーターです。デフォルトは空のベクトルです。
- mode
この関数呼び出しのグローバル VM モード設定をオーバーライドします。指定可能な値とその説明については、set_mode 関数を参照してください。これはオプションのパラメーターです。デフォルト値は
mode::not_defined
です。- errhandler
この関数呼び出しのローカルエラー処理モードを設定します。引数と説明については、create_error_handler 関数を参照してください。これはオプションのパラメーターです。ローカル・エラー・ハンドラーはデフォルトで無効になっています。
出力パラメーター#
バッファー API
- y
出力ベクトルを含むバッファー。
- 戻り値 (event)
計算終了イベント。
USM API
- y
出力ベクトルへのポインター。
- 戻り値 (event)
計算終了イベント。
例#
pow
の使用例は、oneMKL インストール・ディレクトリーの以下の場所にあります。
share/doc/mkl/examples/sycl/vml/source/vpow.cpp