表B.68 表:clCompileProgram
関数 | ||
cl_int | clCompileProgram ( cl_program program, cl_uint num_devices, const cl_device_id *device_list, const char *options, cl_uint num_input_headers, const cl_program *input_headers, const char **header_include_names, void (CL_CALLBACK *pfn_notify) ( cl_program program, void *user_data ), void *user_data ) | |
プログラムと関連付けられたOpenCLコンテキス ト内の全てのデバイスまたは特定のデバイスに対して プログラムのソースコードをコンパイル。 プログラムのソースがコンパイルされる前にプリプロ セッサーは処理を開始。コンパイルされたバイナリは、 プログラムと関連付けられた全てのデバイスまたは、 指定されたデバイスのリストに対してビルドされます。 コンパイルされたバイナリ の情報は `clGetProgramInfo` `(program, ` `CL_PROGRAM_BINARIES, ` `...)`を使用して取得でき、 clCreateProgramWith Binaryを使って新しい プログラムオブジェクト を生成することに指定 が可能。 | ||
引数 | ||
program | コンパイルのターゲット となるプログラム オブジェクト。 | |
device_list | プログラムに関連付 けられたデバイスの リストを指すポインタ。 device_listがNULL 値の場合、全ての関連 付けられたデバイスに 対してコンパイルが 行なわれる。 device_listが非 NULL値の場合は、 リストに指定した デバイスに対して コンパイルを行なう。 | |
num_devices | device_listにある デバイスの個数。 | |
options | 実行可能プログラムを ビルドする際に適用する コンパイルオプション 指定するNULL終端文字 列へのポインタを指定。 <<compiler_option>> を参照のこと。 | |
num_input_ headers | input_headersが参照 する配列内のヘッダーを 記述するプログラムの 個数を指定。 | |
input_headers | clCreateProgram WithSourceで生成した、 プログラムの組込みヘッ ダーの配列を指定。 | |
header_ include_names | input_headersと1対1 の関係を持つ配列。 header_include_names の各エントリは、プログ ラムの組込みヘッダー内の ソースに使用されたインク ルードの名称を指定。組込 みヘッダーは、-Iコンパイ ルオプションで指定された ヘッダーの前に、最初に検索 される。 header_include_names の複数のエントリが同じヘッ ダー名を参照する場合、最 初に見つけたものが使われる。 | |
pfn_notify | 通知ルーチンへの関数 ポインタ。通知ルーチン はアプリケーションが登 録できるコールバック関 数であり、実行可能プロ グラムがコンパイルされ た際に成功失敗に関わら ず呼び出される。 pfn_notifyがNULLでな い場合、 clCompileProgram はコンパイルの完了を待つ 必要が無くなりすぐに戻 ることができる。コンテ キスト、ソースやバイナリ がコンパイル・ビルドさ れたプログラム、デバイス のリストおよび指定された ビルドオプションが全て有 効な場合、ビルド処理は開 始可能となる。 pfn_notifyがNULLの 場合、clCompileProgram はコンパイルが完了するま で戻らない。このコール バック関数は非同期的に 呼び出される。コールバック 関数がスレッドセーフであ ることを保証するのはア プリケーション側の 責任です。 | |
user_data | pfn_notifyを呼び 出す際、user_data 引数として渡します。 NULL値を指定可能。 | |
成功した場合の戻り値 | ||
CL_SUCCESS | ||
失敗した場合の戻り値 | ||
CL_INVALID_ PROGRAM | programが有効なプロ グラムオブジェクトで ない場合。 | |
CL_INVALID_ VALUE | device_listがNULL で、num_devicesが0 より大きい場合。 device_listがNULL でなく、num_devices が0の場合 | |
CL_INVALID_ VALUE | num_input_headers が0で、 header_include_names または input_headers がNULLでない場合。 num_input_headers が0でなく、 header_include_names または input_headers がNULLの場合。 | |
CL_INVALID_ VALUE | pfn_notifyがNULL だが、user_dataが NULLでない場合。 | |
CL_INVALID_ DEVICE | device_listの リスト内にあるOpenCL デバイスがprogramに 関連付けられたデバイス のリストの中にない場合。 | |
CL_INVALID_ COMPILER_ OPTIONS | オプションで指定した コンパイラオプション が有効でない場合。 | |
CL_INVALID_ OPERATION | clCompileProgram または clBuildProgramを 事前に呼び出した device_list内の全て のデバイスに対しての、 実行可能プログラムの コンパイルまたはビルド が終了していない場合。 | |
CL_COMPILER_ NOT_AVAILABLE | コンパイラが利用 可能でない場合。 | |
CL_COMPILE_ PROGRAM_FAILURE | プログラムソースの コンパイルに失敗 した場合。 | |
CL_INVALID_ OPERATION | プログラムに付属 したカーネルオブジ ェクトがある場合。 | |
CL_INVALID_ OPERATION | プログラムにソース がない場合。 (clCreateProgram WithSourceで生成 していない場合) | |
CL_OUT_ OF_RESOURCES | デバイス上のOpenCL 実装が必要とする リソース確保に失敗 した場合。 | |
CL_OUT_OF_ HOST_MEMORY | ホスト上のOpenCL実装 が必要とするリソース 確保に失敗した場合。 |
Copyright 2018-2019, by Masaki Komatsu