- CLHandleType
- CLGetInfoInteger
- CLGetInfoString
- CLContextCreate
- CLContextFree
- CLGetDeviceInfo
- CLProgramCreate
- CLProgramFree
- CLKernelCreate
- CLKernelFree
- CLSetKernelArg
- CLSetKernelArgMem
- CLSetKernelArgMemLocal
- CLBufferCreate
- CLBufferFree
- CLBufferWrite
- CLBufferRead
- CLExecute
- CLExecutionStatus
OpenCL 操作
OpenCLプログラムは OpenCL1.1以上をサポートするビデオカード上の計算を実行するために使用されます。現代のビデオカードには、着信されたデータストリームを同時に単純な数学的操作を実行することが出来る小さな専用プロセッサの数百人が含まれています。OpenCLの言語は、並列コンピューティングを整理し、特定クラスのタスクためのより大きな速度を提供します。
グラフィックカードによっては double 型の数の操作はデフォルトでは無効にされています。これはコンパイルエラー5105 につながります。double 型数値のサポートを有効にするには #pragma OPENCL EXTENSION cl_khr_fp64 : enable ディレクティブをお使いのプログラムに追加してください。グラフィックカードが double をサポートしない場合は、ディレクティブの使用はサポートを有効にしません。
OpenCL用のソースコードは別のCLファイルに書き込むことをお勧めします。これらのファイルは後にリソース変数を使用してMQL5プログラムに組み込むことができます。
OpenCL プログラムでのエラー処理
OpenCLプログラムで直近のエラーに関する情報を取得するには、エラーコードとテキスト記述を取得できるようにするCLGetInfoIntegerおよびCLGetInfoString関数を使用します。
OpenCLの直近のエラー コード: 直近のOpenCLエラーを取得するには、CLGetInfoIntegerを呼び出します。handleパラメータは無視されます(ゼロに設定できます)。エラーの説明:https://registry.khronos.org/OpenCL/specs/3.0-unified/html/OpenCL_API.html#CL_SUCCESS。
不明なエラーコードの場合、「unknown OpenCL error N」という文字列が返されます。N はエラーコードです。例:
//--- 直近のエラーコードを取得するとき、最初のhandleパラメータは無視される
|
OpenCLエラーの文字での説明:直近のOpenCLエラーを取得するには、CLGetInfoStringを呼び出します。エラー コードは、handleパラメータとして渡す必要があります。
エラーの説明:https://registry.khronos.org/OpenCL/specs/3.0-unified/html/OpenCL_API.html#CL_SUCCESS. エラーコードの代わりにCL_LAST_ERRORが渡された場合、関数は最後のエラーの説明を返します。例:
//--- 直近のOpenCLエラーのコードを取得する
|
これまでのところ、エラー記述として内部列挙の名前が示されています。そのデコードはhttps://registry.khronos.org/OpenCL/specs/3.0-unified/html/OpenCL_API.html#CL_SUCCESSで確認できます。たとえば、CL_INVALID_KERNEL_ARGS 値は、「一部のカーネル引数が設定されていないか無効な場合に、カーネルをキューに入れるときに返される」ことを意味します。
OpenCL でプログラムを実行するための関数
関数 |
アクション |
---|---|
OpenCL ハンドルの型をENUM_OPENCL_HANDLE_TYPE 列挙の値として返します。 |
|
OpenCL オブジェクトまたはデバイスから整数プロパティ値を返します。 |
|
OpenCL コンテキストを作成します。 |
|
OpenCL コンテキストを削除します。 |
|
OpenCL ドライバからデバイスプロパティを受け取ります。 |
|
OpenCLプログラムをソースコードから作成します。 |
|
OpenCLプログラムを削除します。 |
|
OpenCL start 関数を作成します。 |
|
OpenCL start 関数を削除します。 |
|
OpenCL 関数のパラメータを設定します。 |
|
OpenCL バッファを OpenCL 関数のパラメータをして設定します。 |
|
ローカルバッファをカーネル関数の引数として設定します。 |
|
OpenCL バッファを作成します。 |
|
OpenCL バッファを削除します。 |
|
配列を OpenCL バッファに書き込みます。 |
|
OpenCL バッファを配列に読み込みます。 |
|
OpenCLプログラムを実行します。 |
|
OpenCLプログラム実行ステータスを返します。 |
参照