---
title: aclrtHostRegisterV2
description: "| 产品 | 是否支持 |"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/API/runtimeapi/aclcppdevg_03_2128.html
sourcePath: /source/zh/canncommercial/900/API/runtimeapi/aclcppdevg_03_2128.html
indexId: 18bf5e9370ad9e08931ddf1efbeca55f88d41f9cfca20aa26d92c08e204971a368
---
# aclrtHostRegisterV2

#### 产品支持情况

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


#### 功能说明

注册Host内存地址。

取消注册需调用aclrtHostUnregister接口。


#### 函数原型

```
aclError aclrtHostRegisterV2(void *ptr, uint64_t size, uint32_t flag)
```


#### 参数说明

| 参数名 | 输入/输出 | 说明 |
| --- | --- | --- |
| ptr | 输入 | Host内存地址。 Host内存地址需4K页对齐。 当os内核版本为5.10或更低时，使用非锁页内存会导致异常，因此必须调用aclrtMallocHost接口来申请Host锁页内存。 当os内核版本为5.10以上时，支持使用非锁页的Host内存，因此既支持调用aclrtMallocHost接口申请Host锁页内存，也支持使用malloc接口申请Host非锁页内存。 |
| size | 输入 | 内存大小，单位Byte。 |
| flag | 输入 | 内存注册类型。 取值为如下宏，支持配置单个宏，也支持配置多个宏位或（例如ACL\_HOST\_REG\_MAPPED \| ACL\_HOST\_REG\_PINNED）： ACL\_HOST\_REG\_MAPPED：将Host内存映射注册为Device可访问的内存地址，再配合调用aclrtHostGetDevicePointer接口获取映射后的Device内存地址。 ACL\_HOST\_REG\_IOMEMORY：将Host上第三方PCIe设备的IO space(寄存器、缓存)映射注册为Device可访问，包括读写。预留选项，当前不支持。 ACL\_HOST\_REG\_READONLY：Host内存映射注册为Device只读。预留选项，当前不支持。 ACL\_HOST\_REG\_PINNED：将Host内存注册为锁页内存，此处的Host内存仅限通过C/C++标准库函数（例如malloc）申请的非锁页内存。 宏定义如下： \#define ACL\_HOST\_REG\_MAPPED 0x2UL \#define ACL\_HOST\_REG\_IOMEMORY 0x4UL \#define ACL\_HOST\_REG\_READONLY 0x8UL \#define ACL\_HOST\_REG\_PINNED 0X10000000UL |


#### 返回值说明

返回0表示成功，返回其他值表示失败，请参见aclError。
