CANN/catlass样例贡献指南
样例贡献流程【免费下载链接】catlass本项目是CANN的算子模板库提供NPU上高性能矩阵乘及其相关融合类算子模板样例。项目地址: https://gitcode.com/cann/catlass本文档详细介绍了在CATLASS模板库中贡献完整算子样例的流程包括设计、开发、测试和合入四个阶段旨在帮助开发者规范地贡献高质量的算子样例。1. 设计阶段1.1 需求分析在开始实现之前需要明确以下几点算子功能明确算子的数学定义、输入输出格式、支持的数据类型等应用场景了解算子的典型使用场景和性能要求兼容性确认算子与现有模板库的兼容性新增特性识别新增样例的独特特性确保与仓上已有特性不完全重复避免功能重叠1.2 方案设计根据需求分析设计具体的实现方案模板选择选择合适的基础GEMM模板如BasicMatmul、SplitkMatmul等参数设计设计Tiling参数、Dispatch策略等优化策略制定性能优化策略如Preload、SplitK等新特性组件为新特性设计新增组件确保功能完整且与现有组件良好集成不涉及新特性的代码建议尽可能复用仓上已有组件模板1.3 文档设计设计算子样例的文档结构README.md包含简略的算子说明、使用示例等设计文档说明样例的原型设计、设计方案、样例实现、性能测试性能评估时若有标杆建议说明和标杆相比的优势场景2. 开发阶段2.1 环境准备参考快速上手文档搭建开发环境安装CANN toolkit克隆代码仓配置编译环境2.2 代码实现按照以下结构实现算子样例examples/${id}_${op_name}/ ├── CMakeLists.txt # CMake编译文件 ├── README.md # 算子样例使用说明文档 ├── ${id}_${op_name}.md # 算子样例设计文档 └── ${op_name}.cpp # 主实现文件2.3 核心实现Host侧参考Host侧组装文档实现算子的host侧组装Kernel侧参考Kernel开发文档实现算子的kernel侧逻辑Block层参考BlockMmad开发和Block调度器开发文档实现block层逻辑Tile层参考Tile开发文档实现tile层逻辑Epilogue参考Epilogue适配文档实现尾处理逻辑2.4 编译测试使用以下命令编译和测试以A2为例# 编译算子样例 bash scripts/build.sh ${id}_${op_name} # 运行测试 ./output/${id}_${op_name}3. 测试阶段3.1 精度测试执行至少200例的泛化精度测试覆盖不同的输入形状和数据类型。测试标杆若无法复用examples/common/golden里的已有标杆则需要自行补充标杆。精度测试结果需要在合入PR中说明。3.2 性能测试与核性能标杆进行对比测试展示性能优势。需要在算子设计文档里增加性能结果、测试环境、标杆等详细信息。4. 合入阶段4.1 代码准备代码规范确保代码符合项目的代码风格和规范文档完善完善README.md和设计文档测试覆盖确保测试覆盖足够的场景测试用例在tests/test_example.py里增加新增样例的测试用例4.2 提交流程参考贡献指南按照以下流程提交创建Issue在GitCode上创建Requirement|需求建议类Issue说明新算子样例的设计方案分配任务在Issue评论中输入/assign或/assign yourself将Issue分配给自己代码提交提交代码到个人分支创建PR创建Pull Request详细填写PR模板代码审查等待项目维护者进行代码审查合入代码审查通过后代码将被合入主分支4.3 后续维护问题响应及时响应社区反馈的问题文档更新根据使用情况更新文档【免费下载链接】catlass本项目是CANN的算子模板库提供NPU上高性能矩阵乘及其相关融合类算子模板样例。项目地址: https://gitcode.com/cann/catlass创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考