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