aclrtCreateStreamWithConfig

函数功能

在当前进程或线程中创建一个Stream,同步接口。

Atlas 200/300/500 推理产品上,使用本接口与aclrtCreateStream接口是等价的。

Atlas 推理系列产品上,相比aclrtCreateStream接口,使用本接口可以创建一个快速下发任务的Stream,但会增加内存消耗或CPU的性能消耗。

Atlas 训练系列产品上,相比aclrtCreateStream接口,使用本接口可以创建一个快速下发任务的Stream,但会增加内存消耗或CPU的性能消耗。

Atlas A2训练系列产品,相比aclrtCreateStream接口,使用本接口可以创建一个快速下发任务的Stream,但会增加内存消耗或CPU的性能消耗。

函数原型

aclError aclrtCreateStreamWithConfig(aclrtStream *stream, uint32_t priority, uint32_t flag)

参数说明

参数名

输入/输出

说明

stream

输出

Stream的指针。

priority

输入

优先级。

当前固定设置为0,预留参数,暂不使用。

flag

输入

Stream指针的flag。

取值范围:

  • ACL_STREAM_FAST_LAUNCH:使用该模式创建出来的Stream,在使用Stream时,下发任务的速度更快。

    相比aclrtCreateStream接口创建出来的Stream,在使用Stream时才会申请系统内部资源,导致下发任务的时长增加,使用本接口的ACL_STREAM_FAST_LAUNCH模式创建Stream时,会在创建Stream时预申请系统内部资源,因此创建Stream的时长增加,下发任务的时长缩短,总体来说,创建一次Stream,使用多次的场景下,总时长缩短,但创建Stream时预申请内部资源会增加内存消耗。

  • ACL_STREAM_FAST_SYNC:使用该模式创建出来的Stream,在调用aclrtSynchronizeStream接口时,会阻塞当前线程,主动查询任务的执行状态,一旦任务完成,立即返回。

    相比aclrtCreateStream接口创建出来的Stream,在调用aclrtSynchronizeStream接口时,会一直被动等待Device上任务执行完成的通知,等待时间长,使用本接口的ACL_STREAM_FAST_SYNC模式创建的Stream,没有被动等待,总时长缩短,但主动查询的操作会增加CPU的性能消耗。

说明:

配置取值范围之外的值,本接口创建出来的Stream等同于aclrtCreateStream接口。

返回值说明

返回0表示成功,返回其它值表示失败。