aclrtCreateStream
函数功能
在当前进程或线程中创建一个Stream。
约束说明
- 每个Context对应一个默认Stream,该默认Stream是调用aclrtSetDevice接口或aclrtCreateContext接口隐式创建的。推荐调用aclrtCreateStream接口显式创建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 推理系列产品(Ascend 310P处理器),硬件资源最多支持1024个Stream,
- 标准形态下,如果已存在多个默认Stream,只能显式创建N个Stream(N=1024-默认Stream个数-执行内部同步的Stream个数),例如,若已存在一个默认Stream和一个执行内部同步的Stream,则只能显式创建1022个Stream。
- 对于Atlas 训练系列产品,硬件资源最多支持2048个Stream,如果已存在多个默认Stream,只能显式创建N个Stream(N=2048-默认Stream个数-执行内部同步的Stream个数),例如,若已存在一个默认Stream和一个执行内部同步的Stream,则只能显式创建2046个Stream。
多进程场景下,若一次性创建的Stream数量总和接近2048,可能会出现创建Stream失败的情况,此时,建议:(1)清理冗余Stream,减少不必要的Stream;(2)调整代码逻辑,分批创建Stream,例如第一批创建部分Stream,然后第二批再创建部分Stream,以此类推,直到Stream总数接近2048。
- 对于Atlas A2训练系列产品,硬件资源最多支持2048个Stream,如果已存在多个默认Stream,只能显式创建N个Stream(N=2048-默认Stream个数-执行内部同步的Stream个数),例如,若已存在一个默认Stream和一个执行内部同步的Stream,则只能显式创建2046个Stream。
函数原型
aclError aclrtCreateStream(aclrtStream *stream)
参数说明
参数名 |
输入/输出 |
说明 |
---|---|---|
stream |
输出 |
Stream的指针。 |
返回值说明
返回0表示成功,返回其它值表示失败。
参考资源
接口调用流程及示例,参见运行管理资源申请与释放。
父主题: Stream管理