使用 Moore Perf System 进行程序性能分析及优化
2024-08-06
Moore Perf System 提供可视化界面,在时间轴上按时间顺序显示 CPU 和 GPU 的事件、吞吐和性能指标,帮助开发人员方便、快速、准确的定位到系统级别的性能瓶颈,进而进行针对性分析和优化,使程序性能满足需求。
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支持CLI和GUI进行抓取
使用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 进行抓取。
选择 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 报告。
上图中,我们通过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
上图中通过 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
上图中通过 Moore Perf System 可以查看每一个 Vulkan API 的运行时长
获取 WDDM 信息
选择 Target program,勾选 Collect WDDM trace,点击 Start 可以开始抓取。抓取完成之后会自动打开报告
上图中,展开 WDDM 行,可以分析 packets 从 CPU 发送到 GPU 的情况。