---
title: register_cache
description: "| 产品 | 是否支持 |"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/API/hixlug/llmprv2_42_0032.html
sourcePath: /source/zh/canncommercial/900/API/hixlug/llmprv2_42_0032.html
indexId: d94d3efa9f24c37790173e83e9b30bfb91a004177f708e79b261fae12d8558f061
---
# register_cache

#### 产品支持情况

| 产品 | 是否支持 |
| --- | --- |
| Atlas 350 加速卡 | x |
| Atlas A3 训练系列产品 / Atlas A3 推理系列产品 | √ |
| Atlas A2 训练系列产品 / Atlas A2 推理系列产品 | √ |
| Atlas 200I/500 A2 推理产品 | x |
| Atlas 推理系列产品 | x |
| Atlas 训练系列产品 | x |


说明：针对 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ，仅支持Atlas 800I A2 推理服务器、A200I A2 Box 异构组件。


#### 函数功能

非PagedAttention场景下，调用此接口注册一个自行申请的内存。


#### 函数原型

```
register_cache(cache_desc: CacheDesc, addrs: List[int], cache_keys: Union[Tuple[CacheKey], List[CacheKey]] = (), remote_accessible: Optional[bool] = None) -> Cache:
```


#### 参数说明

| 参数名称 | 数据类型 | 取值说明 |
| --- | --- | --- |
| cache\_desc | CacheDesc | Cache的描述信息。 |
| addrs | List[int] | Cache的地址。register\_cache中的地址个数与register\_blocks\_cache的地址个数之和不超过240。 |
| cache\_keys | Union[Tuple[CacheKey], List[CacheKey]] | Cache的索引。 |
| remote\_accessible | Optional[bool] | 指定当前注册内存是否能用来做网络传输，对于Device内存，默认值是True，对于Host内存，默认值是False。 |


#### 调用示例

请单击Gitcode(https://gitcode.com/cann/hixl)，选择配套版本，从“examples/python”目录中获取样例。


#### 返回值

正常情况下返回注册的cache。

传入数据类型错误，src和dst不匹配情况下会抛出TypeError或ValueError异常。

传入参数为None，会抛出AttributeError异常。


#### 约束说明

Device内存需要先注册再进行建链，Host内存不约束顺序。

注册内存地址需自行保证不重复。

最大注册50GB的Device内存，20GB的Host内存。注册内存越大，占用的OS内存越多。该约束支持的芯片如下：

- Atlas A2 训练系列产品 / Atlas A2 推理系列产品
- Atlas A3 训练系列产品 / Atlas A3 推理系列产品

D2D HCCS数据传输时，首地址需要按照2MB对齐，否则可能导致link失败，HCCS不支持Host内存。该约束支持的芯片如下：

- Atlas A2 训练系列产品 / Atlas A2 推理系列产品
- Atlas A3 训练系列产品 / Atlas A3 推理系列产品

RDMA数据传输时，申请Host内存必须通过aclrtMallocHost接口，否则可能导致link失败。该约束支持的芯片如下：

- Atlas A2 训练系列产品 / Atlas A2 推理系列产品
- Atlas A3 训练系列产品 / Atlas A3 推理系列产品
