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 上使用 Moore Perf Compute 采集性能数据前,请停止 MTDCGM 性能字段 2002、2003、2004 和 2005 的监控任务。性能分析结束后,再按原配置恢复监控。
当前同一时间,同一个 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 |