mindspore.runtime.Stream
- class mindspore.runtime.Stream(priority=0, **kwargs)[源代码]
- 基于设备流的封装器。 设备流是属于特定设备的线性执行序列,流之间相互独立。 - 参数:
- priority (int, 可选) - 流的优先级,较低的数字表示较高的优先级。默认情况下,流的优先级为 - 0。
- kwargs (dict) - 关键字参数字典。 
 
- 支持平台:
- Ascend- GPU
 - 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) >>> s1.synchronize() >>> assert s1.query() 
 - record_event(event=None)[源代码]
- 记录一个事件。 - 参数:
- event (Event, 可选) - 要记录的事件。如果输入为 - None,将分配一个新的事件。默认值:- None。
 
- 返回:
- Event,记录的事件。 
- 异常:
- TypeError - 参数 event 既不是一个 - mindspore.runtime.Event也不是一个- None。
 
- 支持平台:
- Ascend- GPU
 - 样例: - >>> import mindspore as ms >>> import numpy as np >>> from mindspore import Tensor, ops >>> ms.set_device("Ascend", 0) >>> a = Tensor(np.ones([3, 3]), ms.float32) >>> b = Tensor(np.ones([3, 3]), ms.float32) >>> s1 = ms.runtime.Stream() >>> with ms.runtime.StreamCtx(s1): ... c = a + b ... event = s1.record_event() ... d = a * b >>> cur_stream = ms.runtime.current_stream() >>> cur_stream.wait_event(event) >>> e = c + 3 >>> print(e) [[5. 5. 5.] [5. 5. 5.] [5. 5. 5.]] 
 - synchronize()[源代码]
- 等待此流中的所有算子执行完成。 - 支持平台:
- 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) >>> s1.synchronize() >>> assert s1.query() 
 - wait_event(event)[源代码]
- 使提交到流的所有未来工作等待本事件。 - 参数:
- event (Event) - 等待的事件。 
 
- 异常:
- TypeError - 参数 event 不是一个 - mindspore.runtime.Event。
 
- 支持平台:
- Ascend- GPU
 - 样例: - >>> import mindspore as ms >>> import numpy as np >>> from mindspore import Tensor, ops >>> ms.set_device("Ascend", 0) >>> a = Tensor(np.ones([3, 3]), ms.float32) >>> b = Tensor(np.ones([3, 3]), ms.float32) >>> s1 = ms.runtime.Stream() >>> with ms.runtime.StreamCtx(s1): ... c = a + b ... event = s1.record_event() ... d = a * b >>> cur_stream = ms.runtime.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) - 需要同步的流。 
 
- 异常:
- TypeError - 参数 stream 不是一个 - mindspore.runtime.Stream。
 
- 支持平台:
- Ascend- GPU
 - 样例: - >>> import mindspore as ms >>> import numpy as np >>> from mindspore import Tensor, ops >>> ms.set_device("Ascend", 0) >>> s1 = ms.runtime.Stream() >>> s2 = ms.runtime.Stream() >>> a = Tensor(np.ones([1, 2]), ms.float32) >>> b = Tensor(np.ones([2, 2]), ms.float32) >>> with ms.runtime.StreamCtx(s1): ... c = ops.matmul(a, b) >>> with ms.runtime.StreamCtx(s2): ... s2.wait_stream(s1) ... d = ops.matmul(c, b) >>> ms.runtime.synchronize() >>> print(d) [[4. 4.]]