接口功能:完成Matmul计算、Permute(保证通信后地址连续)和AlltoAll通信的融合,先计算后通信。
计算公式:假设x1的shape为(BS, H1),x2的shape为(H1, H2),rankSize为NPU卡数。
相较于[object Object]接口,该接口变更如下:
新增
[object Object]参数,用户根据该参数指定芯片使用的通信引擎。- [object Object]Ascend 950PR/Ascend 950DT[object Object]:
[object Object]支持[object Object]和[object Object]。 - [object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]:无新增特性,
[object Object]仅支持[object Object]。 - [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]:无新增特性,
[object Object]仅支持[object Object]。
- [object Object]Ascend 950PR/Ascend 950DT[object Object]:
每个算子分为,必须先调用“aclnnMatmulAlltoAllV2GetWorkspaceSize”接口获取计算所需workspace大小以及包含了算子计算流程的执行器,再调用“aclnnMatmulAlltoAllV2”接口执行计算。
[object Object]
[object Object]
- aclnnMatmulAlltoAllV2默认支持确定性计算。
- NPU卡数(rankSize),根据设备型号有不同限制:
- [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]:支持2、4、8卡。
- [object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object] :支持2、4、8、16卡。
- [object Object]Ascend 950PR/Ascend 950DT[object Object]:支持2、4、8、16卡。
- 参数说明中shape使用的变量H2必须整除NPU卡数。
- H1范围仅支持[1, 65535]。
- BS*rankSize和H2的值不得超过2147483647(INT32_MAX),BS的值不得小于0,H2的值不得小于2。
- 空tensor的支持度根据不同设备型号有不同的限制:
- [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]:不支持任何空tensor。
- [object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object] :不支持任何空tensor。
- [object Object]Ascend 950PR/Ascend 950DT[object Object]:仅支持输入x1的第一维度(BS)为0的空tensor,其它空tensor均不支持。
- 非连续tensor的支持度根据不同设备型号有不同的限制:
- [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]:不支持任何非连续tensor。
- [object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object] :不支持任何非连续tensor。
- [object Object]Ascend 950PR/Ascend 950DT[object Object]:仅支持x2为非连续tensor,其它非连续tensor均不支持。
- x1、x2计算输入的数据类型要和output计算输出的数据类型一致,传入的x1、x2与output均不为空指针。
- biasOptional的数据类型根据不同设备型号有不同的限制:
- [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]:output计算输出的数据类型为FLOAT16时,biasOptional计算输入的数据类型支持FLOAT16;output计算输出的数据类型为BFLOAT16时,biasOptional计算输入的数据类型支持FLOAT32。
- [object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object] :x1/x2计算输入的数据类型为FLOAT16时,biasOptional计算输入的数据类型支持FLOAT16;x1/x2计算输入的数据类型为BFLOAT16时,biasOptional计算输入的数据类型支持FLOAT32。
- [object Object]Ascend 950PR/Ascend 950DT[object Object]:x1/x2计算输入的数据类型为FLOAT16时,biasOptional计算输入的数据类型支持FLOAT16和FLOAT32;x1/x2计算输入的数据类型为BFLOAT16时,biasOptional计算输入的数据类型支持BFLOAT16和FLOAT32。
- 通算融合算子不支持并发调用,不同的通算融合算子也不支持并发调用。
- 不支持跨超节点通信,只支持超节点内。
- 通信引擎参数commMode根据不同设备型号有不同的限制:
- [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]:仅支持输入
[object Object]。 - [object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]:仅支持输入
[object Object]。 - [object Object]Ascend 950PR/Ascend 950DT[object Object]:支持输入
[object Object]和[object Object]。
- [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]:仅支持输入
- 通信引擎约束:
- [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]:支持MTE通信。
- [object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object] :支持AI_CPU通信。
- [object Object]Ascend 950PR/Ascend 950DT[object Object]:
- 支持CCU通信和AI_CPU通信。
- CCU仅支持单机UB域内互联,AI_CPU可支持跨机UB域内互联。
- 通信域约束:同一个通信域内只能使用同一种通信方式。
示例代码如下,仅供参考,具体编译和执行过程请参考编译与运行样例。
说明:本示例代码调用了部分HCCL集合通信库接口:HcclGetCommName、HcclCommInitAll、HcclCommDestroy,请参考。
[object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]:
[object Object][object Object]Ascend 950PR/Ascend 950DT[object Object]:
[object Object]