2017-10-03 4 views
0

clBuildProgramは、プログラムを作成するデバイスのリストを与えることができます。これは宣言の中でnum_devicesdevice_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, ... 
  1. それはPC内のすべてのデバイス用にビルドしていますか?
  2. コンテキストを作成したデバイス用にのみビルドされていますか? (。私はclCreateProgramWithSourceprogramを作成したとき、私は使用されるコンテキストを意味する)

ドキュメントは言う:

device_list:プログラムに関連付けられているデバイスのリストへのポインタ。 device_listがNULL値の場合、実行可能プログラムは、ソースまたはバイナリがロードされているプログラムに関連するすべてのデバイス用に構築されます。 device_listがNULLでない値の場合、実行可能プログラムは、ソースまたはバイナリがロードされているこのリストで指定されたデバイス用に構築されます。

ここではフレーズが少し複雑だと思いますが、それで2番と思いますか?


数1の場合には、私はすべてのデバイスのための余分なコンパイルを避けるために、この機能には、デバイスのリストを渡す必要がありますので、私は求めています。

答えて

2

2)が正しい。コンパイルは、プログラムのコンテキストに関連付けられたデバイスのみに制限されます。コンテキストがすべての単一のデバイスを使用して作成されていない限り、システム内のすべての単一のデバイスにすることはできません。

関連する問題