表B.12 表:clGetDeviceIDs
関数 | ||
cl_int | clGetDeviceIDs ( cl_platform_id platform, cl_device_type device_type, cl_uint num_entries, cl_device_id *devices, cl_uint *num_devices ) | |
プラットフォームで使用可能なデバイスを取得します。 | ||
引数 | ||
platform | clGetPlatformIDsで取 得したプラットフォームIDを 指定します(NULL値も指定可能)。 platformがNULL値のときの 振る舞いは実装に依存します。 | |
device_type | 取得するOpenCLデバイス の種類を識別するビット フィールドです。device_type は特定のOpenCLデバイスをク エリーするときや、全ての有効 なOpenCLデバイスを取得する ことにも使えます。使用可能な 値は下記テーブルを参照。 | |
num_entries | devicesに追加可能な cl_device_idエントリの数 を指定。devicesがNULLでな い場合は、num_entriesは0 より大きい必要がある。 | |
devices | OpenCLデバイスのリスト を戻す。devices内に戻され たcl_device_idの値は、 特定のOpenCLデバイスを指定 するのに使える。devicesが NULLの場合は無視。戻される OpenCLデバイスの数は、 num_entriesで指定した値と device_typeと一致する OpenCLデバイスの数のうち値 が小さいものとなる。 | |
num_devices | device_typeとマッチ する有効なOpenCLデバイス の個数を戻す。num_devices がNULLの場合は無視。 | |
成功した場合の戻り値 | ||
CL_SUCCESS | ||
失敗した場合の戻り値 | ||
CL_INVALID_ DEVICE_TYPE | device_typeが有効 でない値の場合。 | |
CL_INVALID_ VALUE | num_entriesが0に等 しく、devicesがNULL でない場合。 num_devicesとdevices の両方がNULLの場合。 | |
CL_DEVICE_ NOT_FOUND | device_typeにマッチ したOpenCLデバイスが見 つからない場合。 | |
CL_OUT_OF_ RESOURCES | デバイス上のOpenCL 実装が必要とするリソース 確保に失敗した場合。 | |
CL_OUT_OF_ HOST_MEMORY | ホスト上のOpenCL実装 が必要とするリソース確 保に失敗した場合。 |
表B.13 表:cl_device_type
cl_device_type | Description  |
CL_DEVICE_ TYPE_CPU  | ホストプロセッサとなっ ているOpenCLデバイス。 ホストプロセッサはOpenCL 実装を動かすもので、シン グル又はマルチコアの CPUとなる。  |
CL_DEVICE_ TYPE_GPU | GPUを指す。これはOpenGL やDirectXといった3D API をアクセラレートするのにも 用いることが可能。 |
CL_DEVICE_ TYPE_ ACCELERATOR | IBM CELLなどのようなアク セラレータ。これらのデバイス は、PCIeのような接続手段を 用いてホストプロセッ サと通信する。 |
CL_DEVICE_ TYPE_CUSTOM   | OpenCL Cで書いたプログラム をサポートしない専用の アクセラレータ。  |
CL_DEVICE_ TYPE_DEFAULT | システムの既定のOpenCL デバイス。CL_DEVICE_ TYPE_CUSTOMとすること はできない。 |
CL_DEVICE_ TYPE_ALL   | システム上の有効なOpneCL デバイス全て。 (CL_DEVICE_TYPE_CUSTOMは除く) |
表B.14 表: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デバイスについての情報を取得します。device に指定するデバイスはclGetDeviceIDsが戻すデバイス、 またはclCreateSubDevicesで生成したサブデバイスです。 device引数にサブデバイスを指定した場合は、サブデバイス に関する情報が戻ります。 | ||
引数 | ||
device | clGetDeviceIDsで 取得したデバイスを指定します。 | |
param_name | 取得する情報を指定します。 | |
param_value | param_nameで指定した 情報の値が戻るメモリ空間への ポインタです。NULL 値の場合 は無視されます。 | |
param_value_ size | param_valueが指す (バイトで表す)メモリサイズ。 | |
param_value_ size_ret | param_valueでクエリー されるデータの実際の(バイト で表す)サイズ。NULL値は無 視されます。 | |
成功した場合の戻り値 | ||
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 | ホスト上でのリソース 確保に失敗した場合。) |
表B.15 表:cl_device_info
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_TYPE_CUSTOMです。 |
CL_DEVICE_ VENDOR_ID   | cl_uint    | デバイスベンダのユニークな 識別子。例としてPCIeのID等 あります。  |
CL_DEVICE_ MAX_ COMPUTE_ UNITS | cl_uint | OpenCLデバイス上の並列演算 ユニット(CU)の数。ワークグ ループは単一の演算ユニット (CU)で実行するものとし、最 小値は1です。 |
CL_DEVICE_ MAX_WORK_ ITEM_ DIMENSIONS | cl_uint   | データ並列実行モデル (clEnqueueNDRangeKernel 参照で使うグローバル・ローカル ワークアイテムIDの次元数の最 大値。CL_DEVICE_TYPE_CUSTOM 以外のデバイスにおける最小値は3です。  |
CL_DEVICE_ MAX_WORK_ ITEM_SIZES | size_t [] | clEnqueueNDRangeKernel が指定する各ワークグループの ワークアイテム数の各次元につ いての最大値。 CL_DEVICE_MAX_WORK_ ITEM_DIMENSIONSが戻す値の 個数がnのとき、n個のsize_t エントリーを戻します。CL_ DEVICE_TYPE_CUSTOM以外の デバイスにおける最小値は (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_ TYPE_CUSTOM型のデバイスは除外)  |
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 | 1Dイメージまたは2D イメージの幅の(ピクセル で表す)最大サイズ。 CL_DEVICE_IMAGE_ SUPPORTがCL_TRUEの場合 は最小値は8192です。 |
CL_DEVICE_ IMAGE2D_ MAX_HEIGHT   | size_t  | 2次元イメージの高さの (ピクセルで表す)最大 サイズ。CL_DEVICE_ IMAGE_SUPPORTが CL_TRUEの場合は最小値 は8192です。 |
CL_DEVICE_ IMAGE3D_ MAX_WIDTH | size_t | 3次元イメージの幅の (ピクセルで表す)最大 サイズ。CL_DEVICE_ IMAGE_SUPPORTが CL_TRUEの場合は最小値 は2048です。 |
CL_DEVICE_ IMAGE3D_ MAX_HEIGHT   | size_t    | 3次元イメージの高さの (ピクセルで表す)最大サ イズ。CL_DEVICE_ IMAGE_SUPPORTがCL_TRUE の場合は最小値は2048です。 |
CL_DEVICE_ IMAGE3D_ MAX_DEPTH | size_t | 3次元イメージの深さの (ピクセルで表す)最大 サイズ。CL_DEVICE_ IMAGE_SUPPORTがCL_ TRUEの場合は最小値は 2048です。 |
CL_DEVICE_ IMAGE_MAX_ BUFFER_SIZE | size_t | 1次元イメージの最大 ピクセルの個数。CL_DEVICE_ IMAGE_SUPPORTがCL_TRUE の場合は最小値は65536です。 |
CL_DEVICE_ IMAGE_MAX_ ARRAY_SIZE   | size_t  | 1次元または2次元 イメージアレイのイメージ 最大数。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です (CL_DEVICE_TYPE_ CUSTOM型のデバイスは除外)。 戻す値が最小値と同じ場合 、カーネルに渡せる引数 の数は最大で128です。   |
CL_DEVICE_ MEM_BASE_ ADDR_ALIGN | cl_uint | 確保されるメモリオブジェ クトのベースアドレスのア ラインメントをビットで返します。 最小値はデバイスがサポート するOpenCL組み込みデータ型 の(ビットで表す)最大サ イズです(CL_DEVICE_ TYPE_CUSTOM型のデバイス は除外)。例えばFULLプロ ファイルの場合はlong16、 EMBEDDEDプロファイルの場 合はlong16/int16です。  |
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) をサポートします。 CL_FP_SOFT_FLOAT - 基本的な浮動小数点操作 (加算、減算、乗算など)を実装 浮動小数点処理の最小要件は CL_FP_INF_NAN | CL_FP_ROUND_TO_NEAREST となります。 |
CL_DEVICE_ DOUBLE_ 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) をサポートします。 CL_FP_SOFT_FLOAT - 基本的な浮動小数点操作 (加算、減算、乗算など) を実装。 倍精度浮動小数点は任意選 択機能のため最小要件は0です。 倍精度浮動小数点がデバイス でサポートする場合は倍精度 浮動小数点処理の最小要件は CL_FP_FMA | CL_FP_ROUND_TO_NEAREST | CL_FP_ROUND_TO_ZERO | CL_FP_ROUND_TO_INF | CL_FP_INF_NAN | CL_FP_DENORM. となります。 |
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_ TYPE_CUSTOM型のデバイス は除外)  |
CL_DEVICE_ LOCAL_ MEM_TYPE | cl_device_ local_ mem_type | ローカルメモリの種類を 返します。 値がCL_LOCALのときは、 SRAMまたはCL_GLOBALの ような専用のローカルメモ リの記憶域があることを示 唆します。 カスタムデバイスでは、 ローカルメモリーをサポー トしないことを指す CL_NONEとできます。 |
CL_DEVICE_ LOCAL_ MEM_SIZE   | cl_ulong    | ローカルメモリ領域の (バイトで表す)サイズ。 最小値は32KBです。 (CL_DEVICE_TYPE_ CUSTOM型のデバイスは 除外)  |
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 | OpenCLデバイスがリトル エンディアンの場合は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_ LINKER_ AVAILABLE | cl_bool | 使用可能なリンカーが 無い場合はCL_FALSE。 リンカーが使用可能な 場合はCL_TRUEとなり ます。CL_DEVICE_ COMPILER_AVAILABLE がCL_TRUEのときは、 CL_TRUEとなります。   |
CL_DEVICE_ EXECUTION_ CAPABILITIES | cl_device_ exec_ capabilities | デバイスの実行能力を記述。 以下の一つ以上の値を記述 するビットフィールドを 戻します。 CL_EXEC_KERNEL :OpenCLカーネルを実行可能。 CL_EXEC_NATIVE_KERNEL :ネイティブカーネルを実行可能。 実行についての最小要件は CL_EXEC_KERNEL となります。 |
CL_DEVICE_ QUEUE_ PROPERTIES | cl_command_ queue_ properties | デバイスがサポートする コマンドキューのプロパ ティを記述。以下の一つ 以上の値を記述するビット フィールドを戻します。 下記2つの値を取ります。 CL_QUEUE_OUT_ OF_ORDER_EXEC_ MODE_ENABLE CL_QUEUE_ PROFILING_ENABLE 最小要件は CL_QUEUE_ PROFILING_ENABLE となります。 |
CL_DEVICE_ BUILT_ IN_KERNELS | char[] | デバイスがサポートする 組込みカーネルで要素区 切りがセミコロンのリスト。 組込みカーネルがサポート されない場合は空文字列 を戻します。 |
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_ PROFILE5 | char[] | OpenCLプロファイル の文字列。デバイスが サポートするOpenCL プロファイル名を戻し 、値は以下のうち一つ となります。 FULL_PROFILE - デバイスがOpenCL の仕様をサポートする 場合 EMBEDDED_PROFILE - OpenCL組み込みプ ロファイルをサポート する場合 |
CL_DEVICE_ VERSION   | char[]  | デバイスがサポート するOpenCLのバージ ョンを次の形式の文字 列で戻します。 OpenCL<space> <major_version.minor_version> <space> <vendor-specific information> 例えばOpenCL 1.2では 「1.2」が戻り値となります。 |
CL_DEVICE_ OPENCL_ C_VERSION | char[]   | OpenCL C言語のバージョン を示す文字列。このデバイス に対応するコンパイラが サポートする OpenCL C言 語のバージョンのうち最も高 いものを次の形式の文字列で 戻します。(CL_DEVICE_ TYPE_CUSTOMの場合は除外) OpenCL<space>C <space> <major_version. minor_version> <space> <vendor-specific information> CL_DEVICE_VERSION がOpenCL 1.2のときは、 major_version.minor_ versionは1.2です。 CL_DEVICE_VERSIONが OpenCL 1.1のときは、 major_version.minor_ versionは1.1です。 CL_DEVICE_VERSIONが OpenCL 1.0のときは、 major_version.minor_ versionは1.0か1.1の いずれかです。  |
CL_DEVICE_ EXTENSIONS | char[] | デバイスがサポートする 拡張機能名をスペースで区 切ったリストの文字列を戻 します(拡張機能の名称自 体にはスペースは含みませ ん)。返される拡張機能の 名称は、ベンダが独自サポ ートするものとKhronosグ ループが承認した以下のも のがあります。 cl_khr_int64_ base_atomics cl_khr_int64_ extended_atomics cl_khr_3d_ image_writes cl_khr_fp16 cl_khr_gl_sharing cl_khr_gl_event cl_khr_d3d10_ sharing cl_khr_dx9_ media_sharing cl_khr_d3d11_ sharing cl_khr_depth_ images cl_khr_gl_ depth_images cl_khr_gl_ msaa_sharing cl_khr_image2d_ from_buffer cl_khr_ initialize_memory cl_khr_context_ abort cl_khr_spir 次のKhronosグループ が承認した拡張機能名 は全てのOpenCL1.2を サポートするデバイス で戻されます。 cl_khr_global_ int32_base_atomics cl_khr_global_ int32_extended_ atomics cl_khr_local_ int32_base_atomics cl_khr_local_ int32_extended_ atomics cl_khr_byte_ addressable_store cl_khr_fp64 |
CL_DEVICE_ PRINTF_ BUFFER_SIZE | size_t | カーネル内のprintf コールの出力を持つ内部 バッファーの最大値。 FULLプロファイルの 最小値は1MBです。  |
CL_DEVICE_ PREFERRED_ INTEROP_ USER_SYNC | cl_bool | OpenCLと他のAPI (DirectX等)とのメモ リ共有を行なう際、メモ リ同期についてユーザー が責任をもつようにデバ イスの環境設定がなってい る場合はCL_TRUE。デバ イス・実装が、OpenCLと 他のAPIで共有するメモリ オブジェクトの同期につい ての実行経路を持つ場合 はCL_FALSE。  |
CL_DEVICE_ REFERENCE_ COUNT | cl_uint | デバイスの参照カウント を戻します。デバイスが ルートレベル(サブデバ イスではない)の場合は、 参照カウント1が戻され ます。(本書ではサブデ バイスの紹介はしないた め、デバイスは1でカウン トされるものと考えてく ださい。)   |
Copyright 2018-2019, by Masaki Komatsu