---
title: CountBatch
description: "| 产品 | 是否支持 |"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/others/dataflowdevg/dfrefc_23_0058.html
sourcePath: /source/zh/canncommercial/900/others/dataflowdevg/dfrefc_23_0058.html
indexId: 9a2563fbcf757c7258108e00a8641e6045e9feb749f457249da9560e6d35b1da69
---
# CountBatch

#### 产品支持情况

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


#### 功能介绍

CountBatch功能是指基于UDF为计算处理点将多个数据按batch_size组成batch。

该功能应用于DataFlow异步场景，具体如下。

- 长时间没有数据输入时，可以通过CountBatch功能设置超时时间，如果没有设置padding，超时后取当前已有数据送计算处理点处理。
- 设置超时时间后，如果数据不满batch_size时，可以通过CountBatch功能设置padding属性，计算点根据padding设置对数据进行填充到batch_size后输出。


#### 使用方法

用户在DataFlow构图时通过给FlowNode的输入设置属性来添加CountBatch功能。示例如下。

```
CountBatch count_batch = {};
// 按需求设置count_batch中各属性的值
count_batch.timeout = 10;
count_batch.batch_size = 300;
count_batch.padding = true;
count_batch.slide_stride = 5; 
DataFlowInputAttr flow_attr = {DataFlowAttrType::COUNT_BATCH, &count_batch};
std::vector<DataFlowInputAttr> flow_attrs = {flow_attr};
// 通过FlowNode的MapInput设置
FlowNode::MapInput(xx, xx, xx, flow_attrs);
```

| 属性名称 | 数据类型 | 取值说明 |
| --- | --- | --- |
| batch\_size | int64\_t | 组batch大小。 |
| timeout | int64\_t | 只有设置了batch\_size时，该参数才生效。 组batch等待时间，单位（ms），取值范围[0,4294967295)，默认值是0，表示一直等待直到满batch。 |
| padding | bool | 只有设置了batch\_size和timeout时，该参数才生效。 不足batch时，是否padding。默认值false，表示不padding。 |
| slide\_stride | int64\_t | 只有设置了batch\_size时，该参数才生效。 滑窗步长，取值范围[0,batch\_size]。 >0且<batch\_size时表示启用滑窗方式组batch。 不设置，等于0。 等于batch\_size时按照未设置滑窗步长方式组batch。 >batch\_size报错。 |
| batch\_dim | int64\_t | 未使能。 |
| flag | int32\_t | 未使能。 |
| drop\_remainder | bool | 未使能。 |


#### 使用注意事项

当前Batch特性无法做负荷分担，因此如果使用2P环境，需要在ge初始化时添加{"ge.exec.logicalDeviceClusterDeployMode", "SINGLE"}, {"ge.exec.logicalDeviceId", "[0:0]"}。
