HcommSymWinGetPeerPointer
产品支持情况
产品 |
是否支持 |
|---|---|
Atlas 350 加速卡 |
☓ |
√ |
|
☓ |
|
☓ |
|
☓ |
|
☓ |
功能说明
根据对称内存窗口资源句柄和偏移,获取指定rank ID在对称内存上的虚拟地址指针。
函数原型
1 | HcclResult HcommSymWinGetPeerPointer(CommSymWindow 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侧的执行流程参考《HCCL集合通信库用户指南》的“API > 通信域管理 > C语言接口 > 对称内存”章节中示例。
HOST侧注册完对称内存window以后,将window作为AI CPU kernel的参数传递到AI CPU kernel,该函数需要编译到Device AI CPU侧执行,以下是伪代码描述:
AicpuKernelFunc(param): // 从param中获取对称window CommSymWindow temp_win = param.win; void *src_ptr; void *dest_ptr; int srcRankId = 0; int destRankId = 1; // 使用win + offset + peerRank获取到peerRank对应的地址 HcommSymWinGetPeerPointer(temp_win, 0, srcRankId, &src_ptr); HcommSymWinGetPeerPointer(temp_win, 0, rankId, &dest_ptr); // 获取出来的地址可以使用数据面local copy直接读写,thread和size需调用者准备好 HcommLocalCopyOnThread(thread, dest_ptr, src_ptr, size);
父主题: 其他