Skip to content

Repository files navigation

BangC 算子教程集合

本目录包含一系列 BangC 算子实现的初学者教程,每个教程都包含最小实现、优化实现、运行脚本和详细说明。

寒武纪相关学习资料

1. 《智能计算系统》第二版- 第八章,智能编程语言(必看)

2. 寒武纪相关视频教程(选看)

3. 寒武纪相关文档(必看、RAG要用)

教程列表

算子状态说明教程链接
VecAdd✅ 完成向量加法:最小实现 + Tiling 实现tutorial.md
ReLU✅ 完成ReLU 激活函数:最小实现 + Tiling 实现tutorial.md
Softmax✅ 完成Softmax 归一化:最小实现 + Tiling 实现tutorial.md
MaxPooling✅ 完成MaxPool2d 最大池化:最小实现 + Tiling 实现tutorial.md
MatMul✅ 完成矩阵乘法:多种实现tutorial.md
Conv✅ 完成卷积操作:最小实现 + 分组卷积实现tutorial.md
TorchMLU✅ 完成PyTorch MLU 集成tutorial.md
TorchInline✅ 完成PyTorch Inline 扩展tutorial.md

项目结构

Experiments/
├── README.md # 本文件
├── TUTORIAL_WORKFLOW.md # 教程编写工作流程
├── utils.h # 公共工具函数
├── 01_vecadd/ # VecAdd 教程(已完成)
│ ├── tutorial.md # 教程文档
│ ├── vecadd_minimal.mlu # 最小实现
│ ├── vecadd.mlu # Tiling 实现
│ └── build_eval.sh # 运行脚本
├── 02_relu/ # ReLU 教程(已完成)
│ ├── tutorial.md # 教程文档
│ ├── relu_minimal.mlu # 最小实现
│ ├── relu.mlu # Tiling 实现
│ └── build_eval.sh # 运行脚本
├── 03_softmax/ # Softmax 教程(已完成)
│ ├── tutorial.md # 教程文档
│ ├── softmax_minimal.mlu # 最小实现
│ ├── softmax.mlu # Tiling 实现
│ └── build_eval.sh # 运行脚本
├── 04_maxpooling/ # MaxPooling 教程(已完成)
│ ├── tutorial.md # 教程文档
│ ├── maxpooling_dilation.mlu # Dilation 实现(支持 dilation)
│ ├── maxpooling.mlu # Tiling 实现
│ └── build_eval.sh # 运行脚本
├── 05_matmul/ # MatMul 教程(已完成)
│ ├── tutorial.md # 教程文档
│ ├── matmul_00.mlu # 基础实现
│ ├── matmul_01.mlu # 多线程实现
│ ├── matmul_02.mlu # Tiling 实现
│ ├── matmul_03.mlu # 优化实现
│ ├── matmul_04.mlu # Conv 调试实现
│ ├── matmul_conv.mlu # Conv 完整实现
│ └── build_eval.sh # 运行脚本
├── 06_conv/ # Conv 教程(已完成)
│ ├── tutorial.md # 教程文档
│ ├── conv_minmal.mlu # 最小实现
│ └── build_eval.sh # 运行脚本
├── 07_torchmlu/ # PyTorch MLU 教程(已完成)
│ ├── tutorial.md # 教程文档
│ ├── matmul.py # 矩阵乘法实现
│ └── test_matmul.py # 测试脚本
└── 08_torchinline/ # PyTorch Inline 扩展教程(已完成)
├── tutorial.md # 教程文档
└── vec_add_inline.py # 向量加法 Inline 实现

使用指南

快速开始

  1. 选择一个教程:从教程列表中选择一个算子
  2. 阅读教程:打开对应的 tutorial.md 文件
  3. 运行示例:使用运行脚本编译和运行代码
    cd 01_vecadd
    ./build_eval.sh vecadd_minimal.mlu
    ./build_eval.sh vecadd.mlu
  4. 进行探索:按照教程中的探索任务进行实验
  5. 参数调优:尝试不同的参数配置,观察性能变化

贡献指南

欢迎贡献新的算子教程!请遵循以下原则:

  1. 遵循工作流程:参考 TUTORIAL_WORKFLOW.md
  2. 保持一致性:代码风格、文档格式与现有教程保持一致
  3. 注重质量:确保代码可以编译运行,文档清晰完整
  4. 添加探索任务:提供引导性的探索任务,促进主动学习

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages