函数:create_stream
产品支持情况
产品 |
是否支持 |
---|---|
|
√ |
|
√ |
|
√ |
|
√ |
|
√ |
|
√ |
功能说明
在当前进程或线程中创建一个Stream。
函数原型
- C函数原型
1
aclError aclrtCreateStream(aclrtStream *stream)
- python函数
1
stream, ret = acl.rt.create_stream()
参数说明
无
返回值说明
返回值 |
说明 |
---|---|
stream |
int,返回创建的Stream的指针地址。 |
ret |
int,错误码,返回0表示成功,返回其它值表示失败。 |
约束说明
- 每个Context对应一个默认Stream,该默认Stream是调用acl.rt.set_device接口或acl.rt.create_context接口隐式创建的。推荐调用acl.rt.create_stream接口显式创建Stream。
- 隐式创建Stream:适合简单、无复杂交互逻辑的应用,但缺点在于,在多线程编程中,执行结果取决于线程调度的顺序。
- 显式创建Stream:推荐显式,适合大型、复杂交互逻辑的应用,且便于提高程序的可读性、可维护性。
Atlas 200/300/500 推理产品 - 硬件资源最多支持1024个Stream。
- 如果已存在多个默认Stream,只能显式创建N个Stream(N = 1024 - 默认Stream个数 - 执行内部同步的Stream个数)。
例如,若已存在一个默认Stream和一个执行内部同步的Stream,则只能显式创建1022个Stream。
Atlas 200I/500 A2 推理产品 - 硬件资源最多支持512个Stream。
- 如果已存在多个默认Stream,只能显式创建N个Stream(N = 512 - 默认Stream个数 - 执行内部同步的Stream个数)。
例如,若已存在一个默认Stream和一个执行内部同步的Stream,则只能显式创建510个Stream。
Atlas 推理系列产品 Atlas 训练系列产品 - 硬件资源最多支持2048个Stream。
- 如果已存在多个默认Stream,只能显式创建N个Stream(N = 2048 - 默认Stream个数 - 执行内部同步的Stream个数)。
例如,若已存在一个默认Stream和一个执行内部同步的Stream,则只能显式创建2046个Stream。
- 多进程场景下,若一次性创建的Stream数量总和接近2048,可能会出现创建Stream失败的情况,此时,建议进行以下操作:
Atlas A2 训练系列产品 /Atlas 800I A2 推理产品 /A200I A2 Box 异构组件- 硬件资源最多支持1984个Stream。
- 如果已存在多个默认Stream,只能显式创建N个Stream(N = 1984 - 默认Stream个数 - 执行内部同步的Stream个数)。
例如,若已存在一个默认Stream和一个执行内部同步的Stream,则只能显式创建2046个Stream。
-
- 硬件资源最多支持1984个Stream。
- 如果已存在多个默认Stream,只能显式创建N个Stream(N = 1984 - 默认Stream个数 - 执行内部同步的Stream个数)。
- 例如,若已存在一个默认Stream和一个执行内部同步的Stream,则只能显式创建2046个Stream。
父主题: Stream管理