昇腾社区首页
中文
注册

概述

框架开发者可以通过HCCL提供的C接口进行OPBase模式下的框架适配,实现分布式能力。

HCCL提供的C语言的单算子API如表1所示,您可以在“CANN软件安装目录/include/hccl”下查看接口定义。

表1 HCCL(C)接口列表

分类

接口

简介

通信域管理

HcclCommInitClusterInfo

基于ranktable初始化HCCL通信域。

HcclGetRootInfo

此接口在HCCL初始化接口HcclCommInitRootInfo前调用,用于生成此rank的标识信息(HcclRootInfo)。

HcclCommInitRootInfo

根据rootInfo初始化HCCL,创建HCCL通信域。

HcclCommInitAll

单机通信场景中,通过一个进程统一创建多张卡的通信域(其中一张卡对应一个线程)。在初始化通信域的过程中,devices[0]作为root rank自动收集集群信息。

HcclCommDestroy

销毁指定的HCCL 通信域。

HcclGetRankSize

查询当前集合通信域的rank总数。

HcclGetRankId

获取device在集合通信域comm中对应的rank序号。

集合通信

HcclAllReduce

集合通信域all-reduce操作接口,将所有rank的sendBuf相加(或其他操作)后,再把结果发送到所有rank的recvBuf。

HcclBroadcast

集合通信域Broadcast操作接口,将root节点的数据广播到其他rank。

HcclAllGather

实现all-gather操作接口。将所有rank的sendBuf按rank顺序拼接起来,再把结果发送到所有rank的recvBuf。

HcclReduceScatter

集合通信域reducescatter操作接口。将所有rank的sendBuf相加(或其他操作)后,再把结果按照rank编号均匀分散的到各个rank的recvBuf。

HcclReduce

集合通信域reduce操作接口,将所有rank的sendBuf相加(或其他操作)后,再把结果发送到root节点的recvBuf。

HcclAlltoAllV

集合通信域alltoallv操作接口。向通信域内所有rank发送数据(数据量可以定制),并从所有rank接收数据。

HcclAlltoAll

集合通信alltoall操作接口。向通信域内所有rank发送相同数据量的数据,并从所有rank接收相同数据量的数据。

HcclBarrier

将指定通信域内所有rank的stream阻塞,直到所有rank都下发执行该操作为止。

点对点通信

HcclSend

集合通信域Send操作接口。将当前rank的sendBuf数据发送至destRank。

HcclRecv

集合通信域Recv操作接口。从srcRank接收数据到当前rank的recvBuf。

异常处理

HcclGetCommAsyncError

查询通信域内是否存在错误,当前版本仅返回HCCL_E_REMOTE错误类型。