mindspore.hal.Stream

查看源文件
class mindspore.hal.Stream(priority=0, **kwargs)[源代码]

基于设备流的封装器,此接口将在后续版本中废弃,请使用接口 mindspore.runtime.Stream 代替。

设备流是属于特定设备的线性执行序列,流之间相互独立。

参数:
  • priority (int, 可选) - 流的优先级,较低的数字表示较高的优先级。默认情况下,流的优先级为 0

  • kwargs (dict) - 关键字参数字典。

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)
>>> s1.synchronize()
>>> assert s1.query()
record_event(event=None)[源代码]

记录一个事件。

参数:
  • event (Event, 可选) - 要记录的事件。如果输入为 None,将分配一个新的事件。默认值: None

返回:

Event,记录的事件。

样例:

>>> import mindspore
>>> a = mindspore.tensor(mindspore.ops.ones([3, 3]), mindspore.float32)
>>> b = mindspore.tensor(mindspore.ops.ones([3, 3]), mindspore.float32)
>>> s1 = mindspore.hal.Stream()
>>> with mindspore.hal.StreamCtx(s1):
...     c = a + b
...     event = s1.record_event()
...     d = a * b
>>> cur_stream = mindspore.hal.current_stream()
>>> cur_stream.wait_event(event)
>>> e = c + 3
>>> print(e)
[[5. 5. 5.]
 [5. 5. 5.]
 [5. 5. 5.]]
synchronize()[源代码]

等待此流中的所有算子执行完成。

样例:

>>> 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)
>>> s1.synchronize()
>>> assert s1.query()
wait_event(event)[源代码]

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

参数:
  • event (Event) - 等待的事件。

样例:

>>> import mindspore
>>> a = mindspore.tensor(mindspore.ops.ones([3, 3]), mindspore.float32)
>>> b = mindspore.tensor(mindspore.ops.ones([3, 3]), mindspore.float32)
>>> s1 = mindspore.hal.Stream()
>>> with mindspore.hal.StreamCtx(s1):
...     c = a + b
...     event = s1.record_event()
...     d = a * b
>>> cur_stream = mindspore.hal.current_stream()
>>> cur_stream.wait_event(event)
>>> e = c + 3
>>> print(e)
[[5. 5. 5.]
 [5. 5. 5.]
 [5. 5. 5.]]
wait_stream(stream)[源代码]

与另一个流同步。

所有提交到本流的未来工作都将等待,直到所有算子都提交至给定流并执行完成。

参数:
  • stream (Stream) - 需要同步的流。

样例:

>>> import mindspore
>>> s1 = mindspore.hal.Stream()
>>> s2 = mindspore.hal.Stream()
>>> a = mindspore.tensor(mindspore.ops.ones([1, 2]), mindspore.float32)
>>> b = mindspore.tensor(mindspore.ops.ones([2, 2]), mindspore.float32)
>>> with mindspore.hal.StreamCtx(s1):
...     c = mindspore.ops.matmul(a, b)
>>> with mindspore.hal.StreamCtx(s2):
...     s2.wait_stream(s1)
...     d = mindspore.ops.matmul(c, b)
>>> mindspore.hal.synchronize()
>>> print(d)
[[4. 4.]]