Skip to content

FZR95/BangcTutorial

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

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors