---
title: HcclSymWinGetPeerPointer
description: "| 产品 | 是否支持 |"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/API/hcclug/hcclcpp_07_0071.html
sourcePath: /source/zh/canncommercial/900/API/hcclug/hcclcpp_07_0071.html
indexId: 572f5a3a28861f9a9c863cd6e6e7db7af5bc86a3e018d0725f97782b790adfab61
---
# HcclSymWinGetPeerPointer

#### 产品支持情况

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


#### 功能说明

根据对称内存窗口资源句柄和偏移，获取指定rank ID在对称内存上的虚拟地址指针。


#### 函数原型

```
HcclResult HcclSymWinGetPeerPointer(HcclCommSymWindow winHandle, size_t offset, uint32_t peerRank, void** ptr)
```


#### 参数说明

| 参数名 | 输入/输出 | 说明 |
| --- | --- | --- |
| winHandle | 输入 | 对称内存窗口资源句柄。 |
| offset | 输入 | 使用HcclCommSymWinGet获取到的偏移量。 |
| peerRank | 输入 | rank ID，取值范围：[0, rankSize)。 |
| ptr | 输出 | 指向“对称内存上的虚拟地址”的指针。 |


#### 返回值

HcclResult：接口成功返回HCCL_SUCCESS，其他失败。


#### 约束说明

- 仅支持Atlas A3 训练系列产品 / Atlas A3 推理系列产品的超节点内通信。
- 仅支持通信算子展开模式为AI CPU的场景。
- 该接口仅支持在Device侧调用。


#### 调用示例

HOST侧注册完对称内存window以后，将window作为AI CPU kernel的参数传递到AI CPU kernel，该函数需要编译到Device AI CPU侧执行，以下是伪代码描述：

```
AicpuKernelFunc(param)：
// 从param中获取对称window
HcclCommSymWindow temp_win = param.win;
void *src_ptr;
void *dest_ptr;
int srcRankId = 0;
int destRankId = 1;
// 使用win + offset + peerRank获取到peerRank对应的地址
HcclSymWinGetPeerPointer(temp_win, 0, srcRankId, &src_ptr);
HcclSymWinGetPeerPointer(temp_win, 0, destRankId, &dest_ptr);
// 获取出来的地址可以使用数据面local copy直接读写，thread和size需调用者准备好
HcommLocalCopyOnThread(thread, dest_ptr, src_ptr, size);
```
