cann/asc-devkit v2版本TilingData(废弃)
v2版本TilingData废弃【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit[!NOTE]说明 该结构体废弃并将在后续版本移除请不要使用该结构体。无需直接对该结构体中的成员进行设置统一使用HCCL Tiling提供的接口设置即可。功能说明AI CPU启动下发通信任务前需获取固定的通信配置如表1所示。在算子实现中由Tiling组装通信配置项通过配置固定参数和固定参数顺序的Tiling Data将通信配置信息在调用AI CPU通信接口时传递给AI CPU。参数说明表1v2版本HCCL TilingData参数说明| 参数名 | 描述 | | --- | --- | | version | uint32_t类型。用于区分TilingData版本。v2版本的TilingData结构体中version字段仅支持取值为2。注意该字段在v2版本TilingData中的位置同v1版本的preparePosition字段。当该字段取值为2时为v2版本的结构体当取值为1时为v1版本的结构体请使用Mc2Msg结构体。 | | mc2HcommCnt | uint32_t类型。表示各通信域中通信任务总个数。当前该参数支持的最大取值为3。 | | serverCfg | Mc2ServerCfg类型。集合通信server端通用参数配置。 | | hcom | Mc2HcommCfg类型。各通信域中每个通信任务的参数配置。在通信算子TilingData的定义中根据各通信域中通信任务总个数共需要定义mc2HcommCnt个Mc2HcommCfg结构体。例如mc2HcommCnt2则需要依次定义2个Mc2HcommCfg类型的参数自定义参数名比如hcom1、hcom2。 |表2Mc2ServerCfg结构体说明参数名描述version预留字段不需要配置。debugMode预留字段不需要配置。sendArgIndex预留字段不需要配置。recvArgIndex预留字段不需要配置。commOutArgIndex预留字段不需要配置。reserved预留字段不需要配置。表3Mc2HcommCfg结构体说明参数名描述skipLocalRankCopy预留字段不需要配置。skipBufferWindowCopy预留字段不需要配置。stepSize预留字段不需要配置。reserved预留字段不需要配置。groupName当前通信任务所在的通信域。char*类型支持最大长度128。algConfig通信算法配置。char*类型支持最大长度128。当前支持的取值为AllGatherlevel0:doubleringAllGather通信任务。ReduceScatterlevel0:doubleringReduceScatter通信任务。AlltoAlllevel0:fullmesh;level1:pairwiseAlltoAllV通信任务。opType表示通信任务类型。uint32_t类型取值详见HcclCMDType参数说明。reduceType归约操作类型仅对有归约操作的通信任务生效。uint32_t类型取值详见HcclReduceOp参数说明。约束说明如果需要使用v2版本的Tiling结构体必须设置Tiling结构体的第一个参数version2。算子的Tiling Data结构需要完整包含v2版本HCCL TilingData参数其中各参数需要严格按照对应参数的结构来定义。调用示例如下为自定义算子AlltoallvDoubleCommCustom的算子原型。该算子有两对输入输出其中x1、y1是ep通信域的AlltoAllV任务的输入输出x2、y2是tp通信域的AlltoAllV任务的输入输出。namespace ops { class AlltoallvDoubleCommCustom : public OpDef { public: explicit AlltoallvDoubleCommCustom(const char* name) : OpDef(name) { this-Input(x1) .ParamType(REQUIRED) .DataType({ge::DT_FLOAT16, ge::DT_BF16}) .Format({ge::FORMAT_ND, ge::FORMAT_ND}) .UnknownShapeFormat({ge::FORMAT_ND, ge::FORMAT_ND}); this-Input(x2) .ParamType(REQUIRED) .DataType({ge::DT_FLOAT16, ge::DT_BF16}) .Format({ge::FORMAT_ND, ge::FORMAT_ND}) .UnknownShapeFormat({ge::FORMAT_ND, ge::FORMAT_ND}) .IgnoreContiguous(); this-Output(y1) .ParamType(REQUIRED) .DataType({ge::DT_FLOAT16, ge::DT_BF16}) .Format({ge::FORMAT_ND, ge::FORMAT_ND}) .UnknownShapeFormat({ge::FORMAT_ND, ge::FORMAT_ND}); this-Output(y2) .ParamType(REQUIRED) .DataType({ge::DT_FLOAT16, ge::DT_BF16}) .Format({ge::FORMAT_ND, ge::FORMAT_ND}) .UnknownShapeFormat({ge::FORMAT_ND, ge::FORMAT_ND}); this-Attr(group_ep).AttrType(REQUIRED).String(); this-Attr(group_tp).AttrType(REQUIRED).String(); this-Attr(ep_world_size).AttrType(REQUIRED).Int(); this-Attr(tp_world_size).AttrType(REQUIRED).Int(); this-AICore().SetTiling(optiling::AlltoAllVDoubleCommCustomTilingFunc); this-AICore().AddConfig(ascendxxx); // ascendxxx请修改为对应的AI处理器型号。 this-MC2().HcclGroup({group_ep, group_tp}); } }; OP_ADD(AlltoallvDoubleCommCustom); } // namespace ops如下为该自定义算子Tiling Data声明和实现。该自定义算子Tiling Data的声明中首先定义version字段设置为2表明为v2版本的通信算子Tiling结构体。其次定义mc2HcommCnt字段本例AlltoallvDoubleCommCustom算子的kernel实现中共2个AlltoAllV通信任务该参数取值为2。然后定义server通用参数配置Mc2ServerCfg。最后定义2个Mc2HcommCfg结构体表示各通信域中的每个通信任务参数配置。// HCCL TilingData声明 BEGIN_TILING_DATA_DEF(AlltoallvDoubleCommCustomTilingData) TILING_DATA_FIELD_DEF(uint32_t, version); // HCCL tiling结构体的版本设为2 // 各通信域中的通信算子总个数当前最多支持3个。AlltoallvDoubleCommCustom算子kernel实现中每个通信域中均用了1个AlltoAllV因此设为2 TILING_DATA_FIELD_DEF(uint32_t, mc2HcommCnt); TILING_DATA_FIELD_DEF_STRUCT(Mc2ServerCfg, serverCfg); // server通用参数配置融合算子级 // 各通信域中的每个通信任务参数配置算子级共有mc2HcommCnt个Mc2HcommCfg TILING_DATA_FIELD_DEF_STRUCT(Mc2HcommCfg, hcom1); TILING_DATA_FIELD_DEF_STRUCT(Mc2HcommCfg, hcom2); END_TILING_DATA_DEF; REGISTER_TILING_DATA_CLASS(AlltoallvDoubleCommCustom, AlltoallvDoubleCommCustomTilingData);// HCCL TilingData配置片段 static ge::graphStatus AlltoAllVDoubleCommCustomTilingFunc(gert::TilingContext* context) { char* group1 const_castchar*(context-GetAttrs()-GetAttrPointerchar(0)); char* group2 const_castchar*(context-GetAttrs()-GetAttrPointerchar(1)); AlltoallvDoubleCommCustomTilingData tiling; tiling.set_version(2); tiling.set_mc2HcommCnt(2); tiling.serverCfg.set_debugMode(0); tiling.hcom1.set_opType(8); tiling.hcom1.set_reduceType(4); tiling.hcom1.set_groupName(group1); tiling.hcom1.set_algConfig(AlltoAlllevel0:fullmesh;level1:pairwise); tiling.hcom2.set_opType(8); tiling.hcom2.set_reduceType(4); tiling.hcom2.set_groupName(group2); tiling.hcom2.set_algConfig(AlltoAlllevel0:fullmesh;level1:pairwise); tiling.SaveToBuffer(context-GetRawTilingData()-GetData(), context-GetRawTilingData()-GetCapacity()); context-GetRawTilingData()-SetDataSize(tiling.GetDataSize()); return ge::GRAPH_SUCCESS; }【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻