使用说明
本章节详述通信算子必需的TilingData结构体。本章节提供了三个版本的TilingData,建议使用TilingData,不推荐使用v1版本TilingData和v2版本TilingData。
对于TilingData,在定义通算融合算子的Tiling结构体时,Mc2InitTiling必须定义为算子Tiling结构体的第一个参数,Mc2CcTiling对于在算子Tiling结构体中被定义的位置没有要求。
根据使用标准C++语法定义TilingData的方式,Ascend C提供一组Hccl Tiling API,方便用户获取Hccl Kernel计算时所需的Tiling参数。您只需要传入通信的相关信息,调用API接口,即可获取通信相关的Tiling参数。
Hccl Tiling API获取Tiling参数的流程如下:
- 创建一个Mc2CcTilingConfig类对象。
1 2 3 4 5 6
uint32_t index = 0U; const char *groupName = context->GetAttrs()->GetAttrPointer<char>(index++); uint32_t opType = HCCL_CMD_REDUCE_SCATTER; std::string algConfig = "ReduceScatter=level0:fullmesh"; uint32_t reduceType = HCCL_REDUCE_SUM; AscendC::Mc2CcTilingConfig mc2CcTilingConfig(groupName, opType, algConfig, reduceType);
- 通过配置接口设置通信信息(可选)。
1 2
mc2CcTilingConfig.SetSkipLocalRankCopy(0); mc2CcTilingConfig.SetSkipBufferWindowCopy(1);
可调用的配置接口列于下表。
表1 Mc2CcTilingConfig类对象的配置接口列表 接口
功能
设置通信任务类型。
设置通信任务所在的通信域。
设置通信算法。
设置Reduce操作类型。
预留接口,配置后不生效。
设置本卡的通信算法的计算结果是否输出到recvBuf。
设置通信算法获取输入数据的位置。
预留接口,配置后不生效。
- 调用GetTiling接口,获取Tiling信息。
1 2
mc2CcTilingConfig.GetTiling(tiling->mc2InitTiling); mc2CcTilingConfig.GetTiling(tiling->reduceScatterTiling);
父主题: Hccl Tiling