OpenCL Runtime: Platforms, Devices and Contexts¶
Platform¶
- class pyopencl.Platform¶
- info¶
Lower case versions of the
platform_info
constants may be used as attributes on instances of this class to directly query info attributes.
- get_info(param)¶
See
platform_info
for values of param.
- get_devices(device_type=device_type.ALL)¶
Return a list of devices matching device_type. See
device_type
for values of device_type.Changed in version 2013.2: This used to raise an exception if no matching devices were found. Now, it will simply return an empty list.
- classmethod from_int_ptr(int_ptr_value, retain=True)¶
Constructs a
pyopencl
handle from a C-level pointer (given as the integer int_ptr_value). If retain is True (the default)pyopencl
will callclRetainXXX
on the provided object. If the previous owner of the object will not release the reference, retain should be set to False, to effectively transfer ownership topyopencl
.Changed in version 2016.1: retain added
- int_ptr¶
Instances of this class are hashable, and two instances of this class may be compared using “==” and “!=”. (Hashability was added in version 2011.2.) Two objects are considered the same if the underlying OpenCL object is the same, as established by C pointer equality.
Device¶
- class pyopencl.Device¶
- info¶
Lower case versions of the
device_info
constants may be used as attributes on instances of this class to directly query info attributes.
- get_info(param)¶
See
device_info
for values of param.
- classmethod from_int_ptr(int_ptr_value, retain=True)¶
Constructs a
pyopencl
handle from a C-level pointer (given as the integer int_ptr_value). If retain is True (the default)pyopencl
will callclRetainXXX
on the provided object. If the previous owner of the object will not release the reference, retain should be set to False, to effectively transfer ownership topyopencl
.Changed in version 2016.1: retain added
- int_ptr¶
- create_sub_devices(properties)¶
properties is an array of one (or more) of the forms:
[ dpp.EQUALLY, 8] [ dpp.BY_COUNTS, 5, 7, 9, dpp.PARTITION_BY_COUNTS_LIST_END] [ dpp.BY_NAMES, 5, 7, 9, dpp.PARTITION_BY_NAMES_LIST_END] [ dpp.BY_AFFINITY_DOMAIN, dad.L1_CACHE]
where dpp represents
device_partition_property
and dad representdevice_affinity_domain
.PROPERTIES_LIST_END_EXT is added automatically.
Only available with CL 1.2.
New in version 2011.2.
Two instances of this class may be compared using ==” and “!=”.
Context¶
- class pyopencl.Context(devices=None, properties=None, dev_type=None, cache_dir=None)¶
Create a new context. properties is a list of key-value tuples, where each key must be one of
context_properties
. At most one of devices and dev_type may be not None, where devices is a list ofDevice
instances, and dev_type is one of thedevice_type
constants. If neither is specified, a context with a dev_type ofdevice_type.DEFAULT
is created.If cache_dir is not None - it will be used as default cache_dir for all its’
Program
instances builds (see alsoProgram.build()
).Note
Calling the constructor with no arguments will fail for recent CL drivers that support the OpenCL ICD. If you want similar, just-give-me-a-context-already behavior, we recommend
create_some_context()
. See, e.g. this explanation by AMD.Note
Because of how OpenCL changed in order to support Installable Client Drivers (ICDs) in OpenCL 1.1, the following will look reasonable but often actually not work:
import pyopencl as cl ctx = cl.Context(dev_type=cl.device_type.ALL)
Instead, make sure to choose a platform when choosing a device by type:
import pyopencl as cl platforms = cl.get_platforms() ctx = cl.Context( dev_type=cl.device_type.ALL, properties=[(cl.context_properties.PLATFORM, platforms[0])])
Note
For
context_properties.CL_GL_CONTEXT_KHR
,context_properties.CL_EGL_DISPLAY_KHR
,context_properties.CL_GLX_DISPLAY_KHR
,context_properties.CL_WGL_HDC_KHR
, andcontext_properties.CL_CGL_SHAREGROUP_KHR
context_properties.CL_CGL_SHAREGROUP_APPLE
the value in the key-value pair is a PyOpenGL context or display instance.Changed in version 0.91.2: Constructor arguments dev_type added.
- info¶
Lower case versions of the
context_info
constants may be used as attributes on instances of this class to directly query info attributes.
- get_info(param)¶
See
context_info
for values of param.
- classmethod from_int_ptr(int_ptr_value, retain=True)¶
Constructs a
pyopencl
handle from a C-level pointer (given as the integer int_ptr_value). If retain is True (the default)pyopencl
will callclRetainXXX
on the provided object. If the previous owner of the object will not release the reference, retain should be set to False, to effectively transfer ownership topyopencl
.Changed in version 2016.1: retain added
- int_ptr¶
Instances of this class are hashable, and two instances of this class may be compared using “==” and “!=”. (Hashability was added in version 2011.2.) Two objects are considered the same if the underlying OpenCL object is the same, as established by C pointer equality.
- pyopencl.create_some_context(interactive=True, answers=None, cache_dir=None)¶
Create a
Context
‘somehow’.If multiple choices for platform and/or device exist, interactive is True, and sys.stdin.isatty() is also True, then the user is queried about which device should be chosen. Otherwise, a device is chosen in an implementation-defined manner.