跳到主要内容

【仅内部】 MUSA SDK v5.0.0 发布版本信息

下载链接

发布说明

MUSA SDK v5.0.0 版本现已发布。此版本包含 mtcc20、TileLang 的内部体验版本,同时支持 MTX 指令集,欢迎内部同学试用。

注意

此版本为内部体验版本,严禁对外提供。

测试平台

测试环境MTBIOSCPUOS内核版本
Intel + Ubuntu22.04 + S50004.3.29Intel x86 platformUbuntu 22.04.x LTS x86_645.15.0-105-generic
Intel + Ubuntu22.04 + S40003.4.8Intel x86 platformUbuntu 22.04.x LTS x86_645.15.0-105-generic

产品说明

摩尔线程 MUSA SDK 是一套完整的 GPU 并行计算开发环境,专为利用摩尔线程 GPU 加速程序而设计。通过 MUSA SDK,您能够轻松地利用 GPU 加速各种应用,涵盖企业数据中心、桌面、工作站以及云平台和超级计算机等多个领域。该套件包括了 GPU 加速库、调试和优化工具、C/C++编译器以及用于应用程序部署的运行时库等功能。作为一套完整的开发工具,MUSA SDK 包含了以下主要组件:

  • MUSA Toolkits,包含底层编译器、MUSA 运行时库、Musify 工具以及 MUSA-X 基础数学计算加速库
  • muDNN,MT GPU 深度学习加速库
  • MCCL,MT GPU 通信加速库
  • MUSA SDK 依赖于摩尔线程 GPU 和摩尔线程 GPU 通用驱动程序,需要运行在带有摩尔线程 GPU 的服务器/工作站/PC 中,并安装了通用 Linux 驱动程序的环境中运行
  • MT GPU:MTT S5000, MTT S4000,MTT S3000,MTT S80, MTT X300 等
  • 通用驱动软件

另外 MUSA SDK 可配合摩尔线程提供的其他工具和软件提供更完整的 MUSA 计算功能

  • GMI&MTML 工具,可提供显卡的管理监控功能并带有 C 函数接口
  • 摩尔线程云原生套件,提供基于容器环境的 MUSA 计算并兼容 K8s 生态以及基于 RDMA 的 GPU 通信功能

功能描述

  • 支持 SIMT(Single Instruction Multiple Thread,SIMT)架构并行编程模型
  • 提供 MUSA 编程语言配套的编译器工具链 mcc,用于将 MUSA 应用程序源码编译为可以被 GPU 识别的可执行文件
  • MUSA 驱动与运行时库,提供完整的基于 MT GPU 的 MUSA 运行环境
  • 摩尔线程 MUSA 数学库提供了在 MT GPU 上优化过的数学函数库,包括
    • 基础线性代数算子库 muBLAS(MUSA Basic Linear Algebra Subprograms)
    • 快速傅里叶变换库 muFFT(MUSA Fast Fourier Transform)
    • 基础性能元库 muPP (MUSA Performance Primitives)
    • 随机数生成库 muRAND
    • 稀疏矩阵运算库 muSPARSE
    • 稀疏矩阵求解库 muSOLVER
  • MCCL 通信,针对摩尔线程 GPU 和网络进行性能优化的多 GPU 和多节点通信基元。MCCL 提供了 all-gather、all-reduce、broadcast、reduce、reduce-scatter、point-to-point send 和 receive 等原语,这些原语均经过优化,可通过节点内的 PCIe 和 MTLink 高速互联以及节点间的 InfiniBand 网络实现高带宽和低延迟
  • muDNN 库,针对深度学习领域和人工智能模型算法优化的函数库,提供高度优化的数学和数据处理任务的函数,包括张量运算,神经网络层计算,损失函数计算等

计算能力

计算能力(Compute Capability)用于表征计算系统(硬件+软件)所能够覆盖的功能,当前摩尔线程的计算能力包括:

计算能力说明
1.0基于苏堤芯片制造的计算卡+相关软件
2.1基于春晓芯片制造的计算卡+相关软件
2.2基于曲院芯片制造的计算卡+相关软件
3.1新一代计算卡+相关软件

主要更新

功能更新(Feature Updates)


mcc

  • CUDA 12.8 API 兼容率 90.2%
  • 提供 __lsu_ld_cache_hint__lsu_st_cache_hint 接口控制访存 cache policy
  • 提供高精度 powfsinf 实现
  • 提供 SL 寄存器优化和 LICM 优化等解决绝大部分 mutlass 寄存器溢出问题
  • 修复若干 bug

mtx

  • 离线 MTX 编译器
    直接将 MTX 方言解析为 LLVM IR,并输出可用于 MTCC 的 .so 或可进一步经 llc 编译的 IR/ASM

  • 语言与语法支持
    支持 MTX 指令 41 条,内置 MTX 语法预处理,--mtx 模式下默认进行实现 bitcode 链接,生成可下游消费的完整 IR

  • CLI 核心能力

    • --emit-llvm-only:仅产出 LLVM IR
    • --emit-asm:产出汇编
    • --output-dir:指定输出目录
    • --arch:指定架构(默认 mp_31,可自定)
    • --backend mtcc/comgr:指定后端
    • --check-env:检查 LLVM 工具链
  • 环境需求
    需要 LLVM 15+ 的 llvm-link/llvm-dis;opt 可选用于内联与优化。mtxas --check-envscripts/check_llvm_env.sh 可快速诊断路径与版本

  • 已知限制

    • --ignore-errors 不适用于 MTX
    • LLVM 14 及以下无法读取生成的 LLVM17 bitcode
    • --emit-llvm-only 会在 /tmp 写入临时文件,需写权限
    • 缺少 opt 时跳过优化但仍可产出 IR/二进制

mtcc20 (Preview)

一款全新的基于 LLVM 20 的后端编译器。现有的 mtcc 目前基于 LLVM 14,但越来越多的需求指向 LLVM 20,因此进行了大版本升级。


MUSA Driver & Runtime

  1. D2H 空泡优化
    验证 D2H 空泡从 200us 下降到 10us 左右

  2. 动态库版本变更
    MUSA Driver 动态库版本 so-name version 变更为 1,与 CUDA 对齐,实现多版本兼容

  3. MUSA Graph 增强
    支持 error dump 功能,支持 multi cmdbuffer 功能

  4. MUSA LOG 功能增强
    提供 MUSA API 出错时 call stack 打印功能,方便用户定位

  5. CUDA 12.8 兼容性提升
    API 兼容率从 75% 提升至 81.98%

  6. CUDA Sample
    PASS 数量从 126 提升至 141

  7. MUSA-Runtime 分支覆盖率
    达到 63%

  8. Mupti 新增功能
    支持 memory transfer 事件,支持 context 粒度的 pfm,支持 muptiFinalize 接口

  9. fabric handle 接口
    与 KMD 协同开发完成并合入

  10. mudump 增强
    支持打印 unmangled kernel name 的入参


Math-X

muBLAS

  • muBLASLt matmul API 新增 FP8_E4M3/E5M2 混合精度输入,FP16/BF16 精度输出功能支持,及对应的 scale 和 StrideBatched 实现
  • muBLAS 新增兼容 S/D/C/Z 四种精度的 matinvgeqrfgelsgetrfgetrigetrsBatched API 共 24 个,对 CUDA 12.8 兼容达成 100%

muSOLVER

  • musolverDnSgeqrf:增加 intint* 两个类型的参数,对齐同类型 API 的签名
  • musolverDnDgeqrf:同上
  • musolverDnCgeqrf:同上
  • musolverDnZgeqrf:同上
  • musolverDnSgeqrf_bufferSize:增加 musolverDnHandle_tfloat*const int 三个类型的参数
  • musolverDnDgeqrf_bufferSize:同上,指针类型为 double*
  • musolverDnCgeqrf_bufferSize:同上,指针类型为 muComplex*
  • musolverDnZgeqrf_bufferSize:同上,指针类型为 muDoubleComplex*

muSPARSE

重构 SpSV 相关接口提高兼容性:

  • musparseSpSV_createDescr
  • musparseSpSV_destroyDescr
  • musparseSpSV_bufferSize
  • musparseSpSV_analysis
  • musparseSpSV_solve

重构 SpMV 相关接口提高兼容性:

  • musparseSpMV_bufferSize
  • musparseSpMV

重构 ILU0 相关接口提高兼容性:

  • musparseScsrilu02_numericBoost
  • musparseDcsrilu02_numericBoost
  • musparseCcsrilu02_numericBoost
  • musparseZcsrilu02_numericBoost
  • musparseScsrilu02_analysis
  • musparseDcsrilu02_analysis
  • musparseCcsrilu02_analysis
  • musparseZcsrilu02_analysis
  • musparseScsrilu02
  • musparseDcsrilu02
  • musparseCcsrilu02
  • musparseZcsrilu02
  • musparseXcsrilu02_zeroPivot
  • musparseXcsrilu02_clear

muFFT

  • 修复了某些 API 调用后驱动会误报无效设备序号(101)的问题

muPP

  • getHistogramEvenBufferSize 的第三个参数类型由 int* 改为 size_t*
  • GetWaterBufferSize 的第二个参数类型由 int* 改为 size_t*
  • muppiSegmentWatershedGetBufferSize_8u_C1R 的第二个参数类型由 int* 改为 size_t*
  • muppiHistogramEvenGetBufferSize_8u_C1R_Ctx 的第三个参数类型由 int* 改为 size_t*
  • muppiHistogramEvenGetBufferSize_8u_C1R 的第三个参数类型由 int* 改为 size_t*

muRAND

  • 支持 host 端调用随机数生成器 mt19937
  • 增加了 host 端接口对 host 指针的支持

MCCL

  • 支持 MUSA Graph
  • 新增 MCCL over ACE 后端,支持更多通信原语:
    • alltoall
    • allreduce
  • 优化 alltoall 性能并提高稳定性
  • 修复部分 bug

muDNN

  • muDNN 支持最大的 Tensor Dim 由 8 提升到 10
  • Matmul
    • 支持小分块模式下的 splitk
    • 增加更多分块支持,支持 slicek
    • 优化分块选择逻辑
    • 优化 blockwise gemm 反向传播性能
  • BatchNorm:修复传入空 scale 和 bias 的 bug
  • LayerNorm 和 RMSNorm:支持传入非连续的 Tensor
  • CtcLoss:修复反向传播的 bug
  • Topk:优化性能
  • Permute
    • 优化 Tensor 最后一个维度是 broadcast 的性能
    • 不再支持输入输出维度不同的场景
  • FlashAttention
    • 支持 dropout 模式
    • 支持反向传播 headdim=256/512
    • 前向传播 q_headdim=192, kv_headim=128 场景下使用 float32 累加 logsumexp
    • 支持前向和反向传播 varlen q_headdim=192, kv_headim=128
  • Matmul 和 Convolution:支持传入标量 scale_d
  • Convolution3D:修复激活函数计算的 bug
  • CrossEntropyLoss:支持 target_index 为负数的场景
  • ReduceADD:模式支持 int16 和 int64 类型的输出
  • Scatter:修复寄存器溢出
  • muDNN-Bench:Matmul 运算支持混合数据类型
  • 修复多个算子可能发生越界访问的 bug
  • 编译增加安全强化功能
  • 修复一些 bug 和问题

Triton

  • 开源版本从 Triton 3.1.0 升级至 3.2.0
  • 依赖 torch_musa v2.7.0
  • 更完备的功能覆盖,FlagGems 算子通过率 99%
  • 依赖 mtcc,可以简单切换至 mtcc20,后续计划整体迁移至 mtcc20

兼容环境

测试环境S5000S4000
硬件平台Intel x86 platformIntel x86 platform
操作系统Ubuntu 22.04.x LTS x86_64Ubuntu 22.04.x LTS x86_64
内核版本5.15.0-105-generic5.15.0-105-generic
MTBIOS4.3.293.4.8

产品组件说明

MUSA SDK 组件

包名称版本说明
musa_4.0.0-server_amd64.deb4.0.0DDK (KMD/UMD/GMI)
musa_toolkits_5.0.0.tar.gz5.0.0MUSA Runtime/mcc/MUSIFY/muBLAS/muFFT/muPP/muRAND/muSPARSE/muSOLVER
mudnn.3.2.0.QY2.tar.gz3.2.0muDNN(曲院芯片)
mudnn.3.2.0.PH1.tar.gz3.2.0muDNN(PH1 芯片)
mccl.2.2.0.QY2.tar.gz2.2.0MCCL(曲院芯片)
mccl.2.2.0.PH1.tar.gz2.2.0MCCL(PH1 芯片)
triton_1.5.0.tar.gz1.5.0Triton 编译器
tilelang-0.1.6.post2+musa.whl0.1.6.post2TileLang
mtcc20-nightly-x86_64-linux-gnu-ubuntu-20.04.tar.gznightlymtcc20 Preview 版本
moore-perf-system_1.5.0_x86_64.deb1.5.0MoorePerf 性能分析工具
mtml_2.3.0-linux-R_amd64.deb2.3.0MTML 管理监控库

测试报告

测试项S5000S4000合计
测试用例总数104921047220964
通过104841045720941
失败81523

已知问题

JIRA问题描述备注
SW-60843【master】【S5000】【mathX】【muRAND】2025.07.06 daily CI,test_murand_Device_api[murand_poisson_philox4x32_10_test] 失败偶现问题,暂不影响业务
SW-69966【mccl】【master 20251215 daily build】alltoall 和 sendrecv 双机带宽异常特定机器复现,可能和 BIOS 相关
SW-68459【mathX】【muSPARSE】【master/release_musa_4.3.0】bsric0_quick_pre_checkin 失败数学库 case,暂时不影响上层模型训练