|
产品 |
是否支持 |
|---|---|
|
|
√ |
|
|
√ |
|
|
√ |
|
|
√ |
|
|
√ |
|
|
√ |
在当前进程或线程中创建Stream。
1
|
aclError aclrtCreateStreamWithConfig(aclrtStream *stream, uint32_t priority, uint32_t flag) |
|
参数名 |
输入/输出 |
说明 |
|---|---|---|
|
stream |
输出 |
Stream的指针。类型定义请参见aclrtStream。 |
|
priority |
输入 |
优先级。 该参数取值范围:[0, 7],总共最多支持8个优先级,数字越小代表优先级越高,其中,0的优先级最高,7的优先级最低。如果设置的优先级超过取值范围,则就近修正为边界值。 |
|
flag |
输入 |
Stream指针的flag。 flag参数值请参见“flag取值说明”。 |
flag既支持配置单个宏,也支持配置多个宏位或(例如ACL_STREAM_FAST_LAUNCH | ACL_STREAM_FAST_SYNC)。对于不支持位或的宏,本接口会返回报错。配置其他值创建出来的Stream等同于通过aclrtCreateStream接口创建出来的Stream。
相比aclrtCreateStream接口创建出来的Stream,在使用Stream时才会申请系统内部资源,导致下发任务的时长增加,使用本接口的ACL_STREAM_FAST_LAUNCH模式创建Stream时,会在创建Stream时预申请系统内部资源,因此创建Stream的时长增加,下发任务的时长缩短,总体来说,创建一次Stream,使用多次的场景下,总时长缩短,但创建Stream时预申请内部资源会增加内存消耗。
#define ACL_STREAM_FAST_LAUNCH 0x00000001U
相比aclrtCreateStream接口创建出来的Stream,在调用aclrtSynchronizeStream接口时,会一直被动等待Device上任务执行完成的通知,等待时间长,使用本接口的ACL_STREAM_FAST_SYNC模式创建的Stream,没有被动等待,总时长缩短,但主动查询的操作会增加CPU的性能消耗。
#define ACL_STREAM_FAST_SYNC 0x00000002U
#define ACL_STREAM_PERSISTENT 0x00000004U
当前版本设置该flag不生效。
#define ACL_STREAM_HUGE 0x00000008U
#define ACL_STREAM_CPU_SCHEDULE 0x00000010U
#define ACL_STREAM_DEVICE_USE_ONLY 0x00000020U
如下产品型号支持ACL_STREAM_DEVICE_USE_ONLY:
返回0表示成功,返回其他值表示失败,请参见aclError。
接口调用示例,参见配置Stream优先级。