表B.69 表:clLinkProgram
関数 | ||
cl_program | clLinkProgram ( cl_context context, cl_uint num_devices, const cl_device_id *device_list, const char *options, cl_uint num_input_programs, const cl_program *input_programs, void (CL_CALLBACK *pfn_notify)( cl_program program, void *user_data), void *user_data, cl_int *errcode_ret) | |
全ての(または特定の)デバイスに対してコンパ イルされたプログラムオブジェクトとライブラリの集 まりをリンクし、実行可能プログラムを生成する。 clLinkProgramはこの 実行可能プログラムを含む 新たなプログラムオブジェ クトを生成する。実行可能 バイナリは `clGetProgramInfo(` `program, ` `CL_PROGRAM_BINARIES, ...)` 関数を使い検索でき、新たな プログラムオブジェクトを生 成するためにclCreate ProgramWithBinaryに 指定できる。 戻ってきたプログラム オブジェクトに関連付け られたデバイスは、 device_listで指定され たデバイスのリストとなる。 device_listがNULLの 場合は、contextに関連付 けられたデバイスのリスト になる。 | ||
引数 | ||
context | 有効なOpenCLコンテ キストを指定。 | |
device_list | コンテキスト内のデバ イスのリストを指すポ インタ。device_list がNULL値の場合、全ての contextに関連付けられ たデバイスに対してリンク が行なわれる。 device_listが非NULL 値の場合は、リストに 指定したデバイスに対し てリンクを行なう。 | |
num_devices | device_listにあ るデバイスの個数。 | |
options | 実行可能プログラム をビルドする際に適用 するリンクオプション を指定するNULL終端文 字列へのポインタを指定。 | |
num_input_ programs | input_programsに 参照される配列内にあ るプログラムの数を指定。 | |
input_ programs | 実行可能プログラム を作るためにリンク されるコンパイルされ たバイナリまたはライ ブラリからなるプログ ラムオブジェクトの配列 を指定。device_list の各デバイスに対して、 またはdevice_listが NULLの場合、以下の ケースが起きる可能性 があります。 input_programsで 指定された全ての プログラムがコンパイル されたバイナリまたは ライブラリとなる。 この場合、デバイスに 対して実行可能プログラム を生成するためにリンク を行ないます。 プログラムがコンパイル されたバイナリまたは ライブラリを含まない。 この場合、デバイスに 対して実行可能プログ ラムは生成されません。 またリンクもしません。 それ以外の場合は、 CL_INVALID_ OPERATIONエラー を戻す。 | |
pfn_notify | 通知ルーチンへの 関数ポインタ。通知ル ーチンはアプリケーシ ョンが登録できるコー ルバック関数であり、 実行可能プログラムが リンクされた際に成功 失敗に関わらず呼び出 される。 pfn_notifyがNULLで ない場合、 clLinkProgram は リンクの完了を待つ 必要が無くなりすぐに 戻ることができる。 コンテキスト、ソース やバイナリが コンパイル・ビルドさ れたプログラム、デバ イスのリストおよび指定 されたビルドオプション が全て有効な場合、ビル ド処理は開始可能となる。 pfn_notifyがNULLの 場合、clLinkProgram はリンクが完了するま で戻らない。このコール バック関数は非同期的 に呼び出される。コール バック関数がスレッドセ ーフであることを保証す るのはアプリケーション 側の責任です。 | |
user_data | pfn_notifyを呼び 出す際、user_data引 数として渡します。 NULL値を指定可能。 | |
成功した場合の戻り値 | ||
CL_SUCCESS | ||
失敗した場合の戻り値 | ||
CL_INVALID_ CONTEXT | contextが有効なコン テキストでない場合。 | |
CL_INVALID_ VALUE | device_listがNULLで、 num_devicesが0より 大きい場合。 device_listがNULL でなく、num_devices が0の場合 | |
CL_INVALID_ VALUE | num_input_programs が0で、input_programs がNULLの場合。 num_input_programs が0で、input_programs がNULLでない場合。 num_input_programs が0でなく、 input_programsが NULLの場合。 | |
CL_INVALID_ PROGRAM | input_programsで 指定されたプログラムが 有効なプログラムオブ ジェクトでない場合。 | |
CL_INVALID_ VALUE | pfn_notifyがNULL なのに、user_dataが NULLでない場合。 | |
CL_INVALID_ DEVICE | device_listのリス ト内にあるOpenCLデバ イスがcontextに関連付 けられたデバイスのリス トの中にない場合。 | |
CL_INVALID_ LINKER_OPTIONS | リンカーオプション が無効な場合。 | |
CL_INVALID_ OPERATION | clCompileProgram またはclBuildProgram を事前に呼び出した device_list内の全て のデバイスに対しての、 実行可能プログラムの コンパイルまたはビルド が終了していない場合。 | |
CL_INVALID_ OPERATION | コンパイルされた バイナリまたは ライブラリを含む デバイスの規則が守 られない場合。 | |
CL_LINKER_ NOT_AVAILABLE | リンカーが利用 可能でない場合。 | |
CL_LINK_ PROGRAM_FAILURE | コンパイルされた バイナリ及び(又は) ライブラリをリンク するのに失敗した場合。 | |
CL_OUT_ OF_RESOURCES | デバイス上のOpenCL 実装が必要とする リソース確保に失敗 した場合。 | |
CL_OUT_OF_ HOST_MEMORY | ホスト上のOpenCL 実装が必要とする リソース確保に失敗 した場合。 |
Copyright 2018-2019, by Masaki Komatsu