表B.67 表:clBuildProgram
関数 | ||
cl_int | clBuildProgram ( cl_program program, cl_uint num_devices, const cl_device_id *device_list, const char *options, void (CL_CALLBACK *pfn_notify) ( cl_program program, void *user_data ), void *user_data ) | |
programと関連付けられたOpenCLコンテ キスト内の全てもしくは特定のデバイス用の実行 可能プログラムを、プログラムソースもしくは バイナリからビルド(コンパイルとリンク)する。 プログラムソースもしくはバイナリを使用して実行 可能プログラムをビルド可能。clBuildProgramは clCreateProgramWithSourceまたは clCreateProgramWithBinaryを呼び出し て生成したprogramに対して使用する。 プログラムがclCreateProgramWithBinaryを 使用して生成された場合、プログラムバイナリは 実行バイナリとなる(ライブラリ等ではない)。 実行バイナリの情報はclGetProgramInfo (program, CL_PROGRAM_BINARIES, ...)を使用して取得でき、clCreateProgram WithBinaryを使用して新しいプログラムオブジ ェクトを生成する際に指定できる。 | ||
引数 | ||
program | 有効なプログラムオ ブジェクトを指定。 | |
device_list | programと関連付けら れたデバイスのリスト へのポインタを指定。 deivce_listがNULL の場合、programと 関連付けられた全ての デバイスに対しての 実行可能プログラムが ビルドされる。 deivce_listがNULL でない場合、ソース またはバイナリがロード されたリストに指定され たデバイスに対しての 実行可能プログラムが ビルドされる。 | |
num_devices | device_list引数に 渡したデバイスの個数 を指定。 | |
options | 実行可能プログラム をビルドする際に適用 するビルドオプション を指定するNULL終端文 字列へのポインタを指 定。 <<compiler_option>> を参照のこと。 | |
pfn_notify | 通知ルーチンへの関数 ポインタ。通知ルーチン はアプリケーションが登録 できるコールバック関数 であり、実行可能プログ ラムがビルドされた際に 成功失敗に関わらず呼び 出されます。 pfn_notifyがNULLで ない場合、 clBuildProgram はビルドの完了を待つ 必要が無くなりすぐに 戻ることができる。 コンテキスト、ソースや バイナリがコンパイル・ ビルドされたプログラム、 デバイスのリストおよび 指定された ビルドオプションが 全て有効な場合、 ビルド処理は開始可能 となる。 pfn_notifyがNULLの 場合、clBuildProgram はビルドが完了するまで 戻らない。このコール バック関数は非同期的 に呼び出される。コール バック関数がスレッド セーフであることを保証 するのはアプリケーショ ン側の責任です。 | |
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 | pfn_notifyが NULLだが、 user_dataがNULL でない場合。 | |
CL_INVALID_ DEVICE | device_listで 指定されているOpenCL デバイスがprogram と関連付けられたデバ イスのリストにない場合。 | |
CL_INVALID_ BINARY | programが clCreateProgram WithBinaryで生成 され、device_list にあるデバイスが有効 なバイナリプログラム をロードしていない 場合。 | |
CL_INVALID_ BUILD_OPTIONS | 指定されたビルド オプションが無効 な場合。 | |
CL_INVALID_ OPERATION | clBuildProgram に前回呼び出した 実行可能プログラム のビルドが終了して いない場合。 | |
CL_COMPILER_ NOT_AVAILABLE | programが clCreateProgram WithSourceで生成 され、コンパイラが 使用できない場合。 (CL_DEVICE_ COMPILER_ AVAILABLEが CL_FALSEに設定 されている場合) | |
CL_BUILD_ PROGRAM_FAILURE | 実行可能プログラム のビルドに失敗 した場合。 | |
CL_INVALID_ OPERATION | programに付いて いるカーネルオブジ ェクトがある場合。 | |
CL_INVALID_ OPERATION | programが clCreateProgram WithSourceまたは clCreateProgram WithBinaryで生成 されていない場合。 | |
CL_OUT_OF_ RESOURCES | デバイス上のOpenCL 実装が必要とする リソース確保に失敗 した場合。 | |
CL_OUT_OF_ HOST_MEMORY | ホスト上のOpenCL 実装が必要とする リソース確保に失敗 した場合。 |
表B.70「コンパイラ・ビルドオプション」を参照のこと。
Copyright 2018-2019, by Masaki Komatsu