B.23. 実行プログラムのビルド

B.23.1. clBuildProgram

Table 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.23.2. ビルドオプション

Table B.70, “コンパイラ・ビルドオプション”を参照のこと。

Copyright 2018-2019, by Masaki Komatsu