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.
- from_int_ptr(int_ptr_value: int, retain: bool = True) pyopencl._cl.Platform ¶
(static method) Return a new Python object referencing the C-level
cl_platform_id
object at the location pointed to by int_ptr_value. The relevantclRetain*
function will be called if retain is True.If the previous owner of the object will not release the reference, retain should be set to False, to effectively transfer ownership topyopencl
.Added in version 2013.2.
Changed in version 2016.1: retain added.
- int_ptr¶
Return an integer corresponding to the pointer value of the underlying
cl_platform_id
. Usefrom_int_ptr()
to turn back into a Python object.Added in version 2013.2.
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¶
Two instances of this class may be compared using ==” and “!=”.
- 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.
- from_int_ptr(int_ptr_value: int, retain: bool = True) pyopencl._cl.Device ¶
(static method) Return a new Python object referencing the C-level
cl_device_id
object at the location pointed to by int_ptr_value. The relevantclRetain*
function will be called if retain is True.If the previous owner of the object will not release the reference, retain should be set to False, to effectively transfer ownership topyopencl
.Added in version 2013.2.
Changed in version 2016.1: retain added.
- int_ptr¶
Return an integer corresponding to the pointer value of the underlying
cl_device_id
. Usefrom_int_ptr()
to turn back into a Python object.Added in version 2013.2.
- hashable_model_and_version_identifier¶
An unspecified data type that can be used to (as precisely as possible, given identifying information available in OpenCL) identify a given model and software stack version of a compute device. Note that this identifier does not differentiate between different instances of the same device installed in a single host.
The returned data type is hashable.
Added in version 2020.1.
- 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
representsdevice_partition_property
anddad
representdevice_affinity_domain
.PROPERTIES_LIST_END_EXT
is added automatically.Only available with CL 1.2.
Added in version 2011.2.
- device_and_host_timer()¶
- Returns:
a tuple
(device_timestamp, host_timestamp)
.
Only available with CL 2.0.
Added in version 2020.3.
- host_timer()¶
Only available with CL 2.0.
Added in version 2020.3.
- pyopencl.choose_devices(interactive: bool | None = None, answers: list[str] | None = None) list[Device] [source]¶
Choose
Device
instances ‘somehow’.- Parameters:
interactive – If multiple choices for platform and/or device exist, interactive is
True
(orNone
andsys.stdin.isatty()
returnsTrue
), then the user is queried about which device should be chosen. Otherwise, a device is chosen in an implementation-defined manner.answers – A sequence of strings that will be used to answer the platform/device selection questions.
- Returns:
a list of
Device
instances.
Context¶
- class pyopencl.Context(devices=None, properties=None, dev_type=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.Note
Calling the constructor with no arguments may fail for CL drivers that support the OpenCL ICD (which applies to most modern systems). If you want similar, just-give-me-a-context-already behavior, we recommend
create_some_context()
.See e.g. this explanation by AMD:
What has changed?
In previous beta releases functions such as clGetDeviceIDs() and clCreateContext() accepted a NULL value for the platform parameter. This release no longer allows this - the platform must be a valid one obtained by using the platform API.
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.
- from_int_ptr(int_ptr_value: int, retain: bool = True) pyopencl._cl.Context ¶
(static method) Return a new Python object referencing the C-level
cl_context
object at the location pointed to by int_ptr_value. The relevantclRetain*
function will be called if retain is True.If the previous owner of the object will not release the reference, retain should be set to False, to effectively transfer ownership topyopencl
.Added in version 2013.2.
Changed in version 2016.1: retain added.
- int_ptr¶
Return an integer corresponding to the pointer value of the underlying
cl_context
. Usefrom_int_ptr()
to turn back into a Python object.Added in version 2013.2.
- set_default_device_command_queue(dev, queue)¶
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: bool | None = None, answers: list[str] | None = None) Context [source]¶
Create a
Context
‘somehow’.- Parameters:
interactive – If multiple choices for platform and/or device exist, interactive is
True
(orNone
andsys.stdin.isatty()
returnsTrue
), then the user is queried about which device should be chosen. Otherwise, a device is chosen in an implementation-defined manner.answers – A sequence of strings that will be used to answer the platform/device selection questions.
- Returns:
an instance of
Context
.