---
title: aclrtCreateStreamWithConfig
description: "| 产品 | 是否支持 |"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/API/runtimeapi/aclcppdevg_03_0069.html
sourcePath: /source/zh/canncommercial/900/API/runtimeapi/aclcppdevg_03_0069.html
indexId: da8ffd86c44a6d3c09f7e8d3694ec35a6adf269a76dfff3a838f9b1483025c8668
---
# aclrtCreateStreamWithConfig

#### 产品支持情况

| 产品 | 是否支持 |
| --- | --- |
| Atlas 350 加速卡 | √ |
| Atlas A3 训练系列产品 / Atlas A3 推理系列产品 | √ |
| Atlas A2 训练系列产品 / Atlas A2 推理系列产品 | √ |
| Atlas 200I/500 A2 推理产品 | √ |
| Atlas 推理系列产品 | √ |
| Atlas 训练系列产品 | √ |


#### 功能说明

在当前进程或线程中创建Stream。

- 针对如下产品型号，相比  aclrtCreateStream
接口，使用本接口可以创建一个快速下发任务的Stream，但会增加内存消耗或CPU的性能消耗。
  Atlas 350 加速卡

  Atlas A3 训练系列产品 / Atlas A3 推理系列产品

  Atlas A2 训练系列产品 / Atlas A2 推理系列产品

  Atlas 推理系列产品

  Atlas 训练系列产品

- 针对如下产品型号，使用本接口与  aclrtCreateStream
接口是等价的。
  Atlas 200I/500 A2 推理产品


#### 函数原型

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


#### 参数说明

| 参数名 | 输入/输出 | 说明 |
| --- | --- | --- |
| stream | 输出 | Stream的指针。类型定义请参见aclrtStream。 |
| priority | 输入 | 优先级。 Atlas 推理系列产品 上，该参数取值范围：[0, 7]，总共最多支持8个优先级，数字越小代表优先级越高，其中，0的优先级最高，7的优先级最低。如果设置的优先级超过取值范围，则就近修正为边界值。 对以下产品，该参数为预留参数，暂不使用，当前固定设置为0： Atlas 350 加速卡 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 Atlas 200I/500 A2 推理产品 Atlas 训练系列产品 |
| flag | 输入 | Stream指针的flag。 flag参数值请参见“flag取值说明”。 |


#### flag取值说明

flag既支持配置单个宏，也支持配置多个宏位或（例如ACL_STREAM_FAST_LAUNCH | ACL_STREAM_FAST_SYNC）。对于不支持位或的宏，本接口会返回报错。配置其他值创建出来的Stream等同于通过aclrtCreateStream接口创建出来的Stream。

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

```
#define ACL_STREAM_FAST_LAUNCH      0x00000001U
```


- ACL_STREAM_FAST_SYNC：使用该flag创建出来的Stream，在调用  aclrtSynchronizeStream
接口时，会阻塞当前线程，主动查询任务的执行状态，一旦任务完成，立即返回。
  相比aclrtCreateStream接口创建出来的Stream，在调用aclrtSynchronizeStream接口时，会一直被动等待Device上任务执行完成的通知，等待时间长，使用本接口的ACL_STREAM_FAST_SYNC模式创建的Stream，没有被动等待，总时长缩短，但主动查询的操作会增加CPU的性能消耗。

```
#define ACL_STREAM_FAST_SYNC        0x00000002U
```


- ACL_STREAM_PERSISTENT：使用该flag创建出来的Stream，在该Stream上下发的任务不会立即执行、任务执行完成后也不会立即销毁，在销毁Stream时才会销毁任务相关的资源。该方式下创建的Stream用于与模型绑定，适用于模型构建场景，模型构建相关接口的说明请参见  aclmdlRIBindStream
。

```
#define ACL_STREAM_PERSISTENT       0x00000004U
```


- ACL_STREAM_HUGE：相比其他flag，使用该flag创建出来的Stream所能容纳的Task最大数量更大。
  当前版本设置该flag不生效。

```
#define ACL_STREAM_HUGE             0x00000008U
```


- ACL_STREAM_CPU_SCHEDULE：使用该flag创建出来的Stream用于队列方式模型推理场景下承载AI CPU调度的相关任务。预留功能。

```
#define ACL_STREAM_CPU_SCHEDULE     0x00000010U
```


- ACL_STREAM_DEVICE_USE_ONLY：表示该Stream仅在Device上调用。

```
#define ACL_STREAM_DEVICE_USE_ONLY  0x00000020U
```


  仅如下型号支持ACL_STREAM_DEVICE_USE_ONLY：

  Atlas 350 加速卡

  Atlas A3 训练系列产品 / Atlas A3 推理系列产品

  Atlas A2 训练系列产品 / Atlas A2 推理系列产品

  Atlas 推理系列产品


#### 返回值说明

返回0表示成功，返回其他值表示失败，请参见aclError。


#### 接口调用示例

接口调用示例，参见配置Stream优先级(https://www.hiascend.comdocument/detail/zh/canncommercial/900/programug/acldevg/runtime_doc_dev_0016.html)。
