Stream¶
- class paddle.device.cuda. Stream ( device=None, priority=None ) ¶
CUDA stream的句柄。
- 参数:
-
device (paddle.CUDAPlace()|int|None, 可选) - 希望分配stream的设备。如果是None或者负数,则设备为当前的设备。如果是正数,则必须小于设备的个数。默认值为None。
priority (int|None, 可选) - stream的优先级。优先级可以为1(高优先级)或者2(正常优先级)。如果优先级为None,优先级为2(正常优先级)。默认值为None。
代码示例:
# required: gpu
import paddle
s1 = paddle.device.cuda.Stream(paddle.CUDAPlace(0), 1)
s2 = paddle.device.cuda.Stream(0, 1)
s3 = paddle.device.cuda.Stream()
- wait_event ( event ) ¶
使所有将来提交到stream的任务等待event中已获取的任务。
- 参数:
-
event (CUDAEvent) - 要等待的event。
代码示例:
# required: gpu
import paddle
s = paddle.device.cuda.Stream(paddle.CUDAPlace(0), 1)
event = paddle.device.cuda.Event()
s.wait_event(event)
- wait_stream ( stream ) ¶
和给定的stream 保持同步。
- 参数:
-
stream (CUDAStream) - 要同步的stream。
代码示例:
# required: gpu
import paddle
s1 = paddle.device.cuda.Stream(paddle.CUDAPlace(0), 1)
s2 = paddle.device.cuda.Stream(0, 1)
s1.wait_stream(s2)
- query ( ) ¶
返回stream 中所有的操作是否完成的状态。
返回: 一个boolean 值。
代码示例:
# required: gpu
import paddle
s = paddle.device.cuda.Stream(paddle.CUDAPlace(0), 1)
is_done = s.query()
- synchronize ( ) ¶
等待所有的stream的任务完成。
代码示例:
# required: gpu
import paddle
s = paddle.device.cuda.Stream(paddle.CUDAPlace(0), 1)
s.synchronize()
- record_event ( event=None ) ¶
标记一个CUDA event 到当前stream中。
- 参数:
-
event (CUDAEvent,可选) - 要标记的event。如果event 为None,新建一个event。默认值为None。
返回: 被标记的event。
代码示例:
# required: gpu
import paddle
s = paddle.device.cuda.Stream(paddle.CUDAPlace(0), 1)
event = s.record_event()