本章节详述通信算子必需的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参数的流程如下:
1 2 3 4 5 |
const char *groupName = "testGroup"; 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); |
可调用的配置接口列于下表。
接口 |
功能 |
---|---|
设置通信任务类型。 |
|
设置通信任务所在的通信域。 |
|
设置通信算法。 |
|
设置Reduce操作类型。 |
|
预留接口,配置后不生效。 |
|
设置本卡的通信算法的计算结果是否输出到recvBuf。 |
|
设置通信算法获取输入数据的位置。 |
|
预留接口,配置后不生效。 |
1 2 |
mc2CcTilingConfig.GetTiling(tiling->mc2InitTiling); mc2CcTilingConfig.GetTiling(tiling->reduceScatterTiling); |