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