评价此页

#

torch.mtia.Stream(device, *, priority)#

一个按顺序执行相应任务的队列,异步执行,遵循先进先出 (FIFO) 的顺序。它可以控制或同步其他 Stream 的执行,或阻塞当前主机线程以确保正确的任务排序。它支持 with 语句作为上下文管理器,以确保 with 块内的运算符在相应的流上运行。

有关适用于所有设备的精确语义的详细信息,请参阅 CUDA 语义

参数
  • device (torch.device, optional) – Stream 的期望设备。如果未给出,则使用当前的 加速器 类型。

  • priority (int, optional) – stream 的优先级,应为 0 或负数,其中负数表示更高的优先级。默认情况下,stream 的优先级为 0。

返回

一个 torch.Stream 对象。

返回类型

示例

>>> with torch.Stream(device='cuda') as s_cuda:
>>>     a = torch.randn(10, 5, device='cuda')
>>>     b = torch.randn(5, 10, device='cuda')
>>>     c = torch.mm(a, b)
query() bool#

检查所有提交的工作是否已完成。

返回

一个布尔值,指示此流中的所有内核是否已完成。

返回类型

布尔值

示例

>>> s_cuda = torch.Stream(device='cuda')
>>> s_cuda.query()
True
record_event(event) Event#

记录一个事件。将其入队到 Stream 中,以便从 FIFO 队列的当前点进行进一步同步。

参数

event (torch.Event, optional) – 要记录的事件。如果未给出,将分配一个新的。

返回

记录的事件。

返回类型

事件

示例

>>> s_cuda = torch.Stream(device='cuda')
>>> e_cuda = s_cuda.record_event()
synchronize() None#

等待此流中的所有内核完成。

示例

>>> s_cuda = torch.Stream(device='cuda')
>>> s_cuda.synchronize()
wait_event(event) None#

使提交到此流的所有未来工作等待一个事件。

参数

event (torch.Event) – 要等待的事件。

示例

>>> s1_cuda = torch.Stream(device='cuda')
>>> s2_cuda = torch.Stream(device='cuda')
>>> e_cuda = s1_cuda.record_event()
>>> s2_cuda.wait_event(e_cuda)
wait_stream(stream) None#

与另一个流同步。此流中的所有后续工作都将等待,直到给定流中已提交的所有内核都完成。

参数

stream (torch.Stream) – 要同步的流。

示例

>>> s1_cuda = torch.Stream(device='cuda')
>>> s2_cuda = torch.Stream(device='cuda')
>>> s2_cuda.wait_stream(s1_cuda)