15.1. Platform

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

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

15.1.1. pyopencl.Platform

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

Note

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

class pyopencl.Platform

プラットフォームのインスタンスを取得するには「get_platforms」関数を以下のようにして使います。

platforms = pyopencl.get_platforms()

C言語ではclGetPlatformIDs関数を使う必要がありますが、PyOpenCLではこれだけです。

15.1.2. get_devices

デバイスオブジェクトのインスタンスのリストを取得するには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)

(1)

GPUのデバイスリストを取得

(2)

CPUのデバイスリストを取得

15.1.3. get_info

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

Note

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

get_info(param)

引数のparamには、次の項目で解説するpyopencl.platform_infoのプロパティを指定します。

15.1.4. platform_info

Note

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

class pyopencl.platform_info

このクラスには以下のプロパティがあります。

  • EXTENSIONS
  • NAME
  • PROFILE
  • VENDOR
  • VERSION

get_info関数の引数として指定すると、該当する値が戻ります。

例えばベンダー名の情報を取得したい場合は以下のように指定します。

vendor = platform.get_info(cl.platform_info.VENDOR)

Copyright 2018-2019, by Masaki Komatsu