跳到主要内容

使用 Moore Perf System 进行程序性能分析及优化

2024-08-06

Moore Perf System 提供可视化界面,在时间轴上按时间顺序显示 CPU 和 GPU 的事件、吞吐和性能指标,帮助开发人员方便、快速、准确的定位到系统级别的性能瓶颈,进而进行针对性分析和优化,使程序性能满足需求。

下载 Moore Perf System

Moore Perf System 核心功能

  • 收集API
    对于 Compute 任务,支持采集 MUSA API;对于 Graphics 任务,支持采集 OpenGL(暂仅支持Linux)、Vulkan(暂仅支持Linux)、DirectX 9、DXGI、DirectX 11。

  • CPU和GPU并行分析
    同时分析 CPU 和 GPU 的性能数据,帮助开发人员理解并优化跨硬件平台的并行计算任务。

  • GPU指标采样
    开启 GPU 指标采样,可以收集 PCIe 吞吐、GPU Clock、GPU Memory、GPU Power、温度信息。开发人员根据工作负载,进行性能优化。

使用 Moore Perf System 进行数据抓取和报告生成

Moore Perf System支持CLIGUI进行抓取

使用CLI

通过msys profile [options] <application> [<app args>]可以进行抓取,使用msys profile --help可以具体的用法

举例如下: 抓取MUSA程序

msys profile -t musa -o musa_app.msys-rep -e LD_LIBRARY_PATH=/usr/local/musa/lib /path/to/musa_app app_args
  • -t指定抓取的类型
  • -o指定report生成路径
  • -e指定target app的环境变量
  • /path/to/musa_app替换为target app的路径,如果target app有参数,写在后面即可

使用GUI

在 Windows和Linux 上,我们可以通过 GUI 进行抓取。

GUI Profiling

选择 Target program,勾选需要采集的trace项,点击 Start 可以开始抓取。抓取完成之后会自动打开报告。

典型应用场景

抓取和分析 MUSA 程序

Moore Perf System 提供了命令行功能,抓取 MUSA 程序可以使用如下命令:

msys profile -t musa -o musa_app.msys-rep -e LD_LIBRARY_PATH=/usr/local/musa/lib /path/to/musa_app

通过 msys profile 命令可以启动MUSA程序,程序退出之后会生成一份 musa_app.msys-rep 报告。

MUSA example

上图中,我们通过msys profile命令抓取了如下信息:

  • MUSA HW:GPU上发生的活动的跟踪信息,其中包括内存操作(例如,Memcpy DtoH、Memcpy HtoD)和内核执行,展开 Stream 行,可以查看每一个 Stream 的情况。
  • MUSA API:分为 MUSA Runtime API(以musa开头,如musaLaunch)和MUSA驱动API(以 mu 开头,如 muDeviceGetCount )。MUSA API 是放到每一个 thread 下面。

抓取和分析 OpenGL 程序

Moore Perf System支持在 Linux 系统上抓取 OpenGL API,使用如下命令抓取 OpenGL 程序:

msys profile -t opengl -o opengl_app.msys-rep /path/to/opengl_app

OpenGL Example

上图中通过 Moore Perf System 可以查看每一个 OpenGL API 的运行时长

抓取和分析Vulkan程序

Moore Perf System 支持在 Linux 系统上抓取 Vulkan API,使用如下命令抓取 Vulkan 程序:

msys profile -t vulkan -o vulkan_app.msys-rep /path/to/vulkan_app

Vulkan Example

上图中通过 Moore Perf System 可以查看每一个 Vulkan API 的运行时长

获取 WDDM 信息

GUI Profiling

选择 Target program,勾选 Collect WDDM trace,点击 Start 可以开始抓取。抓取完成之后会自动打开报告

WDDM Example

上图中,展开 WDDM 行,可以分析 packets 从 CPU 发送到 GPU 的情况。