接口列表
- 控制面接口:提供拓扑信息查询、通信资源管理等功能。
- 数据面接口:提供本地操作、算子间同步、通信操作等数据搬运和计算功能。
- hccl_rank_graph.h:控制面的拓扑信息查询接口定义文件。
- hccl_res.h:控制面的资源管理定义文件。
- hcomm_primitives.h:数据面接口定义文件。
控制面接口
- 拓扑信息查询
接口
简介
获取Device在指定通信域中对应的rank序号。
查询指定通信域的rank数量。
查询包含当前rank的拓扑层级编号列表以及拓扑层级数量。
给定通信域和拓扑层级编号,返回该层级下本rank所在拓扑实例的所有rank编号列表以及rank数量。
给定通信域和拓扑层级编号,返回该层级下本rank所在拓扑实例的rank数量。
给定通信域和拓扑层级编号,返回本rank所在拓扑层级中的拓扑类型。
给定通信域和拓扑层级编号,查询该层级下的拓扑实例数量,以及每个实例包含的rank数量。
给定通信域和拓扑层级编号,查询源rank和目的rank之间的通信连接信息。
给定通信域和拓扑层级编号,查询当前rank所在的拓扑实例集合。
给定通信域和拓扑层级编号,查询当前rank在指定拓扑实例中对应的拓扑类型。
给定通信域和拓扑层级编号,查询当前rank对应的指定拓扑实例中包含的rank信息。
给定通信域,获取通信域的异构组网模式。
获取拓扑实例中的EndPoint数量。
获取拓扑实例的EndPoint描述列表。
获取指定通信设备的拓扑属性信息。
- 通信域资源管理
接口
简介
获取通信域中的HCCL通信内存,首次调用时将在Device侧进行内存初始化分配,后续调用将复用已分配内存,不会重复初始化。
基于通信域获取通信线程。
基于已有runtime stream获取指定notifyNum的通信线程资源。
初始化通信通道描述列表。
基于通信域获取多个通信通道,如果通信域中没有对应的通信通道则直接创建。
获取指定channel对端的HCCL通信内存。
指定通信域与通信引擎,使用特定标签创建对应的通信引擎上下文。
指定通信域和通信引擎,通过通信引擎上下文标签获取对应的通信引擎上下文。
指定通信域、通信引擎与通信引擎上下文标签,将Host侧内存数据拷贝至对应的通信引擎上下文中。
指定通信域与通信引擎,使用特定标签销毁对应的通信引擎上下文。
向通信域注册已申请的内存,并获取对应的注册句柄。
获取通信通道中交换的远端内存信息。
根据已注册对称内存的虚拟地址指针,返回对应的窗口资源句柄及其在窗口内的偏移量。
- 基础资源管理
接口
简介
创建通信设备Endpoint。
销毁通信设备Endpoint。
注册内存到指定EndPoint。
从EndPoint解除内存注册。
内存注册后,导出指定内存描述,用于交换。
本端通过导入对端导出的内存描述,获取相应的内存描述信息。
关闭内存导入。
该接口为创建通信通道的资源管理接口,基于已创建的网络端点(Endpoint),根据给定的通道描述信息批量创建通信通道,为点对点通信或集合通信提供数据传输的基础设施。
该接口用于查询通信通道的状态,支持批量查询多个通道的连接状态,用于在通道创建后、通信操作前确认通道是否已就绪。
获取指定channel的Notify数量。
该接口为销毁通信通道的资源管理接口,释放由HcommChannelCreate创建的通信通道及其占用的所有系统资源,包括网络连接、同步信号、通信队列等。
申请通信线程,当前支持AI CPU+TS、HOST CPU+TS、CCU通信引擎。注意如果通信引擎是AI CPU+TS,需要额外下发一次kernel,AI CPU侧才能使用此通信线程。
使用HcommThreadAlloc接口申请的thread需要通过本接口进行释放。
数据面接口
- 本地操作
接口
简介
提供本地内存拷贝功能,将src指向的长度为len的内存数据,拷贝到dst所指向的相同长度的内存中。
提供本地归约操作,将src指向的长度为count*sizeof(dataType)的内存数据,与dst所指向的相同长度的内存数据进行reduceOp操作,并将结果输出到dst中。
向其他Thread发送同步信号,主要用于多Thread之间的同步等待场景。
等待同步信号,该接口会阻塞等待Thread的运行,直到指定的Notify被record完成。
基于acl接口创建的Notify发送同步信号,需与HcommAclrtNotifyWaitOnThread配对使用。
基于acl接口创建的Notify等待同步信号,须与HcommAclrtNotifyRecordOnThread配对使用。
- 通信操作
接口
简介
向channel上的指定内存写数据,将src中长度为len的内存数据写入dst所指向的相同长度的内存区域。接口调用方为src所在节点,该接口为异步接口。
向channel上的指定内存写数据,将src中长度为count*sizeof(dataType)的内存数据,与dst所指向的相同长度的内存数据进行reduceOp操作,并将结果输出到dst中。接口调用方为src所在节点。
从channel上的指定内存读数据,从src中读取长度为len的内存数据,并写入dst。接口调用方为dst所在节点,为异步接口。
从channel上的指定内存读数据,从src中读取长度为count*sizeof(dataType)的内存数据,与dst所指向的相同长度的内存数据进行reduceOp操作,并将结果输出到dst中。接口调用方为dst所在节点。
发送同步信号,在Thread上记录一个Notify。该接口为异步接口,主要用于Channel两端同步等待场景。
等待同步信号,阻塞等待Thread的运行,直到指定的Notify完成。
向channel上的指定内存写数据,将src中长度为len的内存数据写入dst所指向的相同长度的内存区域,并且向dst所在节点发送同步信号。接口调用方为src所在节点,该接口为异步接口。
向channel上的指定内存写数据,将src中长度为count*sizeof(dataType)的内存数据,与dst所指向的相同长度的内存数据进行reduceOp操作,并将结果输出到dst中,并向dst所在节点发送同步信号。接口调用方为src所在节点,该接口为异步接口。
- 其他接口
接口
简介
该接口用于开启批量模式,在HcommBatchModeStart和HcommBatchModeEnd之间的所有数据面接口调用(如 HcommLocalCopy、HcommWrite 等)将被缓存,不会立即执行。所有操作将在调用HcommBatchModeEnd时统一提交并执行。
该接口用于提交并触发批量模式下缓存的所有操作的执行。所有在HcommBatchModeStart和HcommBatchModeEnd之间的数据面接口调用操作将在此时统一执行。
根据传入的commId获取对应通信域,并对该通信域加锁,防止该通信域被重复获取。
根据传入的commId,查找对应通信域,并释放锁。
根据对称内存窗口资源句柄和偏移,获取指定rank ID在对称内存上的虚拟地址指针。