aclrtCreateStream
产品支持情况
|
产品 |
是否支持 |
|---|---|
|
Atlas 350 加速卡 |
√ |
|
|
√ |
|
|
√ |
|
|
√ |
|
|
√ |
|
|
√ |
功能说明
创建Stream。
该接口不支持设置Stream的优先级;若不设置,Stream的优先级默认为最高。如需在创建Stream时设置优先级,请参见aclrtCreateStreamWithConfig接口。
若不显式调用Stream创建接口,那么每个Context对应一个默认Stream,该默认Stream是调用aclrtSetDevice接口或aclrtCreateContext接口隐式创建的,默认Stream的优先级不支持设置,为最高优先级。默认Stream适合简单、无复杂交互逻辑的应用,但缺点在于,在多线程编程中,执行结果取决于线程调度的顺序。显式创建的Stream适合大型、复杂交互逻辑的应用,且便于提高程序的可读性、可维护性,推荐显式。
函数原型
1
|
aclError aclrtCreateStream(aclrtStream *stream) |
参数说明
|
参数名 |
输入/输出 |
说明 |
|---|---|---|
|
stream |
输出 |
Stream的指针。类型定义请参见aclrtStream。 |
返回值说明
返回0表示成功,返回其他值表示失败,请参见aclError。
约束说明
不同型号的硬件支持的Stream最大数不同,如果已存在多个Stream(包含默认Stream),则只能显式创建N个Stream,N = Stream最大数 - 已存在的Stream数。例如,Stream最大数为1024,已存在2个Stream,则只能调用本接口显式创建1022个Stream。
- 对于Atlas 350 加速卡、
Atlas A3 训练系列产品 /Atlas A3 推理系列产品 、Atlas A2 训练系列产品 /Atlas A2 推理系列产品 ,Stream最大数为1984。 - 对于
Atlas 200I/500 A2 推理产品 ,Stream最大数为512。 - 对于
Atlas 推理系列产品 ,Stream最大数为1024。 Atlas 训练系列产品 ,Stream最大数为2048。多进程场景下,若一次性创建的Stream数量总和接近2048,可能会出现创建Stream失败的情况,此时,建议:
(1)清理冗余Stream,减少不必要的Stream;
(2)调整代码逻辑,分批创建Stream,例如第一批创建部分Stream,然后第二批再创建部分Stream,以此类推,直到Stream总数接近2048。