8.1. Platform

プラットフォームはOpenCLではヘテロジニアスなシステム環境を記述します。プラットフォームは、一つ以上のOpenCLデバイス、各デバイスベンダーが実装したOpenCLフレームワークからなります。

システム上に複数のOpenCL実装ライブラリがある場合や、複数のプロセッサが混在することを考えてください。各デバイスへアクセスするには、利用可能なOpenCLフレームワークを検知しなくてはいけません。プラットフォームは異種のライブラリやデバイスを識別するためのインターフェースであり、まずこのPlatform APIを呼び出してシステム環境の管理をします。

8.1.1. clGetPlatformIDs

clGetPlatformIDs関数は現在利用可能なOpenCLのプラットフォームの情報を取得します。

注記

詳しくは「表:clGetPlatformIDs」(表B.9「表:clGetPlatformIDs」)を参照ください。

int org.jocl.CL.clGetPlatformIDs(
    int num_entries, //(1)
    cl_platform_id[] platforms, //(2)
    int[] num_platforms) //(3)

(1)

platforms引数に追加可能なcl_platform_idエントリーの数を指定。platforms引数がNULL以外のときは、num_entriesは0より大きな値となる必要があります。

(2)

検知したOpenCLプラットフォームのリストを戻します。platforms内に戻されたcl_platform_id値は特定のOpenCLプラットフォームを指定するために使います。platforms引数がNULL値のときは無視されます。

(3)

取得可能なOpenCLプラットフォームの数を戻します。num_platforms引数がNULLのときは無視されます。

8.1.2. clGetPlatformInfo

clGetPlatformInfo関数はOpenCLプラットフォームについてユーザーが指定した情報を取得します。

注記

詳しくは「表:clGetPlatformInfo」(表B.10「表:clGetPlatformInfo」)と「表:cl_platform_info」(表B.11「表:cl_platform_info」)を参照ください。

int org.jocl.CL.clGetPlatformInfo(
    cl_platform_id platform, //(1)
    int param_name, //(2)
    long param_value_size, //(3)
    Pointer param_value, //(4)
    long[] param_value_size_ret) //(5)

(1)

clGetPlatformIDsで取得したプラットフォームIDまたはNULL値。platform引数がNULLの場合のふるまいは実装システムに依存します。

(2)

クエリーするプラットフォームの情報を識別する列挙定数です。定数は以下のテーブルに掲載しています。

(3)

param_valueが指すメモリのサイズ(バイトで表す)。

(4)

param_nameで指定したデータのための記憶域のポインタオブジェクトです。

(5)

param_valueでクエリーしたデータの実際のサイズです。param_value_size_retがNULL値のときは無視されます。

8.1.3. cl_platform_info

注記

詳しくは「表:cl_platform_info」(表B.11「表:cl_platform_info」)を参照ください。

Copyright 2018-2019, by Masaki Komatsu