事件¶
- class torch.mtia.Event(device, *, enable_timing)¶
查询并记录 Stream 状态,以识别或控制 Stream 之间的依赖关系并测量时间。
- 参数
device (
torch.device
, 可选) – 事件所需的设备。如果未给出,则使用当前 accelerator 类型。enable_timing (bool, 可选) – 指示事件是否应测量时间(默认值:
False
)。
- 返回值
一个 torch.Event 对象。
- 返回类型
示例
>>> e_cuda = torch.Event(device='cuda')
- elapsed_time(end_event) float ¶
返回此事件与
end_event
分别通过torch.Stream.record_event()
记录之间经过的时间(毫秒)。- 参数
end_event (
torch.Event
) – 已记录的结束事件。- 返回值
起始事件和结束事件之间的时间(毫秒)。
- 返回类型
示例
>>> s_cuda = torch.Stream(device='cuda') >>> e1_cuda = s_cuda.record_event() >>> e2_cuda = s_cuda.record_event() >>> ms = e1_cuda.elapsed_time(e2_cuda)
- query() bool ¶
检查记录此事件的 Stream 是否已越过记录此事件的点。如果事件未记录,则始终返回
True
。- 返回值
一个布尔值,指示当前由事件捕获的所有工作是否已完成。
- 返回类型
示例
>>> s_cuda = torch.Stream(device='cuda') >>> e_cuda = s_cuda.record_event() >>> e_cuda.query() True
- record(stream) None ¶
在给定 Stream 中记录事件。Stream 的设备必须与事件的设备匹配。此函数等效于
stream.record_event(self)
。- 参数
stream (
torch.Stream
, 可选) – 要记录的 Stream。如果未
使用。
示例
>>> e_cuda = torch.Event(device='cuda') >>> e_cuda.record()
- synchronize() None ¶
等待事件完成。这会阻止 CPU 线程继续执行,直到事件完成。
示例
>>> s_cuda = torch.Stream(device='cuda') >>> e_cuda = s_cuda.record_event() >>> e_cuda.synchronize()
- wait(stream) None ¶
使提交到给定 Stream 的所有未来工作都等待此事件。
- 参数
stream (
torch.Stream
, 可选) – 要同步的 Stream。如果未
使用。
示例
>>> s1_cuda = torch.Stream(device='cuda') >>> s2_cuda = torch.Stream(device='cuda') >>> e_cuda = s1_cuda.record() >>> e_cuda.wait(s2)