llm-wiki wiki · sources 2026-06-21

原文:raw/musa-learning-notes-architecture-analysis.md · 仓库:https://github.com/googs1025/musa-learning-notes · 分析版本 HEAD b4042c3

一句话定位

musa-learning-notes 是面向 gpu-programming-learning 和 CUDA 到 MUSA 迁移的公开学习日志,不是通用库或生产框架。它把 MUSA SDK 官方编程指南拆成 6 周课程,用 38 个 .mu / C++ / Python 小示例覆盖 Runtime API、Stream/Event/Graph、执行模型、访存优化、GEMM、调试、多卡和 torch_musa。它适合作为 wiki 中 GPU / CUDA / MUSA 学习系列入口,连接底层 kernel 训练、llm-inference 性能理解和 k8s-gpu-device-stack

核心架构图

┌────────────────────────────────────────────────────────────────────────────┐
│ MUSA Learning Notes                                                        │
│ Public learning log, not a reusable runtime or library                     │
├────────────────────────────────────────────────────────────────────────────┤
│ docs/                                                                      │
│ ├─ roadmap.md            6-week curriculum and official-guide mapping      │
│ ├─ concepts.md           SIMT, hardware, memory, sync, error model         │
│ ├─ cuda-vs-musa.md       CUDA Runtime/API/tool/library migration map       │
│ ├─ setup.md              local/AutoDL/MUSA SDK setup                       │
│ └─ articles/             long-form learning notes                          │
├────────────────────────────────────────────────────────────────────────────┤
│ code/                                                                      │
│ ├─ include/musa_common.h  MUSA_CHECK, MUSA_CHECK_KERNEL, CpuTimer, GpuTimer │
│ ├─ CMakeLists.txt         mcc-based full-course build harness              │
│ ├─ week1/                 hello, thread index, device info, memory, errors │
│ ├─ week2/                 vectorAdd, pinned memory, timer, stream, graph   │
│ ├─ week3/                 warp divergence, reduce, shfl, dynamic parallel  │
│ ├─ week4/                 coalescing, offset, AoS/SoA, transpose           │
│ ├─ week5/                 shared, constant, tiled GEMM, muBLAS             │
│ ├─ week6/                 MUSA GDB, error dump, MCCL, torch_musa           │
│ └─ leetgpu/easy/          LeetGPU Easy kernels ported to MUSA              │
└────────────────────────────────────────────────────────────────────────────┘

模块分层

层 / 模块 职责
学习路线与概念层 定义 6 周路线、基础概念、术语和每周学习目标
CUDA→MUSA 迁移层 建立 CUDA Runtime 到 MUSA Runtime 的命名映射,并突出 warp size、工具链、库名和 Driver API 差异
构建与公共工具层 mcc 编译 .mu,统一错误检查、计时和远程运行体验
渐进示例层 每个示例只讲一个点,按 Runtime → Stream/Graph → Reduce/访存/GEMM → 调试/多卡/框架递进
练习题与迁移训练层 把 LeetGPU/CUDA kernel 练习迁移成 MUSA 版本,形成可刷题的 kernel 训练路径
实测与复盘层 记录 AutoDL / MUSA SDK 实测数字、环境差异和故障排查

这个仓库的边界很清楚:它不封装一个可被外部调用的 SDK,也不提供生产级 benchmark harness。它的价值在课程结构和示例粒度:同一个概念通常对应一个最小 .mu 文件,读者可以把文档、代码、实测结果和习题串起来。

关键数据流

┌──────────────┐
│ Reader goal  │
│ learn GPU /  │
│ port CUDA    │
└──────┬───────┘
       │
       ▼
┌──────────────────────┐
│ docs/roadmap.md      │
│ choose week/topic    │
└──────┬───────────────┘
       │
       ├──────────────► docs/concepts.md / docs/cuda-vs-musa.md
       │                build mental model and migration rules
       │
       ▼
┌──────────────────────┐
│ code/weekN/*.mu      │
│ PART I/II/III file   │
└──────┬───────────────┘
       │
       ▼
┌──────────────────────┐
│ Makefile / CMake     │
│ mcc + musart/musa    │
└──────┬───────────────┘
       │
       ▼
┌──────────────────────┐
│ MUSA runtime on GPU  │
│ run, time, compare   │
└──────┬───────────────┘
       │
       ▼
┌──────────────────────┐
│ notes + exercises    │
│ retain measurements  │
│ and next questions   │
└──────────────────────┘

设计决策与哲学

关键组件

CUDA→MUSA 对照文档

docs/cuda-vs-musa.md 是整个学习系列的迁移索引。它把 CUDA Runtime / Stream / Graph / 库名映射成 MUSA 对应物,但真正有价值的是指出 warp size: 128 vs 32-arch=sm_xx 不可复用、PTX/IR 不同、Driver API 使用 mu* 前缀这些迁移边界。对已有 CUDA 背景的人来说,这页是防止迁移误判的检查表。

Week 2 Stream / Graph 示例

Week 2 是最像系统性能实验的一组示例。05_multi_stream.mu 展示“真异步”同时需要 pinned host memory、Async API 和 non-default stream;07_musa_graph.mu 展示 musaStreamBeginCapturemusaStreamEndCapturemusaGraphInstantiatemusaGraphLaunch 的最短路径,同时保留 MUSA 3.1.0 上 Graph 反而更慢的实测结论。这一组内容可以和 llm-inference 中逐 token 小 kernel、launch overhead 和静态 DAG 优化关联起来。