pow#

ベクトル a の要素をベクトル b の要素のべき乗した要素ごとの指数化を計算します。

説明#

pow(a,b) 関数は、2 つのベクトルの要素の ab 乗を計算します。

実関数 pow には、a および b パラメーターの入力範囲に関して一定の制限があります。具体的には、a[i] が正の場合、b[i] は任意の値になります。a[i] が負の場合、b[i] の値は整数 (正または負のいずれか) でなければなりません。

複素関数 pow には入力範囲の制限はありません。

引数 1

引数 2

結果

エラーコード

+0

負の奇数

+

status::errdom

-0

負の奇数

-

status::errdom

+0

負の偶数

+

status::errdom

-0

負の偶数

+

status::errdom

+0

負の非整数

+

status::errdom

-0

負の非整数

+

status::errdom

-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

status::errdom

|a| < 1

-

+

+0

-

+

status::errdom

-0

-

+

status::errdom

|a| > 1

-

+0

+

-

+0

-

-

+0

|a| < 1

+

+0

+0

+

+0

-0

+

+0

|a| > 1

+

+

+

+

+

-

+

+

-

負の奇数

-0

-

負の偶数

+0

-

負の非整数

+0

-

正の奇数

-

-

正の偶数

+

-

正の非整数

+

+

b < +0

+0

+

b > +0

+

大きな有限値*

大きな有限値*

+/-

status::overflow

QNAN

QNAN

QNAN

QNAN

SNAN

QNAN

SNAN

QNAN

QNAN

SNAN

SNAN

QNAN

* 実関数のオーバーフローは、HA/LA 精度モードでのみサポートされます。x と y が有限数であっても、結果が大きすぎてターゲットの精度に適合しない場合にオーバーフローが発生します。この場合、関数は次のようになります。

  1. 結果に を返します。

  2. VM エラーステータスを status::overflow に設定します。

複素関数のオーバーフローは、RE(x)、RE(y)、IM(x)、IM(y) 引数がすべて有限数であっても、計算結果の実数部または虚数部が非常に大きく、ターゲット精度に適合しない場合に発生します (HA/LA 精度モードでのみサポートされます)。この場合、関数は結果のその部分に を返し、VM エラーステータスを 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

デバイスサポート

sycl::half

GPU

_Float16

CPU

float

CPU および GPU

double

CPU および GPU

std::complex<float>

CPU および GPU

std::complex<double>

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