Moore Perf Compute 用户指南
前置要求
在开始使用 Moore Perf Compute 之前,请确保完成以下准备工作:
1. 安装 Moore Perf Compute
- 系统要求:Ubuntu 22.04 LTS(x86_64 或 AArch64)
- GPU 要求:摩尔线程 MUSA GPU(M1000、S4000、S5000)
- 依赖版本:Linux Driver 5.2.0、MUSA SDK 5.2.0
详细安装步骤参见安装指南。
2. 了解性能分析基础
建议先阅读性能分析文档,了解关键指标、分析方法和核心概念:
- Roofline 模型:理解计算受限与内存受限的区别
- Section 指标:LaunchStats、MemoryWorkloadAnalysis、SpeedOfLight
- 重放机制:为什么需要多次执行内核
当前同一 时间,同一个 GPU 上只能对一个进程进行数据收集。
使用指南
- 命令行界面 (CLI)
- 图形界面 (GUI)
命令行界面 (CLI)
Moore Perf Compute CLI(mcu)提供了从命令行分析 MUSA 应用程序的方法,目前仅支持 Linux 系统。
快速开始
本节提供快速入门指南,帮助你快速了解 mcu 的基本用法。
启动目标应用程序
命令行分析器会启动目标应用程序、插桩目标 API,并为指定的 kernel 收集性能分析结果。CLI 可执行文件名为 mcu,位于 Moore Perf Compute 安装目录下的 target-linux-x86_64 或 target-linux-aarch64 目录中。
要收集目标应用程序中所有 kernel launch 的指标,运行:
mcu my_application
自定义数据收集
提供多种选项来指定应收集哪些 kernel 的数据:
-k, --kernel-name:通过 kernel 名称的正则匹配过滤 kernel。--devices:指定要分析的 GPU 设备。
当前默认收集所有 Section 中的指标。
输出报告文件
默认情况下,分析结果会同时输出到命令行和报告文件。指定 -o 可修改报告文件名;不指定则输出到默认文件 report#.mcu-rep:
mcu -o my_report my_application
使用模式
启动模式 (Launch Mode)
mcu 采用 Launch Only 模式,即在启动目标程序时进行性能分析。这种模式下,mcu 会:
- 启动目标应用程序
- 监控并拦截应用程序对 MUSA API 的调用
- 收集配置的性能指标
- 生成分析报告
典型的工作流程:
mcu [options] [application-arguments]
多进程支持 (Multi-Process Support)
mcu 支持分析多进程应用程序,例如 MPI 应用。默认情况下,mcu 会自动抓取所有子进程。
分析 MPI 应用:
- 对节点上的所有 rank 进行分析,并将所有分析数据存储在单个报告中:
mcu -o mpirun_report.mcu-rep mpirun -n 4 ./my_mpi_app
- 对于多节点提交,每个节点可以使用一个
mcu实例。为每个 rank 指定唯一的报告文件:
mpirun -n 16 mcu -o rank_%r.mcu-rep ./my_mpi_app
建议将每个 rank 绑定到不同的卡。
命令行选项
本节详细说明 mcu 的所有命令行选项。
通用选项 (General Options)
| 选项 | 描述 |
|---|---|
-h, --help | 打印帮助信息 |
-v, --version | 打印版本信息 |
--build-timestamp | 打印构建时间戳 |
启动选项 (Launch Options)
| 选项 | 描述 | 示例 |
|---|---|---|
-e, --environment | 为目标程序进程设置环境变量。环境变量应定义为 A=B。可以指定多个环境变量,格式为 A=B,C=D | -e LD_LIBRARY_PATH=/usr/local/musa/lib |
--working-directory | 设置目标程序进程的工作目录 | --working-directory /home/user/project |
常用分析选项 (Common Profile Options)
| 选项 | 描述 | 示例 |
|---|---|---|
--dump-mode | 选择数据转储模式:normal(程序结束后一次性转储)或 interval(定期转储,默认) | --dump-mode normal |
--replay-mode | 选择重放机制:application(默认),即 重新启动整个应用程序多次 | --replay-mode application |
采集选项 (Collection Options)
| 选项 | 描述 | 示例 |
|---|---|---|
--sections | 指定要收集的 section。多个 section 用 , 分隔 | --sections SpeedOfLight,LaunchStats |
--list-sections | 列出可用的 section | --list-sections |
--metrics | 指定要收集的 metric 名称。多个 metric 用 , 分隔 | --metrics mp__cycles_elapsed.max,device__mp_frequency |
--list-metrics | 列出可用的 metric 名称 | --list-metrics |
过滤选项 (Filter Profile Options)
| 选项 | 描述 | 示例 |
|---|---|---|
--devices | 多卡场景下指定启用分析的 GPU 设备,用 , 分隔。默认分析所有设备 | --devices 2,4 |
-k, --kernel-name | 过滤 kernel:支持精确匹配,或使用 regex: 前缀进行正则匹配 | -k foo 精确匹配-k regex:foo 包含 foo-k regex:"foo|bar" 包含 foo 或 bar |
--kernel-name-base | 设置 --kernel-name 的匹配机制:function(默认)、demangled、mangled | --kernel-name-base demangled |
-c, --launch-count | 限制收集的 kernel 结果数量。计数只针对匹配 kernel 过滤条件的 kernel 生效 | --launch-count 10 |
-s, --launch-skip | 设置开始收集 kernel 数据前跳过的 kernel launch 数量。计数只针对匹配 kernel 过滤条件的 kernel 生效 | --launch-skip 5 |
采样选项 (Sampling Options)
| 选项 | 描述 | 示例 |
|---|---|---|
--sampling-interval | 设置采样周期,范围为 [1..65535]。实际频率为该值乘以 256 个周期。默认值为 100 | --sampling-interval 200 |
--sampling-buffer-size | 设置设备端样本分配的大小(字节)。默认值为 1048576(1 MB) | --sampling-buffer-size 2097152 |
文件选项 (File Options)
| 选项 | 描述 |
|---|---|
-o, --output | 设置用于写入性能分析结果的输出文件,默认为 report#.mcu-rep |
-f, --force-overwrite | 强制覆盖输出文件(任何现有文件将被覆盖) |
控制台输出选项 (Console Output Options)
| 选项 | 描述 |
|---|---|
--page | 选择要输出的报告页面:details(默认) |
图形界面 (GUI)
Moore Perf Compute GUI 提供图形界面,方便您分析目标程序并查看分析结果。主要功能包括:
- 启动和配置性能分析任务
- 查看和分析性能报告
- 支持本地和远程目标程序分析
快速入门
您可以通过搜索快捷方式 mcu-ui 启动 GUI 程序。在 Linux 系统上,该程序位于 Moore Perf Compute 安装目录下的 host-linux-x86_64 或 host-linux-aarch64 目录中;在 Windows 系统上,则位于 host-windows-x86_64 目录中。
程序启动后默认进入欢迎界面。您可以在该页面直接打开报告、新建项目或打开已有项目。

使用 GUI 启动远程目标程序分析
添加远程连接

- 点击工具栏中的 Connect 按钮,打开 Connect to process 弹窗。
- 选择目标平台(例如
Linux(x86_64))。 - 点击右侧 + 号按钮,打开 Add remote connection 弹窗。
- 完善 SSH 信息。
- 点击 Add 完成添加。
配置目标程序和分析参数

其中标记为 (required) 的目标程序路径 (Application Executable) 和输出文件路径 (Output File) 为必填项,其余配置可参考命令行选项。
启动分析
点击 Connect to process 窗口右下角的 Launch 按钮,启动分析流程。
使用 GUI 查看报告
点击欢迎页面的 Open File 按钮,或通过工具栏中的 File > Open File 菜单打开报告文件。报告包含一个用于展示基本信息的标题区域和一个用于切换数据页的选项卡。
主菜单
-
File(文件):
- New Project:新建项目
- Open Project:打开现有项目
- Recent Projects:最近打开的项目(动态显示)
- Close Project:关闭当前项目
- Recent Files:最近打开的报告文件(动态显示)
- Open File(Ctrl+O):打开报告文件
- Exit:退出程序
-
Connection(连接):
- Connect(Ctrl+Shift+C):连接并启动目标程序
-
View(视图):
- Project Explorer:显示或隐藏项目浏览器面板
-
Tool(工具):
- Settings:打开设置对话框
-
Help(帮助):
- About:显示关于对话框
工具栏
- Connect:连接并启动目标程序
报告
分析完成后,会生成 .mcu-rep 格式的报告文件。打开报告后,界面包含标题区域和用于切换数据页的选项卡。
标题

通过标题区域可以查看当前选择的 kernel 和一些基本信息。通过 Result 下拉框可以切换 kernel。
数据页
使用标题下方的标签页可以切换不同的数据页。默认展示 Details 数据页。
详情 (Details)
Details 页面是报告默认展示的数据页。该页面会按照所属 Section 展示当前所选 kernel 执行过程中收集的 metrics。
每个 Section 都包含一段说明文字和一个可展开的内容区域。点击 Section 标题左侧的小三角,可以展开或收起对应内容;如果某个 Section 包含多个内容区域,还可以通过右 侧下拉框切换查看。

Rooflines
展开 GPU Speed Of Light Throughput 对应的内容区域后,可以查看 Rooflines 图,用于可视化分析 kernel 的性能瓶颈。该 Section 默认启用,无需额外配置。

图表支持以下交互操作:
- 放大:点击放大按钮或框选区域
- 缩小:点击缩小按钮
- 重置视图:点击重置按钮或按 Esc 键
内存工作负载分析(Memory Workload Analysis)
内存工作负载分析(Memory Workload Analysis)相关能力由以下三个 section 组成,用于查看 kernel 对 GPU 内存层次结构的访问行为:
MemoryWorkloadAnalysis:默认开启,也可以手动取消MemoryWorkloadAnalysis_Chart:默认关闭MemoryWorkloadAnalysis_Tables:默认关闭
可以通过以下方式控制采集内容:
- 命令行:使用
mcu --sections <section列表> my_application指定要采集的 section - GUI:在 Connect to process 窗口配置分析任务时,打开 Metrics 配置页面,勾选或取消勾选 Memory Workload Analysis、Memory Workload Analysis Chart 和 Memory Workload Analysis Tables 选项
采集完成后,相关结果会显示在报告的 Details 页面。不同 section 组合下的展示方式,以及指标含义和图表解读方法,请参考性能分析中的相关章节。
如果当前环境不支持相应的 section,采集阶段会给出提示,报告中也不会显示该部分内容。
该部分会重点展示以下指标,帮助您判断 kernel 是否主要受内存访问、带宽或内存指令吞吐限制:
- 内存吞吐率(Memory Throughput)
- 内存忙碌(Mem Busy)
- 最大带宽(Max Bandwidth)
- 内存管线忙碌(Mem Pipes Busy)
- L1 命中率(L1 Hit Rate)
- L2 命中率(L2 Hit Rate)
如需了解这些指标以及 Memory Chart 的具体读法,请参考性能分析中的内存工作负载分析章节。
如果需要排查共享内存访问冲突,可以结合 Memory Tables 中的 Bank Conflicts 指标,并参考性能分析中的相关排查方法,以及最佳实践中的共享内存 Bank Conflict 优化章节。
内存工作负载分析图表(Memory Workload Analysis Chart)
内存工作负载分析图表(Memory Workload Analysis Chart)以图形方式展示以下对象之间的数据流:
- kernel
- L1 缓存(L1 Cache)
- L2 缓存(L2 Cache)
- 共享内存(Shared Memory)
- 系统与对等内存(System & Peer Memory)
- 设备内存(Device Memory)
图中还会显示全局内存和共享内存相关的以下信息,便于您直观查看数据在各层内存之间的流动情况:
- 指令数
- 请求数
- 传输大小
- 吞吐率
- 缓存命中率
启用 MemoryWorkloadAnalysis_Chart 后,报告中会显示内存工作负载分析图表。
- 如果同时启用了
MemoryWorkloadAnalysis,图表内容会显示在 Memory Workload Analysis 分区中。 - 如果未启用
MemoryWorkloadAnalysis,则会单独显示为 Memory Workload Analysis Chart 分区。

图表右上角提供以下控制项:
- 值(Values):切换显示传输大小或吞吐率
- 不活跃(Inactive):控制未活跃路径的显示方式
内存工作负载分析表格(Memory Workload Analysis Tables)
内存工作负载分析表格(Memory Workload Analysis Tables)在启用 MemoryWorkloadAnalysis_Tables 后提供。该部分会以表格方式汇总共享内存和设备内存的访问统计,适合对比不同访问类型的计数、峰值占比和吞吐情况。
启用 MemoryWorkloadAnalysis_Tables 后,报告中会显示内存工作负载分析表格。
- 如果同时启用了
MemoryWorkloadAnalysis,表格内容会显示在 Memory Workload Analysis 分区中。 - 如果未启用
MemoryWorkloadAnalysis,则会单独显示为 Memory Workload Analysis Tables 分区。
- 共享内存表(Shared Memory)
- 访问类型:共享加载(Shared Load)、共享存储(Shared Store)、共享原子(Shared Atomic)和合计(Total)
- 统计项:指令(Instructions)、请求(Requests)、% 峰值(% Peak)和 Bank 冲突(Bank Conflicts)
- 设备内存表(Device Memory)
- 访问类型:加载(Load)、存储(Store)和合计(Total)
- 统计项:扇区(Sectors)、字节(Bytes)和吞吐率(Throughput)

会话 (Session)
Session 页面包含报告和设备的一些基本属性,以及启动分析时使用的参数。
项目管理 (Projects)
Moore Perf Compute 使用项目文件来组织和分组性能分析报告。mcu-ui 使用 .mcu-proj 作为项目文件扩展名。
在任何时候,Moore Perf Compute 中只能打开一个项目。收集到的报告会自动分配给当前项目。
默认项目 (Default Project)
当不使用自定义项目时,条目会存储在默认项目中。默认项目用于保存连接配置等信息。
- Windows 项目文件路径位于:
C:/Users/<用户名>/AppData/Roaming/Moore Perf/ - Linux 项目文件路径位于:
/home/<用户名>/.local/share/Moore Perf/
要清除默认项目中的所有信息,需要关闭 Moore Perf Compute 后从磁盘删除配置文件。
项目对话框
新建项目 (New Project)