clBuildProgram
は、プログラムを作成するデバイスのリストを与えることができます。これは宣言の中でnum_devices
とdevice_list
パラメータの理由です:device_listパラメータにNULLを渡すと、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)
今、私たちは、それはこのように使用している場合、どうなりますか?
cl_int clBuildProgram(program, 0, NULL, ...
- それはPC内のすべてのデバイス用にビルドしていますか?
- コンテキストを作成したデバイス用にのみビルドされていますか? (。私は
clCreateProgramWithSource
でprogram
を作成したとき、私は使用されるコンテキストを意味する)
ドキュメントは言う:
device_list:プログラムに関連付けられているデバイスのリストへのポインタ。 device_listがNULL値の場合、実行可能プログラムは、ソースまたはバイナリがロードされているプログラムに関連するすべてのデバイス用に構築されます。 device_listがNULLでない値の場合、実行可能プログラムは、ソースまたはバイナリがロードされているこのリストで指定されたデバイス用に構築されます。
ここではフレーズが少し複雑だと思いますが、それで2番と思いますか?
数1の場合には、私はすべてのデバイスのための余分なコンパイルを避けるために、この機能には、デバイスのリストを渡す必要がありますので、私は求めています。