---
title: FA支持Prefix Encoder
description: "FA支持按block存放的kvCache。BlockTables维度为[batch, maxBlockNum]，其中每个batch对应存放当前query对应的key和value的index，maxBlockNum约为key，value中最长kvSeqLen，kvSeqLen/blockSize向上取整。"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/API/ascendtb/ascendtb_01_0283.html
sourcePath: /source/zh/canncommercial/900/API/ascendtb/ascendtb_01_0283.html
indexId: 51b3f69398a522a28466e6e2de67889cd24e53a3c69bc489474dbb548e6491c664
---
# FA支持Prefix Encoder

#### 功能说明

FA支持按block存放的kvCache。BlockTables维度为[batch, maxBlockNum]，其中每个batch对应存放当前query对应的key和value的index，maxBlockNum约为key，value中最长kvSeqLen，kvSeqLen/blockSize向上取整。


#### 开启方式

calcType置为PREFIX_ENCODER。


#### 约束说明

- 不支持qScale，需设为1。
- isTriuMask需设置为1。
- kernelType必须设为KERNELTYPE_HIGH_PRECISION，因为kv计算内部均使用float32计算。
- 不支持clamp，clampMin、clampMax需设置为0。
- inputLayout只支持TYPE_BSND。
- 不支持mla，mlaVHeadSize需设为0。
- PrefixCacheLen的计算由kvseqlen减seqLen得到，由于实现方案限制，需要让prefixCacheLen 128对齐。
- headNum有如下约束：

  - headNum > 0
  - headNum >= kvHeadNum
  - headNum是kvHeadNum的整数倍
- maskType支持MASK_TYPE_ALIBI_COMPRESS、MASK_TYPE_ALIBI_COMPRESS_SQRT、MASK_TYPE_NORM_COMPRESS或MASK_TYPE_CAUSAL_MASK。
