---
title: calcType为PREFIX_ENCODER时输入输出
description: "| 参数 | 维度 | 数据类型 | 格式 | cpu/npu | 描述 | 使用场景 |"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/API/ascendtb/ascendtb_01_0266.html
sourcePath: /source/zh/canncommercial/900/API/ascendtb/ascendtb_01_0266.html
indexId: a7f02bfa50f1bb09162464dfb226ac02a0c0435233a7a4734ba0bab2336e5dc364
---
# calcType为PREFIX_ENCODER时输入输出

| 参数 | 维度 | 数据类型 | 格式 | cpu/npu | 描述 | 使用场景 |
| --- | --- | --- | --- | --- | --- | --- |
| query | [nTokens, qHiddenSize] 或[nTokens, headNum, headSize] | float16/bf16 | ND | npu | query矩阵。 query的shape和key、value的不需要一致。 PrefixCacheLen的计算由kvseqlen减seqLen得到，由于实现方案限制，需要让prefixCacheLen 128对齐。 headSize需要16对齐。 | 基础场景 |
| key | [numBlocks, blockSize, kvHiddenSize] 或[numBlocks, blockSize, kvHeadNum, headSize] | float16/bf16 | ND | npu | key矩阵。 key、value的HeadSize <= 128。 blockSize必须设置为128。 BlockSize × HeadSize <= 128 × 128。 | 基础场景 |
| value | [numBlocks, blockSize, kvHiddenSize] 或[numBlocks, blockSize, kvHeadNum, headSize] | float16/bf16 | ND | npu | value矩阵。key、value的shape必须一致。 | 基础场景 |
| blockTables | [batch, maxBlockNum] | int32 | ND | npu | 每个query的kvcache的block table，第一维是token索引，第二维表示block索引。 blockTables中item的value < maxBlockNum max(kvSeqLen) / blockSize <= maxblockNum | 基础场景 |
| mask | [256, 256] [head, seqLen, 128] [128, 128] | float16/bf16 | ND | npu | MASK\_TYPE\_ALIBI\_COMPRESS支持维度1和2。 MASK\_TYPE\_ALIBI\_COMPRESS\_SQRT支持维度1和2。 MASK\_TYPE\_NORM\_COMPRESS支持维度3。 | 基础场景 |
| seqLen | [batch] | int32/uint32 | ND | cpu | query对应的每个batch的序列长度。 | 基础场景 |
| kvSeqLen | [batch] | int32/uint32 | ND | cpu | key、value对应的每个batch的序列长度。 | 基础场景 |
| slopes | [head] | float32 | ND | npu | 即alibi coefficient，当使用alibiMask时传入tensor时，为alibiMask的每个head的系数。 | alibi压缩mask场景 |
| output | [nTokens, qHiddenSize] 或[nTokens, headNum, headSize] | float16/bf16 | ND | npu | 输出。维度和query一致。 | 基础场景 |
