소스 정보
- 저장소
- alibaba/MNN
- 최근 소스 활동
- 2026년 8월 11일 09:16
- 감지된 SKILL.md 언어
- 중국어
- 스타
- 15,963
- 포크
- 2,416
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
메뉴
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/alibaba/MNN --skill add-new-op명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
MNN Metal 后端 op/kernel 开发与优化入口。索引四份 sub-doc:kernel 开发规范与优化知识库(命名/写法/GEMV/GEMM/attention)、算子融合全链路(导出图→converter→Metal 单 dispatch)、运行时调度(fence/content-cache/H2D/replay)、构建测试基线、env 开关注册表。根据当前任务选择性阅读对应 sub-doc。
Run MNN tests / benchmarks on host or real devices. Covers two parallel tracks — (1) the regression / CI suite (static checks, host-side tests, on-device Android arm64 matrix via ./test.sh + test_stages.json) and (2) one-command iOS real-device LLM benchmarking (prefill/decode tok/s, branch comparison). Use when the user asks to run the tests, run CI, smoke-test a build, verify a change on a device, benchmark on-device (Android or iPhone/iPad), or add / select / retune a test stage.
MNN Vulkan 后端 kernel/算子性能优化与新特性集成。覆盖 benchmark 基线、kernel 优化迭代、集成验证全流程,以及 GLSL .comp + makeshader 双轨、conv1x1/attention dispatcher 多路径(coopMat/subgroup/nosubgroup)、cooperative matrix、packed weight 设计、pipeline cache、CPU 侧调度瓶颈、Adreno/Mali/Apple 多 vendor 真机验证等参考知识。
SOC 직업 분류 기준
SKILL.md 표시 중
| name | add-new-op |
| description | 为 MNN 框架新增算子。包含 Schema 定义、形状计算、几何计算、后端实现、单元测试的完整 TDD 流程。分 5 步执行,每步有独立测试标准。 |
触发条件:当用户请求为 MNN 添加/实现一个新的算子时触发。常见表述包括:"添加xxx算子"、"实现xxx op"、"支持xxx操作"等。
本 SKILL 指导 AI Agent 为 MNN 框架新增算子支持。采用 TDD(测试驱动)模式,每一步都有明确的测试标准。
优先级顺序:几何计算 > 后端实现
严禁访问以下目录:
schema/private/和source/internal/,包含内部私有代码,不得读取、修改或引用。
| 目录/文件 | 作用 | 何时修改 |
|---|---|---|
schema/default/MNN.fbs | 算子类型和参数定义(开源版) | 每个新算子都需要;内部仓库实际生成走 schema/private/,计划开源发布的算子两份都要改,详见 step1-schema.md §1.5 |
schema/default/CaffeOps.fbs | Caffe 框架算子参数 | 有参数时 |
schema/default/TensorflowOp.fbs | TF 框架算子参数 | 有参数时 |
source/shape/Shape*.cpp | 形状(维度)计算 | 输出形状与输入不同时 |
source/geometry/Geometry*.cpp | 几何计算(算子拆解) | 优先实现 |
source/backend/cpu/CPU*.cpp/.hpp | CPU 后端实现 | 无法几何拆解时 |
source/backend/metal/Metal*.cpp/.hpp/.metal | Metal 后端实现 | 扩展到 Metal |
source/backend/opencl/execution/*.cpp/.h/.cl | OpenCL 后端实现 | 扩展到 OpenCL |
source/backend/vulkan/image/execution/Vulkan*.cpp/.hpp | Vulkan 后端实现 | 扩展到 Vulkan |
source/backend/cuda/execution/*.cu/.cuh | CUDA 后端实现 | 扩展到 CUDA |
include/MNN/expr/ExprCreator.hpp | 表达式 API 函数 | 需要用户可调用时 |
test/op/*Test.cpp | 单元测试 | 每个新算子都需要 |
tools/script/register.py | 注册脚本 | 添加 shape/geometry/backend 后运行 |
┌──────────────────────────────────────────────────────────┐
│ 步骤 1: Schema 定义 (step1-schema.md) │
│ 输入: 算子名称、语义、输入输出定义 │
│ 输出: MNN.fbs 中的 OpType + 可选的参数 table │
│ 测试: flatc 编译通过 │
├──────────────────────────────────────────────────────────┤
│ 步骤 2: 形状计算 (step2-shape.md) │
│ 输入: 算子的输入输出维度关系 │
│ 输出: source/shape/Shape*.cpp │
│ 测试: register.py 运行成功 + cmake 编译通过 │
├──────────────────────────────────────────────────────────┤
│ 步骤 3: 几何计算或 CPU 实现 (step3-compute.md) │
│ 输入: 算子的计算逻辑 │
│ 输出: Geometry*.cpp 或 CPU*.cpp │
│ 测试: register.py + 编译通过 │
├──────────────────────────────────────────────────────────┤
│ 步骤 4: 单元测试 (step4-test.md) │
│ 输入: 算子的预期行为 │
│ 输出: test/op/*Test.cpp │
│ 测试: ./run_test.out op/MyOp 全部通过 │
├──────────────────────────────────────────────────────────┤
│ 步骤 5: 扩展后端与优化 (step5-optimize.md) │
│ 输入: 步骤 4 通过 │
│ 输出: Metal/OpenCL/Vulkan/CUDA 实现 │
│ 测试: 各后端单元测试通过 │
└──────────────────────────────────────────────────────────┘
| 情况 | 需要执行的步骤 |
|---|---|
| 输出形状与输入完全一致,可几何拆解 | 1 → 3(几何) → 4 |
| 输出形状与输入不同,可几何拆解 | 1 → 2 → 3(几何) → 4 |
| 输出形状与输入不同,需要后端实现 | 1 → 2 → 3(CPU) → 4 → 5 |
| 输出形状与输入完全一致,需要后端实现 | 1 → 3(CPU) → 4 → 5 |
现在请打开 skills/add-new-op/step1-schema.md,开始步骤 1。