OpenCL 1.1/Changes from OpenCL 1.0
提供: Tommy6
Appendix E, OpenCL 1.1 Specification Revision 33 の翻訳を含む。
OpenCLランタイムへの機能の追加と変更
- clGetDeviceInfo への param_name クエリとして以下が追加あるいは変更
- CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF - 半精度型について、推奨されるベクトルサイズを返す。ベクトルサイズはベクトル内に格納できるスカラ要素の数として定義される。
- CL_DEVIDE_NATIVE_VECTOR_WIDTH_{CHAR|SHORT|INT|LONG|FLOAT|DOUBLE|HALF} - 命令セットアーキテクチャ?(ISA)のネイティブベクトルサイズを返す。ベクトルサイズは、ベクトルに格納されるスカラ要素の数として定義される。 cl_khr_fp64 拡張がサポートされていない場合、CL_DEVIDE_NATIVE_VECTOR_WIDTH_DOUBLE は0を返さなければならない。cl_khr_fp16 拡張がサポートされていない場合、CL_DEVIDE_NATIVE_VECTOR_WIDTH_HALF は0を返さなければならない。
- CL_DEVICE_HOST_UNIFIED_MEMORY - デバイスとホストが、統一されたメモリサブシステム(?)を持つのであれば CL_TRUE となり、そうでない場合は CL_FALSE。
- CL_DEVICE_OPENCL_C_VERSION - このデバイスに対応するコンパイラがサポートする OpenCL C 言語 のバージョンのうち最も高いものを文字列で返す。
- CL_DEVICE_MAX_PARAMETER_SIZE - 最小値が256から1024に変更。
- CL_DEVICE_LOCAL_MEM_SIZE - 最小値が16KBから32KBに変更。
- clGetContextInfo への param_name クエリとして CL_CONTEXT_NUM_DEVICES が追加
- clSetCommandQueueProperty が廃止
- clCreateSubBuffer を用いたサブバッファオブジェクト―他のバッファオブジェクトの特定の領域を参照するバッファオブジェクト―作成のサポートが追加
- バッファオブジェクトの矩形領域から読み出し、書き込み、複製を行う clEnqueueReadBufferRect / clEnqueueWriteBufferRect / clEnqueueCopyBufferRect が追加
- メモリオブジェクトが削除されそのリソースが開放されたときに呼び出されるコールバック関数を登録できる clSetMemObjectDestructorCallback が追加
- clGetMemObjectInfo への param_name クエリとして以下が追加
- CL_MEM_ASSOCIATED_MEMOBJECT - memobj が作成されたメモリオブジェクトを返す。clCreateSubBuffer に buffer 引数として指定されたメモリオブジェクトを返す。そうでない場合は NULL を返す。
- CL_MEM_OFFSET - memobj がclCreateSubBufferを用いて作られたサブバッファオブジェクトであるとき、オフセットを返す。memobjがサブバッファオブジェクトでないときは0を返す。
- 実行可能プログラムをビルドする際の OpenCL C のバージョンを指定するオプションが追加
- clGetKernelWorkGroupInfo への param_name クエリとして以下が追加
- CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE - 推奨されるワークグループサイズの倍数を返す。
- CL_KERNEL_PRIVATE_MEM_SIZE - カーネル内でそれぞれのワークアイテムが使用するプライベートメモリの最小量を返す。
- clEnqueueNDRangeKernel の global_work_offset 引数に NULL 以外の値を指定できるように
- ユーザーイベントのサポートが追加。ユーザーイベントによりアプリケーションは、デバイスが実行を開始する前にユーザーイベントの終了を待つコマンドをキューに挿入できるようになる。これをサポートする API として clCreateUserEvent および clSetUserEventStatus が追加。
- 特定のコマンド実行状態に対してコールバック関数を登録する clSetEventCallback が追加。
- clSetKernelArg を除く全ての API 関数がスレッドセーフに。
OpenCL C 言語への機能の追加と変更
- 要素数3のベクトルデータ型のサポートが追加
- 以下の組み込み関数が追加
- マクロ CL_VERSION_1_0 および CL_VERSION_1_1 が追加
- マクロ __ROUNDING_MODE__ が廃止
- 拡張機能 cl_khr_bye_addressable_store をコア機能として統合
- cl_khr_global_int32_base_atomics、cl_khr_global_int32_extended_atomics、cl_khr_local_int32_base_atomics、cl_khr_local_int32_extended_atmoics をコア機能として統合。組み込みアトミック関数としては atom_ プレフィックスの代わりに atomic_ プレフィックスを用いる。
- OpenGL同期オブジェクトからOpenCLイベントオブジェクトを作る拡張機能 cl_khr_gl_event が追加
- Direct3D 10 とメモリオブジェクトを共有する拡張機能 cl_khr_d3d10_sharing が追加
OpenCL組み込みプロファイルへの追加と変更
- cles_khr_int64 で64ビット整数をオプションとしてサポートできるように。