7

OpenCL カーネルをビットストリームにコンパイルして、後で再コンパイルせずに直接ロードする方法を教えてください。私のプラットフォームは、APU と AMD のディスクリート GPU の両方を備えた AMD マシンです。マシンは、OpenCL 1.2 をサポートする最新の AMD APP SDK を実行しています。

4

1 に答える 1

10

1)clCreateProgamWithSource API呼び出しを使用して、カーネルをソースからプログラムにコンパイルします。コンパイラエラーは、clGetProgramBuildInfoAPI呼び出しで取得されます。

2)clGetProgramInfo API呼び出しを使用して、CL_PROGRAM_BINARY_SIZESを取得します。これらは、プログラムバイナリのサイズです。2a)2)のサイズを使用して、バイナリにメモリを割り当てます。

3)clGetProgramInfo API呼び出しを使用して、CL_PROGRAM_BINARIESを取得します。これにより、プログラムのバイナリが取得されます。

4)バイナリは、API呼び出しclCreateProgamWithBinaryを使用してOpenCLプログラムオブジェクトに変換できます。

デバイス固有のバイナリ。特定のデバイスでコンパイルされたバイナリが別のデバイスで実行されないようにします。

単一のプロセスインスタンスの場合、環境(プラットフォーム、デバイス、コンテキスト、およびキュー)ができたら、OpenCLカーネルオブジェクトを再利用し、別のclEnqueueNDRangeAPI呼び出しでそれを再実行できます。

于 2012-07-10T00:42:31.977 に答える