---
title: CalcTschNumBlocks
description: "针对Cube、Vector分离模式，用于计算Cube、Vector融合算子的numBlocks。针对Vector/Cube融合计算的算子，启动时，按照AIV和AIC组合启动，numBlocks用于设置启动多少个组合执行，比如某款AI处理器上有40个Vector核+20个Cube核，一个组合是2个Vector和1个Cube核，建议设置为20，此时会启动20个组合，即40个Vector和20个Cube核。使用该接口可以自动获取合适的numBlocks值。"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/API/ascendcopapi/atlasascendc_api_07_1033.html
sourcePath: /source/zh/canncommercial/900/API/ascendcopapi/atlasascendc_api_07_1033.html
indexId: 391f82ad3c034e89b19ef0d8ea4eca7765916db4eeac5e9e34c6f57d5b77881a76
---
# CalcTschNumBlocks

#### 功能说明

针对Cube、Vector分离模式，用于计算Cube、Vector融合算子的numBlocks。针对Vector/Cube融合计算的算子，启动时，按照AIV和AIC组合启动，numBlocks用于设置启动多少个组合执行，比如某款AI处理器上有40个Vector核+20个Cube核，一个组合是2个Vector和1个Cube核，建议设置为20，此时会启动20个组合，即40个Vector和20个Cube核。使用该接口可以自动获取合适的numBlocks值。

获取该值后，使用SetBlockDim(https://www.hiascend.comdocument/detail/zh/canncommercial/900/maintenref/basicdataapi/atlasopapi_07_00236.html)进行numBlocks的设置。


#### 函数原型

```
uint32_t CalcTschNumBlocks(uint32_t sliceNum, uint32_t aicCoreNum, uint32_t aivCoreNum) const
```


#### 参数说明

| 参数 | 输入/输出 | 说明 |
| --- | --- | --- |
| sliceNum | 输入 | 数据切分的份数。 |
| aicCoreNum | 输入 | 如果算子实现使用了矩阵计算API，请传入GetCoreNumAic返回的数量，否则传入0。 |
| aivCoreNum | 输入 | 如果算子实现使用了矢量计算API，请传入GetCoreNumAiv返回的数量，否则传入0。 |


#### 返回值说明

返回用于底层任务调度的核数。


#### 约束说明

无


#### 调用示例

```
ge::graphStatus TilingXXX(gert::TilingContext* context) {
    auto ascendcPlatform = platform_ascendc::PlatformAscendC(context->GetPlatformInfo());
    auto aicNum = ascendcPlatform.GetCoreNumAic();
    auto aivNum = ascendcPlatform.GetCoreNumAiv();
    // ..按照aivNum切分数据，并进行计算
    uint32_t sliceNum = aivNum;
    context->SetBlockDim(ascendcPlatform.CalcTschNumBlocks(sliceNum, aicNum, aivNum));
    return ret;
}
```
