15.2. 実装例

以下のコードがget_info関数の実装例となります。

上級者のためにfrom_int_ptr関数についての参考例も掲載していますが、これはOpenCLオブジェクトへのCポインタを取得する関数であり、pyopenclのモジュールを開発する用途でもなければ使うことはないでしょう。

PlatformTest.py. 

import pyopencl as cl

platforms = cl.get_platforms()
device = platforms[0].get_devices(cl.device_type.ALL)

platform = platforms[0]

extensions = platform.get_info(cl.platform_info.EXTENSIONS)

print("platform extensions: "+str(extensions))

name = platform.get_info(cl.platform_info.NAME)

print("name: " + str(name))

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

print("vendor: " + str(vendor))

version = platform.get_info(cl.platform_info.VERSION)

print("version: " + str(version))

# For pyopencl module developer
# Retrieve the c-pointer to opencl object
# This would allow other python API to interact with the opencl object

platref = platform.from_int_ptr(platform.int_ptr)

if platref == platform and type(platref) is type(platform):
    print("pointer identity is confirmed.")

if platref != device:
    print("pass: another identity test")

出力. 

/Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5 /Users/komatsu/PycharmProjects/MyPythonProject/PlatformTest.py
platform extensions: cl_APPLE_SetMemObjectDestructor cl_APPLE_ContextLoggingFunctions cl_APPLE_clut cl_APPLE_query_kernel_names cl_APPLE_gl_sharing cl_khr_gl_event
name: Apple
vendor: Apple
version: OpenCL 1.2 (Apr 26 2016 00:05:53)
pointer identity is confirmed.
pass: another identity test

Copyright 2018-2019, by Masaki Komatsu