CANN/cannbot-skills: easyasc DSL转AscendC工作流
ops-easyasc-dsl【免费下载链接】cannbot-skillsCANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体本仓库为其提供可复用的 Skills 模块。项目地址: https://gitcode.com/cann/cannbot-skillsEnglish README有天我一拍脑袋想看看 AI 究竟能做成啥样所以就有了这个仓。代码基本是纯添加零天然。我只是个傻读代码和指手画脚的人类罢了。ops-easyasc-dsl把 easyasc DSL → AscendC 的工作流封装成一个 skill。其内部仍然提供用 Python 描述 Ascend 风格混合 kernel 的 DSL 框架它可以从 Python 代码生成指令 IR把 IR 下沉成拆分后的 cube/vec 代码路径在内置模拟器中运行 kernel为非模拟器场景生成 custom-op 源码产物这个仓库主要围绕三件事展开用kernel、Tensor、GMTensor、Var以及可选的vf微函数辅助在 Python 里编写 kernel。由框架负责构建指令 IR、补上各执行侧需要的同步并把程序拆成 cube 和 vec 两条路径。再通过模拟器或生成出来的运行时产物验证结果。Skill 入口面向用户的 skill 入口是skill/SKILL.md。可复用的工作流位于agent/下。在阅读已归档的运行时/文档内容或运行示例之前需要先按需还原bash agent/scripts/init.sh脚本是幂等的只会还原缺失的目录。为什么会有这个仓库这个代码库主要服务于 kernel 的开发、实验和调试尤其适合下面这些场景快速验证新的纯 cube 或混合 cube/vec 流水线原型在模拟环境里验证尾块处理、tiling 和精度边界查已有 kernel看看哪些 DSL 写法和实现套路是可行的安装不用安装。执行bash agent/scripts/init.sh还原easyasc/后想办法把easyasc.a5或者easyasc.a2给 import 进来即可。快速开始示例环境仅作参考并非必须# 仅作参考——请根据本地情况调整 conda activate torch210npu然后运行一个最小可执行的 kernel 示例需先执行bash agent/scripts/init.shpython agent/example/kernels/a5/matmul_float_mmad.py这个示例展示了最小的端到端流程用kernel定义一个 kernel通过OpExec(..., simulatorTrue)启动它把模拟输出和 PyTorch 参考结果做对比OpExec真机构建 CANNSIM 所需环境变量使用默认的simulatorFalse跑OpExec(kernel)时框架会在当前工作目录生成并执行b.sh、r.sh。脚本里已写入通用基线若本机布局不同请在启动 Python 前自行导出下表变量。变量何时需要设置示例值ASCEND_HOME_PATH必须指向你的 CANN 安装根你的 CANN 安装路径其下应有bin/setenv.bashASCEND_CUSTOM_OPP_PATH需要拼接额外自定义 OPP 根可为空导出后避免set -u与set_env.bash冲突EASYASC_PYTHON_BINCANNopbuild调用的python3需要NumPy含有该解释器的目录如某 conda 环境的bin会加入PATHPYTHONPATH需从仓库根 importeasyasc仓库根目录b.sh/r.sh用EASYASC_ROOT脚本所在目录拼接相对路径请在仓库根目录跑代码生成使脚本落在根目录。脚本会尝试source ${ASCEND_HOME_PATH}/bin/setenv.bash配置厂商库LD_LIBRARY_PATH并用cannsim跑 aclnn 测试二进制。若op_build缺.so检查ASCEND_HOME_PATH与setenv.bash若报缺少numpy设置EASYASC_PYTHON_BIN指向带 NumPy 的 Python 所在目录。核心概念easyasc.a5面向 A5 风格架构与指令序列的一套公开 DSL 接口。当前仓库里大多数 kernel 和测试都在使用它包含 cube、vec、micro、寄存器、cast 和调试辅助功能。easyasc.a2面向 A2 风格架构与指令序列的另一套公开 DSL 接口。它不是a5的兼容层而是针对另一类指令族的并列架构接口。GMTensor全局内存张量对应 kernel 的输入和输出。Tensor位于L1、L0A、L0B、L0C或UB中的片上张量。DBuff/TBuff用来描述基于 slot 复用的缓冲张量辅助类型。Var用于表示循环边界、维度和符号形状的标量值。OpExec运行时入口可用于模拟器执行或代码生成。典型开发流程先把精确的 PyTorch 公式写清楚。选择流水线拓扑仅 cubecube - vecvec - cubevec - cube - veccube - vec - cube用 Python 把 kernel 实现出来。使用OpExec(..., simulatorTrue)验证。如果重复出现的标量维度让形状推导变得不明确就显式加上shape_bindings。只有在模拟器结果和参考实现对齐之后再继续看生成产物和硬件相关执行。仓库结构skill/— skill 入口skill/SKILL.mdagent/— 可复用的 easyasc DSL → AscendC 工作流agent/ROUTER.md— 渐进披露的 routeragent/scripts/— 维护脚本包含init.shagent/assets/— 归档的 runtime/docsops-easyasc-dsl-runtime.tar.gz与 exampleops-easyasc-dsl-example.tar.gzagent/example/— 精选 kernel 示例与手动 demo按需还原agent/references//agent/playbooks//agent/index/— 参考、playbook 与 JSON 索引由agent/scripts/init.sh按需还原easyasc/— DSL 运行时与 codegendoc/— 英文文档doc_cn/— 中文文档镜像agent/example/kernels/— 精选示例 kernelagent/example/demo/— 按设备家族整理的手动运行示例注意testcases/已从交付的 skill 包中移除。文档索引doc_cn/目录由agent/scripts/init.sh还原快速开始编程模型编写第一个 Kernel混合流水线与同步模拟器与 Trace代码生成与运行时Kernel 模式与范式测试与验证API 参考故障排查面向贡献者的架构说明Stub 与 Codegen 名字对照表【免费下载链接】cannbot-skillsCANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体本仓库为其提供可复用的 Skills 模块。项目地址: https://gitcode.com/cann/cannbot-skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2600004.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!