clGetDeviceInfo

提供: Tommy6
移動: 案内検索
OpenCL > OpenCLマニュアル > OpenCLランタイム > OpenCLデバイス > clGetDeviceInfo

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デバイスについての情報を取得します。

-1.1() : OpenCL 1.1で削除

+1.1() : OpenCL 1.1で追加

パラメータ

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 に返される情報を以下の表に示しています。

cl_device_info 戻り値型 解説
CL_DEVICE_TYPE cl_device_type OpenCLデバイスのタイプを返します。現在サポートされている値は、
  • CL_DEVICE_TYPE_CPU
  • CL_DEVICE_TYPE_GPU
  • CL_DEVICE_TYPE_ACCELERATOR
  • CL_DEVICE_TYPE_DEFAULT
  • 上記の組み合わせ

のいずれかです。

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

+1.1(CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF)

cl_uint ベクトル化できる組み込みスカラ型について、推奨されるベクトルサイズを返します。ベクトルサイズはベクトル内に格納できるスカラ要素の数として定義されます。

cl_khr_fp64 がサポートされていない場合、CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE は0を返さなければなりません。

+1.1(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)です。+1.1(返される値が最小値と同じ場合、カーネルに渡せる引数の数は最大で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_FP_DENORM - 非正規化数が利用できます
  • CL_FP_INF_NAN - INF および quiet NaN が利用できます
  • CL_FP_ROUND_TO_NEAREST - 最近接偶数丸めモードが利用できます
  • CL_FP_ROUND_TO_ZERO - 0方向丸めモードが利用できます
  • CL_FP_ROUND_TO_INF - 正無限大方向丸めモードおよび負無限大方向丸めモードが利用できます
  • CL_FP_FMA - IEEE 754-2008 で規定されている Fused Multiply-Add (FMA) が利用できます。
  • +1.1(CL_FP_SOFT_FLOAT - 基本的な浮動小数点操作(加算、減算、乗算など)がソフトウェアで実装されています)

浮動小数点処理についての最小要件は以下のとおりです

  • CL_FP_INF_NAN | CL_FP_ROUND_TO_NEAREST
CL_DEVICE_GLOBAL_MEM_CACHE_TYPE cl_device_mem_cache_type グローバルメモリのキャッシュのタイプを返します。有効な値は以下のとおりです。
  • CL_NONE
  • CL_READ_ONLY_CACHE
  • CL_READ_WRITE_CACHE
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_LOCAL - SRAMのような専用のローカルメモリが用意されていることを示唆しています
  • CL_GLOBAL
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_FALSE を返す可能性があるのは組み込みプロファイルのみです。

CL_DEVICE_EXECUTION_CAPABILITIES cl_device_exec_capabilities デバイスの実行能力を示します。結果はビットフィールドで返され、以下の値の組み合わせになります。

最小要件は以下のとおりです

  • CL_EXEC_KERNEL
CL_DEVICE_QUEUE_PROPERTIES cl_command_queue_properties デバイスによってサポートされるコマンドキューの特性を示します。結果はビットフィールドで返され、以下の値の組み合わせになります。
  • CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE
  • CL_QUEUE_PROFILING_ENABLE

最小要件は以下のとおりです

  • CL_QUEUE_PROFILING_ENABLE
CL_DEVICE_PLATFORM cl_platform_id デバイスと関連付けられているプラットフォームを返します。
CL_DEVICE_NAME char [] デバイス名を文字列で返します。
CL_DEVICE_VENDOR char [] デバイスベンダ名を文字列で返します。
CL_DRIVER_VERSION char [] OpenCLソフトウェアドライバのバージョンを次の形式の文字列で返します。
  • major_number.minor_number
CL_DEVICE_PROFILE[1] char [] デバイスがサポートするOpenCLプロファイルの名称を文字列で返します。返される名称は以下のうちのひとつになります。
  • FULL_PROFILE - デバイスがOpenCLの仕様をサポートする場合(コア仕様として定義されている機能。拡張機能のサポートは求められない)
  • EMBEDDED_PROFILE - OpenCL組み込みプロファイルをサポートする場合
CL_DEVICE_VERSION char [] デバイスがサポートするOpenCLのバージョンを次の形式の文字列で返します。
  • OpenCL<space><major_version.minor_version><space><vendor-specific information>
CL_DEVICE_OPENCL_C_VERSION char [] デバイスに対応するコンパイラがサポートする OpenCL C 言語 のバージョンのうち最も高いものを次の形式の文字列で返します。
  • OpenCL<space>C<space><major_version.minor_version><space><vendor-specific information>

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 でないとき。
  • +1.1(CL_OUT_OF_RESOURCES - デバイス上でのリソース確保に失敗したとき。)
  • +1.1(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に
  • CL_DEVICE_SINGLE_FP_CONFIG で返される値に CL_FP_SOFT_FLOAT が追加
  • CL_DEVICE_EXTENSIONS で返される値に cl_khr_gl_event, cl_khr_d3d10_sharing が追加

脚注

  1. プラットフォームプロファイルが返すのは、OpenCLフレームワークによって実装されたプロファイルです。プラットフォームプロファイルが FULL_PLATFORM を返すとき、OpenCLフレームワークは FULL_PROFILE のデバイス EMBEDDED_PROFILE のデバイスいずれもサポートします。全てのデバイスでコンパイラが利用可能、つまり、CL_DEVICE_COMPILER_AVAILABLE が CL_TRUE でなければなりません。プラットフォームプロファイルが EMBEDDED_PROFILE を返すとき、EMBEDDED_PROFILE のデバイスのみがサポートされます。


―――― Version 1.1, The OpenCL Specification より翻訳