プラットフォームはOpenCLではヘテロジニアスなシステム環境を記述します。プラットフォームは、一つ以上のOpenCLデバイス、各デバイスベンダーが実装したOpenCLフレームワークからなります。
システム上に複数のOpenCL実装ライブラリがある場合や、複数のプロセッサが混在することを考えてください。各デバイスへアクセスするには、利用可能なOpenCLフレームワークを検知しなくてはいけません。プラットフォームは異種のライブラリやデバイスを識別するためのインターフェースであり、まずこのPlatform APIを呼び出してシステム環境の管理をします。
Platformクラスは現在利用可能なOpenCLのプラットフォームの情報を取得します。
詳しくは「表:clGetPlatformIDs」(Table B.9, “表:clGetPlatformIDs”)を参照ください。
class pyopencl.Platform
プラットフォームのインスタンスを取得するには「get_platforms」関数を以下のようにして使います。
platforms = pyopencl.get_platforms()
C言語ではclGetPlatformIDs関数を使う必要がありますが、PyOpenCLではこれだけです。
デバイスオブジェクトのインスタンスのリストを取得するにはget_devices関数を使います。
get_devices(device_type=device_type.ALL)
引数はの型はpyopencl.device_typeとします。ALLは全ての種類のデバイス、CPU、GPU等を選ぶことができます。
この関数を使う場合は以下のようにプラットフォームのリストを取得し、使うプラットフォームを指定し(プラットフォームが一つしかない場合は0を指定)、関数を呼びます。
以下がget_devices関数で頻繁に使用されるデバイスリストの取得例です。
platforms = cl.get_platforms() devices = platforms[0].get_devices(cl.device_type.ALL) devices_gpu = platforms[0].get_devices(cl.device_type.GPU) #(1) devices_gpu = platforms[0].get_devices(cl.device_type.CPU) #(2)
get_info関数はOpenCLプラットフォームについてユーザーが指定した情報を取得します。
詳しくは「表:clGetPlatformInfo」(Table B.10, “表:clGetPlatformInfo”)と「表:cl_platform_info」(Table B.11, “表:cl_platform_info”)を参照ください。
get_info(param)
引数のparamには、次の項目で解説するpyopencl.platform_infoのプロパティを指定します。
詳しくは「表:cl_platform_info」(Table B.11, “表:cl_platform_info”)を参照ください。
class pyopencl.platform_info
このクラスには以下のプロパティがあります。
get_info関数の引数として指定すると、該当する値が戻ります。
例えばベンダー名の情報を取得したい場合は以下のように指定します。
vendor = platform.get_info(cl.platform_info.VENDOR)
Copyright 2018-2019, by Masaki Komatsu