---
title: 约束说明
description: "- ELEWISE_ADD、ELEWISE_MUL、ELEWISE_REALDIV、ELEWISE_SUB、ELEWISE_LOGICAL_AND、ELEWISE_LOGICAL_OR、ELEWISE_LESS、ELEWISE_GREATER、ELEWISE_EQUAL计算类型将会对输入进行广播后再进行指定操作。"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/API/ascendtb/ascendtb_01_0147.html
sourcePath: /source/zh/canncommercial/900/API/ascendtb/ascendtb_01_0147.html
indexId: 1cebeddb9e9ce470396c9ec4b1a8f0b085a096bfb5a9b296082e0790ea1337a464
---
# 约束说明

- ELEWISE_ADD、ELEWISE_MUL、ELEWISE_REALDIV、ELEWISE_SUB、ELEWISE_LOGICAL_AND、ELEWISE_LOGICAL_OR、ELEWISE_LESS、ELEWISE_GREATER、ELEWISE_EQUAL计算类型将会对输入进行广播后再进行指定操作。
- 输入x、y对应维度的对应值要求相同或至少其中一个为1。
- ELEWISE_DEQUANT_PER_CHANNEL只支持Atlas A2 训练系列产品 / Atlas A2 推理系列产品和Atlas A3 推理系列产品 / Atlas A3 训练系列产品。
- 在Atlas 推理系列产品上，ELEWISE_QUANT_PER_CHANNEL只支持32位对齐的数据。
- 在ELEWISE_DYNAMIC_QUANT计算类型输入x中，有如下约束：

  - 在Atlas A2 训练系列产品 / Atlas A2 推理系列产品上：float16类型尾轴可支持的最大数据量为26624；bf16类型尾轴可支持的最大数据量为7552；暂时只支持对称量化。
  - 在Atlas 推理系列产品上：尾轴只支持32位对齐的数据，尾轴可支持的最大数据量为4096，暂时只支持对称量化。
  - 在Atlas A2 训练系列产品 / Atlas A2 推理系列产品和Atlas A3 推理系列产品 / Atlas A3 训练系列产品上，outTensorType可以为空、2。
  - 在Atlas 350 加速卡上，outTensorType可以为空、2、34、35、36。
- ELEWISE_QUANT约束说明：

  - 核心约束公式：
  - 关键参数定义| 参数名称 | 物理含义 | 备注 |
| --- | --- | --- |
| numRow | 除最后一维外，其余所有维度的乘积（即） | 数据总行数 |
| numCol | 最后一维的大小（即） | 数据行长 |
| maxUbsize | 统一缓冲区(UB)大小 | 固定值196608 |
| maxCoreNum | 硬件最大可用核数 | 见下表 |


| 产品系列 | maxCoreNum |
| --- | --- |
| Atlas A3 推理系列产品 / Atlas A3 训练系列产品 | 48 |
| Atlas A2 训练系列产品 / Atlas A2 推理系列产品 | 40 |


  - firstDimPertimes（单次搬运/处理的行数）计算流程

    1. 计算单核分摊行数
首先根据总行数和硬件最大核数，计算实际启用的核数及每个核分配到的行数。

      - 计算实际启动核数（numCore）：
      - 计算单核行数（nlFirstdimPerCoreNum）
    2. 计算所需内存与可用内存的阈值

      - 所需内存（totalMemNeed）：
      - 可用内存（sumData）：
    3. 确定最终切分行数
根据内存充裕程度，决定 firstDimPertimes 的取值。

      - 情况A：内存充足（当 totalMemNeed $\le$ sumData 时）：
      - 情况B：内存不足（当 totalMemNeed > sumData 时）需要计算切分倍数 timeCopyIn：
        （注：若计算结果为 0，则向下修正为 1）
