mindspore.hal.Event
- class mindspore.hal.Event(enable_timing=False, blocking=False)[源代码]
设备事件的封装器,此接口将在后续版本中废弃,请使用接口
mindspore.runtime.Event
代替。设备事件是同步标记,可用于监视设备的执行进度、准确计时和同步设备流。
当事件首次被记录时,底层设备事件才会被初始化。
- 参数:
enable_timing (bool, 可选) - 事件是否应计时。默认
False
。blocking (bool, 可选) - 如果为
True
, wait 函数将是阻塞的。默认False
。
样例:
>>> import mindspore >>> start = mindspore.hal.Event(enable_timing=True) >>> end = mindspore.hal.Event(enable_timing=True) >>> s1 = mindspore.hal.Stream() >>> s2 = mindspore.hal.Stream() >>> a = mindspore.tensor(mindspore.ops.ones([2, 2]), mindspore.float32) >>> b = mindspore.tensor(mindspore.ops.ones([2, 2]), mindspore.float32) >>> c = mindspore.tensor(mindspore.ops.ones([2, 2]), mindspore.float32) >>> with mindspore.hal.StreamCtx(s1): ... d = mindspore.ops.matmul(a, b) ... start.record() >>> c += 2 >>> end.record() >>> with mindspore.hal.StreamCtx(s2): ... start.synchronize() ... end.synchronize() ... e = c + d >>> mindspore.hal.synchronize() >>> print(e) [[5. 5.] [5. 5.]] >>> elapsed_time = start.elapsed_time(end)
- elapsed_time(end_event)[源代码]
返回记录事件之后到记录end_event之前所用的时间(以毫秒为单位)。
- 参数:
end_event (Event) - 结束事件。
- 返回:
float,经过的时间(以毫秒为单位)。
- query()[源代码]
检查事件当前捕获的所有工作是否已完成。
- 返回:
bool,指示事件当前捕获的所有工作是否都已完成。
样例:
>>> import mindspore >>> a = mindspore.tensor(mindspore.ops.ones([1024, 2048]), mindspore.float32) >>> b = mindspore.tensor(mindspore.ops.ones([2048, 4096]), mindspore.float32) >>> s1 = mindspore.hal.Stream() >>> with mindspore.hal.StreamCtx(s1): ... c = mindspore.ops.matmul(a, b) ... ev = s1.record_event() >>> s1.synchronize() >>> assert ev.query()
- record(stream=None)[源代码]
在给定的流中记录事件。
如果未指定 stream,将使用
mindspore.hal.current_stream()
。- 参数:
stream (Stream, 可选) - 需要记录的流。如果输入为
None
,将使用当前流。默认None
。
- wait(stream=None)[源代码]
使提交给给定流的所有未来工作等待此事件。
如果未指定 stream,将使用
mindspore.hal.current_stream()
。- 参数:
stream (Stream, 可选) - 需要等待的流。如果输入为
None
,将使用当前流。默认None
。
样例:
>>> import mindspore >>> event = mindspore.hal.Event() >>> s1 = mindspore.hal.Stream() >>> s2 = mindspore.hal.Stream() >>> a = mindspore.tensor(mindspore.ops.ones([2, 2]), mindspore.float32) >>> b = mindspore.tensor(mindspore.ops.ones([2, 2]), mindspore.float32) >>> with mindspore.hal.StreamCtx(s1): ... c = mindspore.ops.matmul(a, b) ... event.record() >>> event.wait() >>> d = c + 2 >>> mindspore.hal.synchronize() >>> print(d) [[4. 4.] [4. 4.]]