---
title: GetCacheInfo
description: "- 获取L2 Cache大小："
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/240RC1/accel/kunpengaccel_hmpp_06_0035.html
sourcePath: /source/zh/kunpengboostkithistory/240RC1/accel/kunpengaccel_hmpp_06_0035.html
indexId: 1e501790ca58c0274fdc9dfb11e9819df3b66a321ba0370967c916e0ca5ffb9b77
---
# GetCacheInfo

- 获取L2 Cache大小：
  HmppResult HMPP_GetL2CacheSize (int32_t *size);


- 获取L2 Cache和L3 Cache中的较大值：
  HmppResult HMPP_GetMaxCacheSizeB (int32_t *size);


- 获取各级缓存的参数，如类型、等级、大小等信息：
  HmppResult HMPP_GetCacheParams (HmppCache **cacheInfo);


#### 参数

| 参数名 | 描述 | 取值范围 | 输入/输出 |
| --- | --- | --- | --- |
| size | 目标地址，指向地址存放缓存的大小。 | 非空 | 输出 |
| cacheInfo | 目标地址，指向地址存放指向HmppCache数组的指针值。 | 非空 | 输出 |


#### 返回值

- 成功：返回HMPP_STS_NO_ERR。
- 失败：返回错误码。


#### 错误码

| 错误码 | 描述 |
| --- | --- |
| HMPP\_STS\_NULL\_PTR\_ERR | size、cacheInfo这些指针入参中存在空指针。 |
| HMPP\_STS\_NOT\_SUPPORT | 获取缓存信息失败。 |


#### 示例

```
void  GetCacheInfo_Example()
{
int32_t l2CacheSize = 0;
HmppResult result = HMPP_GetL2CacheSize(&l2CacheSize);
printf("%s\n", HMPP_GetStatusString(result));
printf("l2CacheSize = %d Byte\n\n", l2CacheSize);
int32_t maxCacheSize = 0;
result = HMPP_GetMaxCacheSizeB(&maxCacheSize);
printf("%s\n", HMPP_GetStatusString(result));
printf("maxCacheSize = %d Byte\n\n", maxCacheSize);
HmppCache *pCacheSize;
result = HMPP_GetCacheParams(&pCacheSize);
printf("%s\n", HMPP_GetStatusString(result));
int32_t i = 0;
while (pCacheSize[i].type) {
printf("type = %d\n", pCacheSize[i].type);
printf("type = %d\n", pCacheSize[i].level);
printf("type = %d Byte\n\n", pCacheSize[i].size);
++i;
}
}
```

运行结果：

```
No Error
l2CacheSize = 524288 Byte
No Error
maxCacheSize = 33554432 Byte
No Error
type = 1
type = 1
type = 65536 Byte
type = 2
type = 1
type = 65536 Byte
type = 3
type = 2
type = 524288 Byte
type = 3
type = 3
type = 33554432 Byte
```

实际输出可能与上述结果不同，可调用lscpu对比输出值。
