---
title: PagedCacheLoadOperation
description: "支持通过C接口直调接入PyTorch，在整网中进行亲和算子替换。"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/API/ascendtb/ascendtb_01_0317.html
sourcePath: /source/zh/canncommercial/900/API/ascendtb/ascendtb_01_0317.html
indexId: cb9125e8778db6ba7f1804aa03eb472140de0508e4edd718f117e993778a683264
---
# PagedCacheLoadOperation

支持通过C接口直调接入PyTorch，在整网中进行亲和算子替换。


#### 定义

```
atb::Status AtbPagedCacheLoadGetWorkspaceSize(const aclTensor *keyCache, const aclTensor *valueCache,
const aclTensor *blockTables, const aclTensor *contextLens,
const aclTensor *key, const aclTensor *value, const aclTensor *seqStarts,
int8_t kvCacheCfg, bool isSeqLensCumsumType, bool hasSeqStarts,
uint64_t *workspaceSize, atb::Operation **op, atb::Context *context);
atb::Status AtbPagedCacheLoad(void *workspace, uint64_t workspaceSize, atb::Operation *op, atb::Context *context);
```


#### AtbPagedCacheLoadGetWorkspaceSize成员

| 参数 | 标量/张量 | 维度（keyCache/valueCache格式为ND） | 维度（keyCache/valueCache格式为NZ） | 数据类型 | 格式 | 默认值 | 是否必选 | 描述 |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| keyCache | 张量 | [num\_blocks, block\_size, num\_heads, head\_size\_k] | [num\_blocks, num\_heads \* head\_size\_k // elenum\_aligned, block\_size, elenum\_aligned] | float16/bf16/int8 | ND/NZ | \- | 是 | 输入tensor。 int8时 ：elenum\_aligned=32，其他情况为16。 |
| valueCache | 张量 | [num\_blocks, block\_size, num\_heads, head\_size\_v] | [num\_blocks, num\_heads \* head\_size\_v // elenum\_aligned, block\_size, elenum\_aligned] | float16/bf16/int8 | ND/NZ | \- | 是 | 输入tensor。 int8时 ：elenum\_aligned=32，其他情况为16。 |
| blockTables | 张量 | [batch, block\_indices] | [len(contextLens), (max(contextLens) \- 1) // block\_size + 1] | int32 | ND | \- | 是 | 输入tensor。 len(contextLens)为contextlens的长度。 |
| contextLens | 张量 | [batch]or[batch+1] | [len(contextLens)] | int32 | ND | \- | 是 | 输入tensor。 len(contextLens)为contextlens的长度。 |
| key | 张量 | [num\_tokens, num\_heads, head\_size\_k] | [sum(contextLens), num\_heads \* head\_size\_k] | float16/bf16/int8 | ND | \- | 是 | 输入/输出tensor。 sum(contextLens)为contextlens的各元素求和。 |
| value | 张量 | [num\_tokens, num\_heads, head\_size\_v] | [sum(contextLens), num\_heads \* head\_size\_v] | float16/bf16/int8 | ND | \- | 是 | 输入/输出tensor。 sum(contextLens)为contextlens的各元素求和 。 |
| seqStarts | 张量 | [batch] | \- | int32 | ND | \- | 否 | 可选输入，每个batch在blocktable中对应的起始位置，只支持ND格式。 |
| kvCacheCfg | 标量 | \- | \- | int8\_t | \- | 0 | 是 | K\_CACHE\_V\_CACHE\_NZ = 0：默认值：传入key\_cache和value\_cache, 且为NZ格式 。 K\_CACHE\_V\_CACHE\_ND= 1：传入key\_cache和value\_cache，且为ND格式。 |
| isSeqLensCumsumType | 标量 | \- | \- | bool | \- | false | 否 | 支持输入seqLens为累加和模式，即第n个batch中所需提取的元素数量为前n个batch的所需提取元素数量的累加和，只支持ND格式。 |
| hasSeqStarts | 标量 | \- | \- | bool | \- | false | 否 | 提供SeqStart用于为每个batch提供在blockTable中的初始位置（类似于offset） ，只支持ND格式。 |


#### 原始接口

请参见PagedCacheLoadOperation。
