aclnnDistributeBarrierV2
产品支持情况
| 产品 | 是否支持 |
|---|---|
| [object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object] | √ |
| [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object] | × |
| [object Object]Atlas 200I/500 A2 推理产品[object Object] | × |
| [object Object]Atlas 推理系列产品[object Object] | × |
| [object Object]Atlas 训练系列产品[object Object] | × |
功能说明
算子功能:完成通信域内的全卡同步,xRef仅用于构建Tensor依赖,接口内不对xRef做任何操作。
相较于aclnnDistributeBarrier接口,该接口变更如下:
- 支持动态缩容场景:支持在创建通信域后,剔除故障卡,算子可正常执行(无需重新编译),通过传入
elasticInfoOptional参数使能该特性。 - 支持超时检测场景:
timeOutOptional≠0:通过传入大于0的timeOutOptional参数(单位为us)使能本特性,最大支持传入INT32_MAX。当算子内部同步等待时间超过给定timeOutOptional时,则认为所在卡存在超时异常。
函数原型
每个算子分为,必须先调用 “aclnnDistributeBarrierV2GetWorkspaceSize”接口获取计算所需workspace大小以及包含了算子计算流程的执行器,再调用“aclnnDistributeBarrierV2”接口执行计算。
[object Object]
[object Object]
aclnnDistributeBarrierV2GetWorkspaceSize
参数说明
[object Object]- [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]:该产品下
elasticInfoOptional仅支持传入空指针。
- [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]:该产品下
返回值
第一段接口完成入参校验,出现以下场景时报错:
[object Object]
aclnnDistributeBarrierV2
约束说明
通信域使用约束:
- 一个模型中的aclnnDistributeBarrierV2需要使用单独通信域,该通信域中不允许有其他算子。
使用场景说明:
- 在需要进行全卡同步的网络模型中调用该算子,可以屏蔽快慢卡引入的性能波动问题,协助分析性能。
- 可以连续调用,入图时,需将上个算子的输入、下个算子的输出作为入参传入接口。
- 动态缩容功能不支持在TP并行场景下使能。
参数一致性约束:
- 使能
elasticInfoOptional时,需确保DispatchV2、CombineV2系列算子也使能此参数,并且其取值与对应的elasticInfoOptional参数保持一致。
- 使能
调用示例
文件准备:
1.新建barrierDemo目录,按照下方指导在barrierDemo下新建aclnnBarrierDemo.cpp,buildBarrier.sh文件并按照如下代码修改。2.安装cann包,并根据下方指导编译运行barrierDemo。
编译脚本
[object Object]编译与运行:
[object Object]示例代码如下,仅供参考
[object Object]