---
title: Exp近似计算
description: "exp使用m8v2近似计算提升性能。"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/API/ascendtb/ascendtb_01_0355.html
sourcePath: /source/zh/canncommercial/900/API/ascendtb/ascendtb_01_0355.html
indexId: 13e7a1ed7f59b71372ab372f65254e65a99d2c83a11a8199fc595343268c3b5064
---
# Exp近似计算

#### 功能说明

exp使用m8v2近似计算提升性能。

在进行attention计算时exp占据单算子耗时比较大，故可以使用fast exp进行快速计算。


基于此理论，提出exp m8v2方案，提升精度的同时保持性能：


其中多项式可以采用秦九韶算法减少操作次数：


其中系数经过数值寻优后得到确定。


#### 开启方式

参数“kernelType”置为KERNELTYPE_EXP_M8V2。

- 算子输入列表| 参数 | 维度 | 数据类型 | 格式 | cpu/npu | 说明 |
| --- | --- | --- | --- | --- | --- |
| Q | [ntokens, heads, headSize] | float16 | ND | npu | nTokens: sum(qSeqlen)，且求和后向上16对齐。 |
| K | [ntokens, kvHead, headSize] | float16 | ND | npu | \- |
| V | [ntokens, kvHead, headSize] | float16 | ND | npu | v shape 与k 相同。 |
| Attention\_mask | 压缩mask：maxSeqlen = 128[1, 128/16, 128, 16] | float16 | NZ | npu | maskType为MASK\_TYPE\_UNDEFINED（0）时不传入。 |
| seqlen | [batch] | int32/uint32 | ND | npu | \- |


- 算子输出列表| 参数 | 维度 | 数据类型 | 格式 | cpu/npu | 说明 |
| --- | --- | --- | --- | --- | --- |
| output | [nTokens, head\_num, head\_size] | float16 | ND | npu | 输出。 |


#### 约束说明

- headSize必须等于headSizeV，不支持MLA。
- headSize需要16对齐。
- m8v2仅在Atlas 推理系列产品上支持。
- 仅支持masktype为MASK_TYPE_UNDEFINED，MASK_TYPE_NORM。
- 仅支持calcType为PA_ENCODER。
- 支持headNum!=kvHeadNum。
- 支持qkScale归一化。
- 不支持qScale缩放。
- quantType、outDataType、batchRunStatusEnable、isTriuMask、clampType、clampMin、clampMax、kvcacheCfg、scaleType、mlaVHeadSize、cacheType、windowSize仅支持默认值。
