OpenCL运行时:命令队列和事件

命令队列

class pyopencl.CommandQueue(context, device=None, properties=None)

创建新的命令队列。 性质 位字段由 command_queue_properties 价值观。

如果 装置 是无,是中的一个设备 语境 以实现定义的方式选择。

性质 可以是来自 queue_properties (或) None 相当于通过 0 ). 这与opencl1.x和2.x都兼容。

对于OpenCL 2.0及更高版本, 性质 也可以是来自 queue_properties 已被接受 clCreateCommandQueueWithProperties() (有关详细信息,请参见OpenCL规范)。尾随 0 是自动添加的,不需要包括在内。

A CommandQueue 可以用作上下文管理器,如下所示:

with cl.CommandQueue(self.cl_context) as queue:
    enqueue_stuff(queue, ...)

finish()with -分隔的上下文。

2013.1 新版功能: 上下文管理器功能。

在 2018.2 版更改: 为opencl2添加了属性序列接口。

info

的小写版本 command_queue_info 常量可以用作此类实例上的属性,以直接查询信息属性。

get_info(param)

command_queue_info 对于价值 param .

set_property(prop, enable)

command_queue_properties 对于可能的值 prop . 使可能 是一个 bool .

在opencl1.1及更新版本中不可用。

flush()
finish()
static from_int_ptr(int_ptr_value: int, retain: bool = True)pyopencl._cl.CommandQueue

(静态方法)返回一个引用C级的新Python对象 cl_command_queue 对象指向的位置 int_ptr_value . 相关的 clRetain* 函数将被调用,如果 保持 是是的,如果对象的前所有者将 not 释放引用, 保持 应设置为 ,有效地将所有权转移给 pyopencl .

2013.2 新版功能.

在 2016.1 版更改: 保持 补充。

int_ptr

返回与基础 cl_command_queue . 使用 from_int_ptr() 返回到Python对象。

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.

事件

class pyopencl.Event
info

的小写版本 event_info 常量可以用作此类实例上的属性,以直接查询信息属性。

profile

的实例 ProfilingInfoGetter .

get_info(param)

event_info 对于价值 param .

get_profiling_info(param)

profiling_info 对于价值 param . 见 profile 为了更容易获得相同的信息。

wait()
static from_int_ptr(int_ptr_value: int, retain: bool = True)pyopencl._cl.Event

(静态方法)返回一个引用C级的新Python对象 cl_event 对象指向的位置 int_ptr_value . 相关的 clRetain* 函数将被调用,如果 保持 是是的,如果对象的前所有者将 not 释放引用, 保持 应设置为 ,有效地将所有权转移给 pyopencl .

2013.2 新版功能.

在 2016.1 版更改: 保持 补充。

int_ptr

返回与基础 cl_event . 使用 from_int_ptr() 返回到Python对象。

2013.2 新版功能.

set_callback(type, cb)

添加回调 cb 有签名 cb(status) 事件状态的回调队列 type (价值之一) command_execution_status 除外 command_execution_status.QUEUED

请参阅OpenCL规范以了解对什么的限制 cb 可能做也可能不做。

2015.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.

class pyopencl.ProfilingInfoGetter
info

的小写版本 profiling_info 常量可以用作属性上的属性 profile 直接查询分析信息。

例如,您可以使用 evt.profile.end 而不是 evt.get_profiling_info(pyopencl.profiling_info.END) .

事件子类

class pyopencl.UserEvent(context)

一个子类 Event . 仅适用于OpenCL 1.1及更新版本。

0.92 新版功能.

set_status(status)

command_execution_status 对于可能的值 地位 .

class pyopencl.NannyEvent

主机和设备之间的传输返回此类型的事件。它们持有对主机端缓冲区的引用,并在释放时等待传输完成。因此,他们可以在破坏时安全地释放对所保护对象的引用。

一个子类 Event .

2011.2 新版功能.

get_ward()
wait()

除了执行与 Event.wait() ,此方法还释放对受保护对象的引用。

同步功能

pyopencl.wait_for_events(events)
pyopencl.enqueue_barrier(queue, wait_for=None)

在障碍物操作中排队。它确保命令队列中所有排队的命令都已完成执行。此命令是一个同步点。

0.91.5 新版功能.

在 2011.2 版更改: wait_for 并返回 Event

pyopencl.enqueue_marker(queue, wait_for=None)

返回一个 Event .

在 2011.2 版更改: wait_for .