powr#

ベクトル a の要素をベクトル b の要素で累乗した要素ごとの累乗を計算します。ここで、ベクトル a の要素はすべて負ではありません。

説明#

powr(a,b) 関数は、ベクトル a の各要素をベクトル b の対応する要素で乗算します。a の要素はすべて非負です (ai≥ 0)。

データタイプ

入力パラメーターのしきい値制限

半精度

ai < (FLT16_MAX)1/``b`i`

単精度

ai < (FLT_MAX)1/``b`i`

倍精度

ai < (DBL_MAX)1/``b`i`

v?Powr 関数の特殊値と VM エラーステータスの処理は、この表に特に記載がない限り、pow と同じです:

引数 1

引数 2

結果

エラーコード

a < 0

任意の値 b

NAN

status::errdom

0 < a < \(\infty\)

±0

1

±0

-\(\infty\) < b < 0

+\(\infty\)

±0

-\(\infty\)

+\(\infty\)

±0

b > 0

+0

1

-\(\infty\) < b < \(\infty\)

1

±0

±0

NAN

+\(\infty\)

±0

NAN

1

+\(\infty\)

NAN

a≥ 0

NAN

NAN

NAN

任意の値 b

NAN

0 < a <1

-\(\infty\)

+\(\infty\)

a > 1

-\(\infty\)

+0

0 ≤a < 1

+\(\infty\)

+0

a > 1

+\(\infty\)

+\(\infty\)

+\(\infty\)

b < +0

+0

+\(\infty\)

b > +0

+\(\infty\)

QNAN

QNAN

QNAN

status::errdom

QNAN

SNAN

QNAN

status::errdom

SNAN

QNAN

QNAN

status::errdom

SNAN

SNAN

QNAN

status::errdom

API#

構文#

バッファー API

namespace oneapi::mkl::vm { 

sycl::event powr(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 powr(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 powr(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 powr(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 = {}); 

}

powr は次の精度とデバイスをサポートしています。

T

デバイスサポート

sycl::half

GPU

_Float16

CPU

float

CPU および GPU

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)

計算終了イベント。

#

powr の使用例は、oneMKL インストール・ディレクトリーの以下の場所にあります。

share/doc/mkl/examples/sycl/vml/source/vpowr.cpp