kernel関数はプログラム内で宣言された関数です。kernel関数は、__kernel修飾子で識別されます。カーネルオブジェクトはプログラム内で宣言されたkernel関数の実行の際に使う引数の値をカプセル化するために必要となります。
clCreateKernel関数はカーネルオブジェクトを生成します。
詳しくは「表:clCreateKernel」(表B.77「表:clCreateKernel」)を参照ください。
cl_kernel org.jocl.CL.clCreateKernel(
    cl_program program, //(1)
    String kernel_name, //(2)
    int[] errcode_ret) //(3)clCreateKernelsInProgram関数はprogram内の全てのカーネル関数のカーネルオブジェクトを生成します。
実行可能プログラムが正常に生成された全てのデバイスにおいて関数定義が異なるカーネル関数のカーネルオブジェクトは生成しません。
詳しくは「表:clCreateKernelsInProgram」(表B.78「表:clCreateKernelsInProgram」)を参照ください。
int org.jocl.CL.clCreateKernelsInProgram(
    cl_program program, //(1)
    int num_kernels, //(2)
    cl_kernel[] kernels, //(3)
    int[] num_kernels_ret) //(4)clRetainKernel関数はkernelの参照カウントをインクリメント。
詳しくは「表:clRetainKernel」(表B.79「表:clRetainKernel」)を参照ください。
int org.jocl.CL.clRetainKernel(
    cl_kernel kernel) //(1)| カーネルオブジェクトを指定。 | 
clReleaseKernel関数はkernelの参照カウントをデクリメントします。
詳しくは「表:clReleaseKernel」(表B.80「表:clReleaseKernel」)を参照ください。
int org.jocl.CL.clReleaseKernel(
    cl_kernel kernel) //(1)| カーネルオブジェクトを指定。 | 
Copyright 2018-2019, by Masaki Komatsu