B.32. カーネルオブジェクト情報の取得

B.32.1. clGetKernelInfo

表B.82 表:clGetKernelInfo

関数

cl_int

clGetKernelInfo (
    cl_kernel kernel,
    cl_kernel_info param_name,
    size_t param_value_size,
    void *param_value,
    size_t *param_value_size_ret
)

カーネルオブジェクトについての情報を取得。

引数

kernel

有効なカーネル
オブジェクトを指定。

param_name

取得する情報を指定。

param_value

param_nameに指定
した情報についての値
が戻されるメモリ空間
へのポインタ。NULLの
場合は無視。

param_value_ size

param_valueが指す
メモリのサイズをバイ
トで指定。このサイズ
は戻り値型のサイズ以上
となる必要がある。

param_value_ size_ret

param_valueにコ
ピーされるデータの実
際のサイズをバイトで
戻す。NULLの場合は無
視。

成功した場合の戻り値

CL_SUCCESS

失敗した場合の戻り値

CL_INVALID_ VALUE

 param_nameがサ
ポートされている値で
ない場合
param_value_size
で指定されたサイズが
戻り値の型のサイズよ
り小さく、
param_valueがNULL
でない場合。

CL_INVALID_ KERNEL

kernelが有効な
カーネルオブジェクト
でない場合。

CL_OUT_OF_ RESOURCES

デバイス上のOpenCL
実装が必要とする
リソース確保に失敗
した場合。

CL_OUT_OF_ HOST_MEMORY

ホスト上のOpenCL
実装が必要とする
リソース確保に失敗
した場合。

B.32.2. cl_kernel_info

表B.83 表:cl_kernel_info

cl_kernel_
info


戻り値型



param_value
に戻す情報

CL_KERNEL_
FUNCTION_
NAME
char[]
kernelの関数名を
戻す。
CL_KERNEL_
NUM_ARGS
cl_uint
kernelの引数の数
を戻す。
CL_KERNEL_
REFERENCE_
COUNT
cl_uint
kernelの参照カウ
ントを戻す。


CL_KERNEL_
CONTEXT
cl_context


kernelと関連付けら
れたOpenCLコンテ
キストを戻す。

CL_KERNEL_
PROGRAM
cl_program


kernelと関連付け
られたプログラムオブ
ジェクトを戻す。
CL_KERNEL_
ATTRIBUTES
char[]


プログラムソース内
のカーネル関数で宣言
した__attribute__
修飾子を使って指定し
た属性を戻す。

属性は
__attribute__((...))
として宣言したように
戻る。(スペースと改
行は除去)

複数の属性がある場合、
戻り値は一つのスペース
で区切られた文字列と
なる。

B.32.3. clGetKernelWorkGroupInfo

表B.84 表:clGetKernelWorkGroupInfo

関数

cl_int

clGetKernelWorkGroupInfo (
    cl_kernel kernel,
    cl_device_id device,
    cl_kernel_work_group_info param_name,
    size_t param_value_size,
    void *param_value,
    size_t *param_value_size_ret
)

カーネルオブジェクトに関するデバイス特有の情報を取得。

引数

kernel

カーネルオブジェクト
を指定。

device

kernelに関連付け
られたOpenCLデバイ
スデバイスのリストの
中からひとつを指定。
デバイスのリストは、
カーネルと関連付けら
れたOpenCLコンテキス
ト内のデバイスのリスト
となる。カーネルと関連
付けられたデバイスの
リストにデバイスが1つ
しかない場合、このパラ
メータにNULLを設定
できる。

param_name

取得する情報を指定。

param_value

param_nameに指定し
た情報についての値が
戻されるメモリ空間へ
のポインタ。NULLの場
合は無視。

param_value_ size

param_valueが指
すメモリのサイズを
バイトで指定。この
サイズは戻り値型の
サイズ以上でなけれ
ばなりません。

param_value_ size_ret

param_valueに複
製されるデータの実
際のサイズをバイト
で戻す。NULLの場合
は無視。

成功した場合の戻り値

CL_SUCCESS

失敗した場合の戻り値

CL_INVALID_ DEVICE

deviceがkernelに
関連付けられたリス
トの中にない場合
deviceにNULL値が指
定されてるのにカーネ
ルに複数の関連付けが
ある場合。

CL_INVALID_ VALUE

param_nameがサポ
ートされている値でな
い場合

param_value_size
で指定されたサイズが
戻り値型のサイズより
小さくかつ
param_valueがNULL
でない場合。

CL_INVALID_ VALUE

param_nameが
CL_KERNEL_GLOBAL_
WORK_SIZEで、デバイ
スがカスタムデバイス
でない場合か、kernel
が組込みカーネルでな
い場合。

CL_INVALID_ KERNEL

kernelが有効な
カーネルオブジェク
トでない場合。

CL_OUT_ OF_RESOURCES

デバイス上のOpenCL
実装が必要とする
リソース確保に失敗
した場合。

CL_OUT_OF_ HOST_MEMORY

ホスト上のOpenCL
実装が必要とする
リソース確保に失敗
した場合。

B.32.4. cl_kernel_work_group_info

表B.85 表:cl_kernel_work_group_info

cl_kernel_
work_group_
info


戻り値型



param_value
に戻す情報

CL_KERNEL_
GLOBAL_WORK_
SIZE
size_t
deviceで指定した
カスタムデバイス上、
またはdeviceで指定し
たOpenCLデバイス上の
組込みカーネルでアプリ
ケーションがカーネルを
実行するときに使える
最大グローバルサイズを
取得する仕組みを提供。
(clEnqueueNDRange
Kernelで宣言する
global_work_size引数)

デバイスがカスタム
デバイスでない場合や、
kernelが組込みカーネ
ルでない場合は、
clGetKernelArgInfo
はCL_INVALID_VALUE
エラーを戻す。
CL_KERNEL_
WORK_
GROUP_SIZE
size_t


deviceで指定したデ
バイス上でカーネルを
実行する際に利用できる
最大ワークグループサイ
ズを戻す。OpenCL実装
は指定したカーネルが
必要とするリソース
(レジスタの使用量な
ど)をもとに、ワーク
グループサイズを決定。

CL_KERNEL_
COMPILE_
WORK_GROUP_
SIZE
size_t


`__attribute__((reqd_`
`work_group_size(X, Y, Z)))`
修飾子で指定されている
ワークグループサイズを
戻す。この修飾を使った指
定をしない場合、
(0, 0, 0)が戻る。

CL_KERNEL_
LOCAL_MEM_SIZE
cl_ulong
カーネルによって使用さ
れるローカルメモリの量
をバイトで戻す。

カーネルの実行、カーネ
ル内で `__local`アド
レス修飾子を用いて宣言さ
れた変数、__localアド
レス修飾子を用いてポイン
タとして宣言されたカーネ
ルの引数について確保さ
れるclSetKernelArgで
指定されたサイズのロー
カルメモリなどで必要と
なるローカルメモリを含
む。

__localアドレス修飾子
を用いて宣言されたカー
ネル引数のローカルメモ
リサイズを指定しない場
合、サイズは0を前提と
する。
CL_KERNEL_
PREFERRED_
WORK_GROUP_
SIZE_MULTIPLE
size_t
ワークグループサイズ
の推奨の倍数を戻す。
CL_KERNEL_
PRIVATE_MEM_
SIZE
cl_ulong


カーネル内の各ワーク
アイテムで使われる
プライベートメモリの
最小量をバイトで戻す。

B.32.5. clGetKernelArgInfo

表B.86 表:clGetKernelArgInfo

関数

cl_int

clGetKernelArgInfo (
    cl_kernel kernel,
    cl_uint arg_indx,
    cl_kernel_arg_info param_name,
    size_t param_value_size,
    void *param_value,
    size_t *param_value_size_ret
)

カーネル引数に関する情報を戻す。カーネル引数 の情報は、kernelと関連付けられたプログラムオブジェ クトがclCreateProgramWithSourceで生成され、 実行可能プログラムが、clBuildProgramまたは clCompileProgramのオプション引数の-cl-kernel -arg-infoオプションを指定しビルドした場合に限り、使用が可能。

引数

kernel

カーネルオブジェ
クトを指定。

arg_indx

引数添字(インデックス)
を指定。kernelへの引
数は、0からn - 1で定義
(  nはkernelに宣言し
た引数の総数)される添字
で参照することができる。

param_name

調べたい引数情報を指定。
サポートされる
param_name型のリスト
とparam_valueで戻さ
れる情報はcl_kernel_
arg_infoを参照のこと。

param_value

適切な結果が戻るメ
モリを指すポインタ。
param_valueがNULL
の場合は無視。

param_value_ size

param_valueが指す
メモリのバイトサイズ
(バイトで表す)を指定。
このサイズは戻り値型の
サイズよりも大きい必要
がある。

param_value_ size_ret

param_valueに複製
されるデータのサイズの
バイトを戻す。param_
value_size_retが
NULLの場合は無視。

成功した場合の戻り値

CL_SUCCESS

失敗した場合の戻り値

CL_INVALID_ ARG_INDEX

arg_indxが有効な
引数添字でない場合。

CL_INVALID_ VALUE

param_nameが有効
でない場合。
param_value_sizeが
指定するバイトサイズ
が戻り値の型より小さく、
param_valueがNULL
の場合。

CL_KERNEL_ ARG_INFO_NOT_ AVAILABLE

引数情報をkernel
が利用できない場合。

CL_INVALID_ KERNEL

kernelが有効な
カーネルオブジェクト
でない場合。

B.32.6. cl_kernel_arg_info

表B.87 表:cl_kernel_arg_info

cl_kernel_
arg_info


戻り値型



param_value
に戻る情報

CL_KERNEL_
ARG_
ADDRESS_
QUALIFIER
cl_kernel_
arg_
address_
qualifier
arg_indxで指定
した引数のアドレス
修飾子を戻す。次
のどれかの値をとる。

CL_KERNEL_ARG_
ADDRESS_GLOBAL

CL_KERNEL_ARG_
ADDRESS_LOCAL

CL_KERNEL_ARG_
ADDRESS_CONSTANT

CL_KERNEL_ARG_
ADDRESS_PRIVATE

アドレス修飾子を指定
しない場合は、
CL_KERNEL_ARG_
ADDRESS_PRIVATE
が既定の値となる。
CL_KERNEL_
ARG_ACCESS_
QUALIFIER

cl_kernel_
arg_
access_
qualifier
arg_indxで指定
した引数のアクセス
修飾子を戻す。次の
どれかの値をとる。

CL_KERNEL_ARG_
ACCESS_READ_ONLY

CL_KERNEL_ARG_
ACCESS_WRITE_ONLY

CL_KERNEL_ARG_
ACCESS_READ_WRITE

CL_KERNEL_ARG_
ACCESS_NONE

引数がイメージ型でな
い場合、
CL_KERNEL_ARG_
ACCESS_NONEが戻される。
引数がイメージ型の場合
は、指定したアクセス
修飾子か既定値が戻さ
れる。
CL_KERNEL_
ARG_TYPE_
QUALIFIER
cl_kernel_
arg_
type_qualifier
arg_indxで指定した
引数のタイプ修飾子
を戻す。次のどれか
の値をとる。

CL_KERNEL_ARG_
TYPE_CONST

CL_KERNEL_ARG_
TYPE_RESTRICT

CL_KERNEL_ARG_
TYPE_VOLATILE

CL_KERNEL_ARG_
TYPE_NONE

例:
CL_KERNEL_ARG_
TYPE_VOLATILEは、

global int volatile *x

と宣言した場合に戻る。

CL_KERNEL_ARG_
TYPE_CONSTは

global int const *x

と宣言した場合に戻る。
CL_KERNEL_
ARG_NAME
char[]
arg_indxで指定し
た引数の名称を戻す。

Copyright 2018-2019, by Masaki Komatsu