「clGetDeviceInfo」の版間の差分
細 |
細 |
||
53行: | 53行: | ||
{{!}} CL_DEVICE_MAX_WORK_ITEM_SIZES | {{!}} CL_DEVICE_MAX_WORK_ITEM_SIZES | ||
{{!}} [[size_t]] [] | {{!}} [[size_t]] [] | ||
− | {{!}} [[clEnqueueNDRangeKernel]] | + | {{!}} [[clEnqueueNDRangeKernel]] に指定するワークグループごとのワークアイテム数のそれぞれの次元についての最大値を返します。CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS で返される値の個数の [[size_t]] エントリが返されます。最小値は (1, 1, 1) です。 |
{{!-}} | {{!-}} | ||
{{!}} CL_DEVICE_MAX_WORK_GROUP_SIZE | {{!}} CL_DEVICE_MAX_WORK_GROUP_SIZE |
2011年6月22日 (水) 10:42時点における版
cl_int clGetDeviceInfo (cl_device_id device, cl_device_info param_name, size_t param_value_size, void *param_value, size_t *param_value_size_ret)
OpenCLデバイスについての情報を取得します。
パラメータ
- device
- clGetDeviceIDs で取得したデバイスを指定します。
- param_name
- 取得する情報を指定します。下記の表にある値からひとつ選んで指定できます。
- param_value
- 下記の表にしたがって param_name に指定した情報についての値が返されるメモリ空間へのポインタです。NULL の場合は無視されます。
- param_value_size
- param_value が指すメモリのサイズをバイトで指定します。このサイズは、下記の表で示されている戻り値型のサイズ以上でなければなりません。
- param_value_size_ret
- param_value にコピーされるデータの実際のサイズをバイトで返します。NULL の場合は無視されます。
取得できる情報
param_name で指定できる情報およびこれに対応して param_value に返される情報を以下の表に示しています。
1.1 : OpenCL 1.1で追加
cl_device_info | 戻り値型 | 解説 |
---|---|---|
CL_DEVICE_TYPE | cl_device_type | OpenCLデバイスのタイプを返します。現在サポートされている値は、
のいずれかです。 |
CL_DEVICE_VENDOR_ID | cl_uint | デバイスベンダのユニークな識別子を返します。ユニークなデバイス識別子の一例として、PCIe の ID があります。 |
CL_DEVICE_MAX_COMPUTE_UNITS | cl_uint | OpenCLデバイス上の並列演算コアの数を返します。最小値は1です。 |
CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS | cl_uint | データ並列実行モデル(clEnqueueNDRangeKernel 参照)で用いるグローバル・ローカルワークアイテムIDの次元数の最大値を返します。最小値は3です。 |
CL_DEVICE_MAX_WORK_ITEM_SIZES | size_t [] | clEnqueueNDRangeKernel に指定するワークグループごとのワークアイテム数のそれぞれの次元についての最大値を返します。CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS で返される値の個数の size_t エントリが返されます。最小値は (1, 1, 1) です。 |
CL_DEVICE_MAX_WORK_GROUP_SIZE | size_t | データ並列実行モデル(clEnqueueNDRangeKernel 参照)を用いたカーネル実行における、ひとつのワークグループ内のワークアイテム数の最大値を返します。最小値は1です。 |
CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR
CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF |
cl_uint | ベクトル化できる組み込みスカラ型について、推奨されるベクトルサイズを返します。ベクトルサイズはベクトル内に格納できるスカラ要素の数として定義されます。
cl_khr_fp64 がサポートされていない場合、CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE は0を返さなければなりません。 cl_khr_fp16 がサポートされていない場合、CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF は0を返さなければなりません。 |
CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR
CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT CL_DEVICE_NATIVE_VECTOR_WIDTH_INT CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF |
cl_uint | 命令セットアーキテクチャ? (ISA) のネイティブベクトルサイズを返します。ベクトルサイズはベクトル内に格納できるスカラ要素の数として定義されます。
cl_khr_fp64 がサポートされていない場合、CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE は0を返さなければなりません。 cl_khr_fp16 がサポートされていない場合、CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF は0を返さなければなりません。 |
CL_DEVICE_MAX_CLOCK_FREQUENCY | cl_uint | デバイスの最大設計クロック周波数を MHz で返します。 |
CL_DEVICE_ADDRESS_BITS | cl_uint | 演算デバイスのアドレス空間のサイズを符号なし整数値としてビットで返します。サポートされるのは32ビットか64ビットです。 |
CL_DEVICE_MAX_MEM_ALLOC_SIZE | cl_ulong | メモリオブジェクトとして確保できる最大のメモリサイズをバイトで返します。最小値は、「CL_DEVICE_GLOBAL_MEM_SIZE の4分の1」と「128*1024*1024」 のうち値の大きなほうになります。 |
CL_DEVICE_IMAGE_SUPPORT | cl_bool | OpenCLデバイスがイメージをサポートする場合は CL_TRUE、サポートしない場合は CL_FALSE になります。 |
CL_DEVICE_MAX_READ_IMAGE_ARGS | cl_uint | カーネルが同時に読み込めるイメージオブジェクトの最大数を返します。CL_DEVICE_IMAGE_SUPPORT が CL_TRUE の場合、最小値は128です。 |
CL_DEVICE_MAX_WRITE_IMAGE_ARGS | cl_uint | カーネルが同時に書き込めるイメージオブジェクトの最大数を返します。CL_DEVICE_IMAGE_SUPPORT が CL_TRUE の場合、最小値は8です。 |
CL_DEVICE_IMAGE2D_MAX_WIDTH | size_t | 2Dイメージの幅の最大サイズをピクセルで返します。CL_DEVICE_IMAGE_SUPPORT が CL_TRUE の場合、最小値は8192です。 |
CL_DEVICE_IMAGE2D_MAX_HEIGHT | size_t | 2Dイメージの高さの最大サイズをピクセルで返します。CL_DEVICE_IMAGE_SUPPORT が CL_TRUE の場合、最小値は8192です。 |
CL_DEVICE_IMAGE3D_MAX_WIDTH | size_t | 3Dイメージの幅の最大サイズをピクセルで返します。CL_DEVICE_IMAGE_SUPPORT が CL_TRUE の場合、最小値は2048です。 |
CL_DEVICE_IMAGE3D_MAX_HEIGHT | size_t | 3Dイメージの高さの最大サイズをピクセルで返します。CL_DEVICE_IMAGE_SUPPORT が CL_TRUE の場合、最小値は2048です。 |
CL_DEVICE_IMAGE3D_MAX_DEPTH | size_t | 3Dイメージの深さの最大サイズをピクセルで返します。CL_DEVICE_IMAGE_SUPPORT が CL_TRUE の場合、最小値は2048です。 |
CL_DEVICE_MAX_SAMPLERS | cl_uint | カーネルで利用できるサンプラーの最大数を返します。CL_DEVICE_IMAGE_SUPPORT が CL_TRUE の場合、最小値は16です。 |
CL_DEVICE_MAX_PARAMETER_SIZE | size_t | カーネルに渡せる引数の最大サイズをバイトで返します。最小値は1024(OpenCL 1.0 では 256)です。返される値が最小値と同じ場合、カーネルに渡せる引数の数は最大で128になります。 |
CL_DEVICE_MEM_BASE_ADDR_ALIGN | cl_uint | 確保されるメモリオブジェクトのベースアドレスのアラインメントをビットで返します。 |
CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE | cl_uint | どのデータ型でも用いることのできるアラインメントの最小値をバイトで返します。 |
CL_DEVICE_SINGLE_FP_CONFIG | cl_device_fp_config | デバイスの単精度浮動小数点処理能力を示します。結果はビットフィールドで返され、以下の値の組み合わせになります。
浮動小数点処理についての最小要件は以下のとおりです
|
CL_DEVICE_GLOBAL_MEM_CACHE_TYPE | cl_device_mem_cache_type | グローバルメモリのキャッシュのタイプを返します。有効な値は以下のとおりです。
|
CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE | cl_uint | グローバルメモリのキャッシュラインのサイズをバイトで返します。 |
CL_DEVICE_GLOBAL_MEM_CACHE_SIZE | cl_ulong | グローバルメモリのキャッシュのサイズをバイトで返します。 |
CL_DEVICE_GLOBAL_MEM_SIZE | cl_ulong | グローバルメモリのサイズをバイトで返します。 |
CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE | cl_ulong | 確保できるコンスタントバッファの最大サイズをバイトで返します。最小値は64KBです。 |
CL_DEVICE_MAX_CONSTANT_ARGS | cl_uint | カーネルで __constant 修飾子をつけて宣言できる引数の最大数を返します。最小値は8です。 |
CL_DEVICE_LOCAL_MEM_TYPE | cl_device_local_mem_type | ローカルメモリのタイプを返します。有効な値は以下のとおりです。
|
CL_DEVICE_LOCAL_MEM_SIZE | cl_ulong | ローカルメモリ領域のサイズをバイトで返します。最小値は32KB(OpenCL 1.0 では 16KB)です。 |
CL_DEVICE_ERROR_CORRECTION_SUPPORT | cl_bool | デバイスメモリ(グローバルおよびコンスタント)に対する全てのアクセスについてのエラー訂正機能がデバイスに実装されている場合は CL_TRUE となり、そうでない場合は CL_FALSE になります。 |
CL_DEVICE_HOST_UNIFIED_MEMORY | cl_bool | ホストとデバイスが統一されたメモリサブシステムをもつ場合は CL_TRUE、そうでない場合は CL_FALSE を返します。 |
CL_DEVICE_PROFILING_TIMER_RESOLUTION | size_t | デバイスタイマーの解像度を返します。単位はナノ秒になります。 |
CL_DEVICE_ENDIAN_LITTLE | cl_bool | デバイスがリトルエンディアンの場合は CL_TRUE、そうでない場合は CL_FALSE を返します。 |
CL_DEVICE_AVAILABLE | cl_bool | デバイスが利用可能な場合は CL_TRUE、そうでない場合は CL_FALSE を返します。 |
CL_DEVICE_COMPILER_AVAILABLE | cl_bool | プログラムソースをコンパイルするために利用できるコンパイラが無い場合は CL_FALSE、コンパイラが利用可能な場合は CL_TRUE を返します。 |
CL_DEVICE_EXECUTION_CAPABILITIES | cl_device_exec_capabilities | デバイスの実行能力を示します。結果はビットフィールドで返され、以下の値の組み合わせになります。
実行についての最小要件は以下のとおりです
|
CL_DEVICE_QUEUE_PROPERTIES | cl_command_queue_properties | デバイスによってサポートされるコマンドキューの特性を示します。結果はビットフィールドで返され、以下の値の組み合わせになります。
最小要件は以下のとおりです
|
CL_DEVICE_PLATFORM | cl_platform_id | デバイスと関連付けられているプラットフォームを返します。 |
CL_DEVICE_NAME | char [] | デバイス名を文字列で返します。 |
CL_DEVICE_VENDOR | char [] | デバイスベンダ名を文字列で返します。 |
CL_DRIVER_VERSION | char [] | OpenCLソフトウェアドライバのバージョンを次の形式の文字列で返します。
|
CL_DEVICE_PROFILE[1] | char [] | デバイスがサポートするOpenCLプロファイルの名称を文字列で返します。返される名称は以下のうちのひとつになります。
|
CL_DEVICE_VERSION | char [] | デバイスがサポートするOpenCLのバージョンを次の形式の文字列で返します。
|
CL_DEVICE_OPENCL_C_VERSION | char [] | このデバイスに対応するコンパイラがサポートする OpenCL C 言語 のバージョンのうち最も高いものを次の形式の文字列で返します。
CL_DEVICE_VERSION が OpenCL 1.0 のとき、major_version.minor_version は 1.0 か 1.1 のいずれかになります。OpenCL C 1.1 が返された場合、OpenCL 1.1 の仕様で規定される OpenCL C 言語 の機能が OpenCL 1.0 デバイスでサポートされていることを示しています。 |
CL_DEVICE_EXTENSIONS | char [] | デバイスがサポートする拡張機能の名称をスペースで区切ったリストの形式の文字列で返します(拡張機能の名称自体にはスペースは含まれません)。返される拡張機能の名称は、ベンダが独自サポートするものとクロノスグループが認証した以下のものがあります
|
エラー
実行が成功した場合、clGetDeviceInfo は CL_SUCCESS を返します。そうでない場合は以下のエラーのうちひとつを返します。
- CL_INVALID_DEVICE - device が有効でないとき。
- CL_INVALID_VALUE - param_name がサポートされている値でない、あるいは、param_value_size で指定されたサイズが上記の表で指定されている戻り値型のサイズより小さくかつ param_value が NULL でないとき。
- CL_OUT_OF_RESOURCES - デバイス上でのリソース確保に失敗したとき。
- CL_OUT_OF_HOST_MEMORY - ホスト上でのリソース確保に失敗したとき。
変更記録
- OpenCL 1.1
- param_name に指定できる値として CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF, CL_DEVICE_NATIVE_VECTOR_WIDTH_{CHAR|SHORT|INT|LONG|FLOAT|DOUBLE|HALF}, CL_DEVICE_HOST_UNIFIED_MEMORY, CL_DEVICE_OPENCL_C_VERSION が追加
- CL_DEVICE_MAX_PARAMETER_SIZE の最小値が256から1024に
- CL_DEVICE_LOCAL_MEM_SIZE の最小値が16KBから32KBに
脚注
- ↑ プラットフォームプロファイルが返すのは、OpenCLフレームワークによって実装されたプロファイルです。プラットフォームプロファイルが FULL_PLATFORM を返すとき、OpenCLフレームワークは FULL_PROFILE のデバイス EMBEDDED_PROFILE のデバイスいずれもサポートします。コンパイラは全てのデバイスについて利用可能、つまり、CL_DEVICE_COMPILER_AVAILABLE は CL_TRUE でなければなりません。プラットフォームプロファイルが EMBEDDED_PROFILE を返すとき、EMBEDDED_PROFILE のデバイスのみがサポートされます。