カーネルはプログラム内で宣言された関数です。カーネルは、プログラム内で宣言された関数に適用され、__kernel修飾子で識別されます。カーネルオブジェクトはランタイムプログラム内で宣言された特定のkernel関数、およびkernel関数の実行の際に使う引数の値をカプセル化するオブジェクトです。
PyOpenCLでは、以下のコンストラタを使いインスタンスを生成します。
class pyopencl.Kernel(program, name)
program引数にはプログラムオブジェクト、name引数にはkernel関数の名前を指定します。
詳しくは「表:clCreateKernel」(Table B.77, “表:clCreateKernel”)を参照ください。
カーネルオブジェクトのメンバー関数には以下のものがあります。
get_info(param) get_work_group_info(param, device) get_arg_info(arg_index, param) set_arg(self, index, arg) set_args(self, *args) set_scalar_arg_dtypes(arg_dtypes) __call__(queue, global_size, local_size, *args, global_offset=None, wait_for=None, g_times_l=False) capture_call(filename, queue, global_size, local_size, *args, global_offset=None, wait_for=None, g_times_l=False)
関数の数は最も多いのですが、pythonの開発者層を考えると使う可能性があるのは数個ある程度と考えます。
この内で最も使う可能性が高いのが、set_arg関数となります。次の項目ではこのset_arg関数を解説します。
Copyright 2018-2019, by Masaki Komatsu