rocprofv3+Perfetto用于分析ROCm软件
通过rocprofv3抓取pftrace格式的Trace数据,然后通过Perfetto进行离线分析ROCm软件的行为。
1 rocprofv3 核心功能总结
rocprofv3 是 AMD ROCm 平台上的第三代性能分析工具,用于收集和分析运行在 AMD GPU 上应用程序的跟踪数据和硬件性能计数器。
1.1 基本用法结构
rocprofv3 [分析选项] -- <要分析的应用> [应用参数]
# 示例
rocprofv3 --hip-trace -- ./myapp
--来分隔 rocprofv3 的选项和要分析的应用命令。
1.2 主要功能选项(分类总结)
1.2.1 输入/输出 (I/O) 选项
-i, --input:指定输入配置文件(JSON/YAML)或计数器列表文件(TXT)。-o, --output-file:指定输出文件名。-d, --output-directory:指定输出目录。--output-format:指定输出格式(支持csv,json,pftrace,otf2)。-E, --extra-counters:指定包含自定义计数器定义的 YAML 文件。
1.2.2 跟踪 (Tracing) 选项
这部分选项用于捕获 API 调用、内核分发、内存操作等运行时信息。
-
聚合跟踪(一键启用常用功能):
-r, --runtime-trace:收集 HIP 运行时、Markers (ROCTx)、RCCL、ROCDecode、内存操作和内核分发的跟踪数据。-s, --sys-trace:更全面的跟踪,比-r多了 HIP 编译器 API 和 HSA API。
-
基础跟踪(按模块启用):
--hip-trace:跟踪 HIP API(包括运行器和编译器)。--hsa-trace:跟踪 HSA API(包括核心和扩展)。--marker-trace/--kokkos-trace:跟踪 ROCTx 标记或 Kokkos 工具事件。--kernel-trace:跟踪内核分发。--memory-copy-trace/--memory-allocation-trace/--scratch-memory-trace:跟踪各种内存操作。--rccl-trace/--rocdecode-trace:跟踪通信库或解码器操作。
-
细粒度跟踪(更精细的控制):
--hip-runtime-tracevs--hip-compiler-trace:区分 HIP 运行器和编译器生成的调用。--hsa-core-tracevs--hsa-amd-tracevs--hsa-image-tracevs--hsa-finalizer-trace:区分 HSA 的不同扩展 API。
1.2.3 性能计数器收集 (PMC) 选项
--pmc:指定要收集的硬件性能计数器(如SQ_WAVES,TA_FLAT_READ_WAVES)。多个计数器可用逗号或空格分隔。**注意**:所有计数器必须能在一次运行中同时采集,否则会失败。
1.2.4 PC 采样选项 (Beta功能)
--pc-sampling-beta-enabled:启用程序计数器采样(测试版功能)。- 可配置采样单元(
instructions,cycles,time)、方法(stochastic,host_trap)和间隔。
1.2.5 后处理与摘要选项
对收集到的跟踪数据进行统计和摘要生成。
--stats:为启用的跟踪类型收集统计信息(如调用次数、耗时)。-S, --summary:在分析结束时输出一个总的摘要。-D, --summary-per-domain:为每个跟踪域(如 HIP_API, KERNEL_DISPATCH)分别输出摘要。--summary-groups:使用正则表达式自定义摘要分组(如KERNEL_DISPATCH|MEMORY_COPY)。-u, --summary-units:设置摘要中时间显示的单位(秒、毫秒、微秒等)。
1.2.6 内核命名选项
-M, --mangled-kernels:显示内核的原始混淆名称(不进行反混淆)。-T, --truncate-kernels:截断反混淆后的内核名称(只显示基名)。--kernel-rename:使用roctxRangePush/Pop定义的区域名称来重命名内核。
1.2.7 过滤选项
用于缩小分析范围。
--kernel-include-regex/--kernel-exclude-regex:通过正则表达式包含或排除特定的内核。-p, --collection-period:设置数据采集的时间周期(启动延迟:采集时长:重复次数),可用于周期性采样或分析特定阶段。--collection-period-unit:设置-p选项中使用的时间单位。
1.2.8 信息显示选项
-L, --list-avail:列出所有可用的性能计数器和 PC 采样配置。
1.2.9 其他选项
--log-level:设置日志级别。--preload:预加载指定的库(常用于调试器或 sanitizer)。--rocm-root:手动指定 ROCm 的安装路径。
1.3 总结
rocprofv3 是一个功能极其丰富的工具,其选项主要围绕以下几个方面:- 采集什么:跟踪 API/内核/内存,还是硬件计数器。
- 如何输出:输出格式、文件名、目录。
- 如何处理数据:生成摘要、统计信息。
-
如何过滤:按内核名称、按时间范围过滤数据。
建议通过
-i 使用配置文件来管理复杂的分析会话,而不是在命令行中列出所有选项。2 Perfetto分析pftrace
Perfetto 是 Google 开发的一套用于性能检测和跟踪分析的工具,而 Perfetto UI 是其基于网页的可视化界面,用于加载、可视化和分析通过 Perfetto 或系统跟踪(如 Android systrace)生成的性能跟踪文件(.perfetto-trace或 .ftrace等格式)。

Perfetto UI提供了在线分析pftrace功能:
- 抓取pftrace:rocprofv3 --sys-trace --output-format pftrace -o app.pftrace -- ./you_app
- 点击界面中的 "Open trace file" 按钮,从你的本地文件系统选择
.perfetto-trace,.ftrace,.ctrace,.pftrace或其他支持的跟踪文件。 - Perfetto UI 会将跟踪数据以时间线的形式展示出来。
打开后可以看到根据时间线排列的API和事件等:

联系方式:arnoldlu@qq.com
浙公网安备 33010602011771号