【讲座笔记】从 0 开始构建 GPU 生态——以沐曦集成电路(MeTax)为例

Intro

本笔记整理于 2024 年 4 月 7 日,上海沐曦集成电路 CTO 杨建博士来上科大进行的产业分享讲座。

1. 什么是软件生态

  • 软件和软件生态是不同的。只有有人使用,有反馈和迭代,最终形成的比软件更为复杂的系统才能称之为生态。

  • 定义:软件与开发者及其之间的关系,在同一环境下共同演化的社会-技术系统。

  • Example:

    • Apple 垂直生态
    • NVIDIA CUDA 生态

2. MeTax 生态全景图

层级 内容
MXMACA Libs DNN ONNX RT Converter & Quantizer
MXMACA Languages MXMACA C++ MXMACA Fortran MXMACA OpenMP
MXMACA Drivers KMD UMD ……
Hardware

3. GPU 软件生态的硬件环境

  • 不同的 CPU、OS、软件栈,总共有成千上万种组合。

  • 即使是和服务器厂商合作,也需要 2.5 - 6 个月

    • 板卡定制、大量的启动测试

4. Setup Step By Step

4.1. Video BIOS

  • 识别 Device ID

  • GPU 与 CPU 的 100MHz PCIe RC 对齐

  • 注册最多六个基地址寄存器

    • 特权寄存器,用户态寄存器,Firmwave 空间寄存器,Device Memory Space……
    • 形成一个树状结构,供 OS 管理
  • 硬件状态的初始化

  • 加密保护

挑战:在不同硬件环境下的健壮性

贯通任务

证明某个功能被正确实现的测试任务。

4.2. GPU Kernel Mode Driver (KMD)

  • 也称之为 Direct Rendering Manager
  • 进程管理、内存管理……
  • 贯通任务:数据的拷贝

4.3. User Mode Driver (UMD)

  • C++ Runtime,C++ 数学函数,Device / Context / Stream 管理,API 支持,GPU Kernel 加载,JIT,测试……
  • 贯通任务:Vector Add 的二进制 Kernel

4.4. Compiler

  • C++,Fortran,OpenAcc,OpenMP,OpenCL,HLSL(DirectX),GLSI(Vulkan)……
  • 需要支持混合编译
  • 贯通任务:VectorAdd
  • Challenge:GCC / LLVM 的更新
    • 编译器的难点不在于开发而在于测试!
    • 测试集的覆盖率是非常重要的
  • 因此,体系结构的支持也非常重要

4.5. 数学库

  • GEMM,Conv……
  • 对于某个特定的 Kernel,可能有无数种 Implementation
  • 常见的性能下降点
    • Long Tail(长尾问题):SM 跑满了,新的任务被迫等待
    • Bank Conflict

4.6. AI 编译器(训练/推理框架)

  • 推理:基本只剩下 OpenAI Triton
  • 训练:基本都是 PyTorch

框架支持的精度准确很重要!除了不能太低,也不能太高

4.7 其他生态

  • 科学计算生态
    • 需要专业人士的参与
  • 大模型生态
    • 目前大模型四个月一次迭代,即使是 NVIDIA 的 TensoRT 的迭代也落后十个月左右
    • Triton 采用 JIT 模式,因此有明显的竞争优势。

【讲座笔记】从 0 开始构建 GPU 生态——以沐曦集成电路(MeTax)为例
https://hypoxanthineovo.github.io/2024/04/07/讲座笔记/MeTax-GPUEchoSystem/
作者
贺云翔 | Yunxiang He
发布于
2024年4月7日
许可协议