1. 前言¶
1.1. 版权声明¶
本文档提供的信息属于上海燧原科技有限公司和/或其子公司(以下统称“燧原”)所有,且燧原保留不经通知随时对本文档信息或对任何产品和服务做出修改的权利。本文档所含信息和本文档所引用燧原其他信息均“按原样”提供。燧原不担保信息、文本、图案、链接或本文档内所含其他项目的准确性或完整性。燧原不对本文档所述产品的可销售性、所有权、不侵犯知识产权、准确性、完整性、稳定性或特定用途适用性做任何暗示担保、保证。燧原可不经通知随时对本文档或本文档所述产品做出更改,但不承诺更新本文档。
在任何情况下,燧原不对因使用或无法使用本文档而导致的任何损害(包括但不限于利润损失、业务中断和信息损失等损害)承担责任。燧原不承担因应用或使用本文档所述任何产品或服务而产生的任何责任。
本文档所列的规格参数、性能数据和等级需使用特定芯片或计算机系统或组件来测量。经该等测试,本文档所示结果反映了燧原产品的大概性能。系统配置及软硬件版本、环境变量等的任何不同会影响实际性能,产品实际效果与文档描述存在差异的,均属正常现象。燧原不担保测试每种产品的所有参数。客户自行承担对产品适合并适用于客户计划的应用以及对应用程序进行必要测试的责任。客户产品设计的脆弱性会影响燧原产品的质量和可靠性并导致超出本文档范围的额外或不同的情况和/或要求。
燧原和燧原的标志是上海燧原科技有限公司申请和/或注册的商标。本文档并未明示或暗示地授予客户任何专利、版权、商标、集成电路布图设计、商业秘密或任何其他燧原知识产权的权利或许可。
本文档为版权所有并受全世界版权法律和条约条款的保护。未经燧原的事先书面许可,任何人不可以任何方式复制、修改、出版、上传、发布、传输或分发本文档。为免疑义,除了允许客户按照本文档要求使用文档相关信息外,燧原不授予其他任何明示或暗示的权利或许可。
燧原对本文档享有最终解释权。
1.2. 版本记录¶
: 版本记录
时间 | 版本 | 作者 |
---|---|---|
2022-1-18 | tosprof 2022.03 版本用户手册 | Enflame Tech |
2022-6-14 | tosprof 2022.06 版本用户手册 | Enflame Tech |
2022-9-28 | tosprof 2022.09 版本用户手册 | Enflame Tech |
2023-3-28 | tosprof 2023.03 版本用户手册 | Enflame Tech |
1.3. 名词解释¶
: 名词解释
术语 | 说明 |
---|---|
GCU | Deep Thinking Unit ,面向深度学习领域推出的张量处理器 |
DMA | Direct Memory Access ,是专门用于存储访问的硬件. |
SIP | 可扩展的智能处理器, GCU 计算单元 |
CQM | Command Queue Micro-Control-Unit, GCU 内部控制处理器 |
TS | T ops Scheduler, GCU 内部控制处理器 |
Profiling Meta | 在软件栈执行过程中,编译期搜集的数据, 主要是指在 Factor/LLIR 两层搜集的 Profiling 行为的描述信息 |
Profiling Data | 在软件栈执行过程中,编译期搜集的数据, 主要是指在通过硬件回报的 Profiling 行为的时间信息 |
VPD | visual profiler data. 可用于visual profiler打开的文件格式 |
1.4. 概述¶
topsprof 分析工具使您能够从命令行收集和查看分析数据. topsprof 支持在 CPU 和 GCU 上收集与 tops 相关的活动的时间线,包括内核执行、内存传输、内存集和 tops API 调用以及 tops 内核的事件或指标. 分析选项通过命令行选项提供给 topsprof. 收集分析数据后,分析结果显示在控制台中,也可以保存以供 topsprof 或 Tops Visual Profiler 以后查看.
1.5. 使用方法¶
topsprof [options] [application] [application-arguments]
options 需要以 – 或者 - 开头, 示例 –print-api-summary , -print-api-summary.
options 带参数可以用使用空格或者等号隔开,示例 –flag xxx 和 –flag=xxx 效果是等同的.
2. 命令行选项¶
2.1. GCU 采集选项¶
: GCU 采集选项
选项 | 参数 | 默认值 | 说明 |
---|---|---|---|
profile-from-start | on, off | on | 在启动时启用/禁用采集.如果禁用,稍后可以另启动一个topsprof进行控制.此选项不对api trace起作用 |
query-events | N/A | N/A | 列出设备所有事件. |
query-activities | N/A | N/A | 列出设备所有活动. |
query-trace | N/A | N/A | 列出设备所有的trace域. |
enable-events | {format event string} | N/A | 采集指定的事件. |
enable-activities | {format activity string} | N/A | 采集指定的活动. |
export-events | {filename} | N/A | 以json格式导出设备事件到文件. |
export-activities | {filename} | N/A | 以json格式导出设备活动到文件. |
import-events | {filename} | N/A | 从json格式文件导入设备事件. |
import-activities | {filename} | N/A | 从json格式文件导入设备活动. |
devices | {devices id} | N/A | 只采集指定设备的数据. 输入值: ','分隔的设备id. 注意:这里指定的设备列表要和 enable-activities 等选项指定设备的列表一致.除非enable-activities 等选项指定的全部设备. |
metrics | {metric} | N/A | 设置Event/metric统计项. 可以使用enable-events 指定要采集的events. |
gcu-utilization | N/A | N/A | 开启gcu使用率采集. |
gcu-utilization-frequency | {frequency} | 100Hz | 设置gcu使用率采集频率,数据范围是 1 ~ 1000Hz. |
2.2. CPU 采集选项¶
: CPU 采集选项
选项 | 参数 | 默认值 | 说明 |
---|---|---|---|
cpu-profiling-callstack | N/A | N/A | 开启cpu堆栈采集,依赖perf工具,详情请参考附录 |
cpu-profiling-frequency | {frequency} | 100Hz | 设置cpu堆栈采集频率. 数据范围是 1 ~ 100Hz |
cpu-utilization | N/A | N/A | 开启cpu使用率采集,依赖perf工具,详情请参考附录 |
memory-utilization | N/A | N/A | 开启cpu内存采集 |
utilization-frequency | {frequency} | 100Hz | 设置 memory-utilization 和 utilization-frequency 采集频率. 数据范围是 1 ~ 100Hz |
kernel-callstack | N/A | N/A | 开启kernel堆栈采集,依赖内核工具ftrace |
2.3. 打印选项¶
: 打印选项
选项 | 参数 | 默认值 | 说明 |
---|---|---|---|
print-gcu-summary | N/A | N/A | 输出GCU数据的汇总报表 |
print-gcu-trace | N/A | N/A | 输出GCU数据并按时间排序 |
print-summary | N/A | N/A | 输出采集数据汇总报表. 注意,如果没有指明打印格式,默认按此格式输出 |
print-summary-per-gcu | N/A | N/A | 输出采集数据汇总报表,并按设备区分 |
quiet | N/A | N/A | 安静模式,不做任何输出 |
print-app-log | N/A | N/A | 运行时打印应用输出 |
2.4. 输入输出选项¶
: 输入输出选项
选项 | 参数 | 默认值 | 说明 |
---|---|---|---|
export-profile | {filename} | N/A | 导出采集数据 |
export-visual-profiler | {directory} | N/A | 导出采集数据,稍后可以在visual profiler中打开 |
import-profile | {filename} | N/A | 导入采集数据,可导入前一次 export-profile 或 export-visual-profiler 输出的数据 |
export-rawdata | {filename} | N/A | 导出原始数据 |
import-rawdata | {filename} | N/A | 导入原始数据 |
export-csv | {filename} | N/A | 以csv格式导出测试结果 |
visual-profiler-merge-from | {directory} | N/A | 选择一个目录,合并目录中的所有文件,目录中的所有文件都会被视为visual profiler(vpd)格式 |
visual-profiler-merge-to | {filename} | N/A | 合并多个visual profiler(vpd)格式,到一个文件,通过visual-profiler-merge-from指定输入项 |
log-file | {filename} | N/A | 开启后topsprof 所有输出会保存到文件. 如果文件不存在,会自动创建 |
force-overwrite | N/A | N/A | 强制重写模式(已存在的文件会被覆盖) |
help | N/A | N/A | 打印帮助信息 |
version | N/A | N/A | 打印版本信息 |
debug | N/A | N/A | 运行时会打印调试信息 |
debug-dump | N/A | N/A | 运行时会打印调试信息,并在当前目录生成dump文件供调试 |
2.5. 控制选项¶
: 控制选项
选项 | 参数 | 默认值 | 说明 |
---|---|---|---|
session | {string} | N/A | 标记一个已存在的session,session 名称只能是英文字符数字,'-' 或 '_' |
session-new | {string} | {pid} | 创建一个新的session,可用于控制标记,session 名称只能是英文字符数字,'-' 或 '_' |
session-list | N/A | N/A | 列出系统上存在的session |
start | N/A | N/A | 启动采集,用于控制一个之前启动的topsprof 进程,使用--session可指定进程 |
stop | N/A | N/A | 停止采集,用于控制一个之前启动的topsprof 进程,使用--session可指定进程 |
suspend | N/A | N/A | 暂停采集,用于控制一个之前启动的topsprof 进程,使用--session可指定进程 |
resume | N/A | N/A | 恢复采集,用于控制一个之前启动的topsprof 进程,使用--session可指定进程 |
cancel | N/A | N/A | 撤销采集,用于控制一个之前启动的topsprof 进程,使用--session可指定进程 |
2.6. 插件选项¶
: 插件选项
选项 | 参数 | 默认值 | 说明 |
---|---|---|---|
plugin | plugin_name args | N/A | 调用插件,--plugin "{plugin_name} args".使用--plugin "{plugin_name} help "获得插件帮助 |
plugin-list | N/A | N/A | 列出所有支持的插件 |
2.7. 高级选项¶
: 高级选项
选项 | 参数 | 默认值 | 说明 |
---|---|---|---|
reset | N/A | N/A | 重置topsprof内部状态,并删除profiler配置文件(~/. |
buffer | device,host | device | 设置采集buffer 存放位置 |
device-buffer-size | {size in MBs} | 64 MB | 设置 device memory 大小 (MBs). 数据范围是 1 ~ 64 |
host-buffer-size | {size in MBs} | 1024 MB | 设置 host memory 大小 (MBs) . 数据范围是 1 ~ 1024 |
host-ringbuffer-size | {size in MBs} | 16 MB | 设置 host ringbuffer memory 大小 (MBs). 数据范围是 2 ~ 64 |
watermark-threshold | {size in MBs} | 15 MB | 设置触发 host ringbuffer memory 搬运到 host memory 的阈值. 数据范围是 1 ~ host-ring-buffer-size-1 |
2.8. 选项说明¶
启动应用采集必须项¶
以下选项在启动应用采集时必须指定其中一项:
enable-events, enable-activities, import-events, import-activities, metrics, cpu-profiling-callstack, cpu-utilization, memory-utilization, memory-profile, gcu-utilization
冲突选项¶
以下每行内的选项不能同时使用:
import-rawdata,import-profile
import-profile,export-profile,export-visual-profiler
export-profile,export-visual-profiler
enable-events,import-events
enable-activities,import-activities
print-api-summary,print-gcu-summary,print-summary,print-summary-per-gcu
devices,import-events
devices,import-activities
session,session-new
单独使用选项¶
以下选项只能单独使用:
export-events, export-activities, query-events, query-activities, plugin-list, help, version, reset, session-list
控制选项¶
以下选项只能单独或配合session使用:
start, stop, suspend, resume, cancel
启动应用采集限制项¶
以下选项只能启动应用采集时使用:
devices, buffer, device-buffer-size, host-buffer-size, host-ringbuffer-size, watermark-threshold, profile-from-start, import-events, import-activities, enable-events, enable-activities, export-rawdata, print-app-log, cpu-profiling-callstack, cpu-profiling-frequency, cpu-utilization, memory-utilization, utilization-frequency, session-new, memory-profile, gcu-utilization
3. 采集模式¶
topsprof 运行在以下模式一种模式中.
3.1. 统计模式¶
统计模式是topsprof的默认模式.在此模式,topsprof 对每一个gcu算子或 api输出一行结果. 对每一行结果topsprof 会输出最大值,最小值,平均值,调用信息等统计参数. topsprof输出会增加前缀 ==
$ topsprof --enable-activities "*/general/operator" python3 ./r50.py
==14245== TOPSPROF is profiling process 14245, command: python3 ./r50.py
process profile data [=========================================] 100% 0.232s
==14245== ======== Profiling result:
==14245== Type Time(%) Time Calls Avg Min Max Name
==14245== GCU activites: 52.66% 514.88ms 250 2.06ms 364.54us 12.36ms common20_conv_dtu
==14245== 14.59% 142.66ms 857 166.46us 12.29us 2.74ms elementwise_fusion_dtu
==14245== 12.98% 126.92ms 106 1.20ms 195.84us 4.59ms batch_norm_grad_dtu
==14245== 9.04% 88.36ms 106 833.63us 248.83us 2.90ms batch_norm_training_dtu
==14245== 8.23% 80.44ms 66 1.22ms 511.23us 2.29ms dot_dtu
==14245== 0.62% 6.06ms 2 3.03ms 3.01ms 3.06ms common20_select_and_scatter
==14245== 0.48% 4.65ms 6 775.30us 354.30us 1.26ms slice_dtu
==14245== 0.36% 3.54ms 396 8.93us 3.33us 193.28us common20_copy
==14245== 0.29% 2.79ms 2 1.40ms 1.39ms 1.40ms common20_reduce_window
==14245== 0.22% 2.18ms 32 68.28us 5.63us 223.74us common20_reverse
==14245== 0.14% 1.39ms 6 230.87us 11.78us 669.44us elementwise_add_dtu
==14245== 0.10% 984.32us 44 22.37us 3.84us 161.28us common20_broadcast_in_dim
==14245== 0.08% 736.77us 6 122.79us 88.32us 157.70us cpu_convert
==14245== 0.07% 720.64us 60 12.01us 11.52us 15.10us elementwise_mul_dtu
==14245== 0.05% 526.59us 10 52.66us 7.94us 220.16us common20_reduce
==14245== 0.04% 399.62us 24 16.65us 13.06us 19.71us compare_dtu
==14245== 0.01% 143.87us 2 71.94us 71.94us 71.94us pavo_dot_output_fusion_dtu
==14245== 0.01% 103.94us 4 25.98us 19.20us 33.28us dot_general_dtu
==14245== 0.01% 97.28us 6 16.21us 15.36us 16.64us elementwise_and_dtu
==14245== 0.00% 47.87us 4 11.97us 11.78us 12.03us elementwise_div_dtu
==14245== 0.00% 36.61us 4 9.15us 4.35us 14.59us common20_convert
==14245== 0.00% 24.06us 2 12.03us 12.03us 12.03us elementwise_max_dtu
==14245== 0.00% 24.06us 2 12.03us 12.03us 12.03us elementwise_neg_dtu
==14245== 0.00% 23.81us 2 11.90us 11.78us 12.03us elementwise_abs_dtu
==14245== 0.00% 23.81us 2 11.90us 11.78us 12.03us elementwise_log_dtu
==14245== 0.00% 15.62us 1 15.62us 15.62us 15.62us common_rng_uniform
==14245== 0.00% 15.10us 2 7.55us 7.42us 7.68us common20_softmax_fusion
==14245== 0.00% 14.08us 2 7.04us 6.91us 7.17us concatenate_dtu
==14245== 0.00% 13.82us 2 6.91us 6.91us 6.91us common20_select
==14245== 0.00% 5.38us 2 2.69us 2.56us 2.82us common20_iota
3.2. 跟踪模式¶
跟踪模式提供一个时间轴显示发生的活动和持续时间. 每次调用会显示为一行.topsprof输出会增加前缀 ==
$ topsprof --print-gcu-trace --enable-activities "*/general/operator" python3 ./r50.py
==15202== TOPSPROF is profiling process 15202, command: python3 ./r50.py
process profile data [=========================================] 100% 0.247s
==15202== ======== Profiling result:
==15202== Start Duration Name
==15202== 0.00ns 15.62us common_rng_uniform
==15202== 16.13us 16.38us elementwise_fusion_dtu
==15202== 33.02us 4.61us common20_broadcast_in_dim
==15202== 38.14us 4.35us common20_copy
==15202== 43.01us 4.35us common20_copy
==15202== 47.87us 4.61us common20_copy
==15202== 52.74us 4.61us common20_broadcast_in_dim
==15202== 57.86us 4.10us common20_copy
==15202== 62.46us 4.61us common20_copy
==15202== 67.33us 4.61us common20_broadcast_in_dim
==15202== 72.45us 4.10us common20_copy
==15202== 77.06us 4.61us common20_copy
==15202== 82.18us 4.35us common20_copy
==15202== 87.04us 4.35us common20_copy
==15202== 91.90us 4.35us common20_copy
==15202== 96.77us 4.35us common20_copy
==15202== 101.63us 4.35us common20_copy
==15202== 106.24us 4.86us common20_broadcast_in_dim
==15202== 111.62us 4.35us common20_copy
==15202== 116.48us 4.61us common20_broadcast_in_dim
==15202== 121.60us 4.35us common20_copy
==15202== 126.46us 4.35us common20_copy
==15202== 131.33us 4.35us common20_copy
==15202== 136.19us 4.10us common20_copy
==15202== 140.80us 4.35us common20_copy
==15202== 145.66us 4.35us common20_copy
...
3.3. Event/metric 统计模式(Experimental T20 only)¶
Event/metric 统计模式会输出硬件信息,并根据统计项输出不同列.topsprof输出会增加前缀 ==
$ topsprof --metrics sip_busy_efficiency_per_op ./add.py
==16178== TOPSPROF is profiling process 16178, command: python3 ./add.py
process profile data [=========================================] 100% 0.046s
==16178== ======== Profiling result:
==16178== Type Time(%) Time Calls Avg Min Max Name
==16178== GCU activites: 100.00% 24.58us 1 24.58us 24.58us 24.58us elementwise_add_dtu
==16178== ======== Sip busy efficiency(Per-op Mode)
==16178== Index Name OP ID Duration
==16178== sip_busy_without_wait sip_busy_with_wait %
==16178== 0 elementwise_add_dtu 0 24.58us
==16178== sip:0:0:0 3094 7795 39.6921%
==16178== sip:0:0:1 2063 2063 100%
==16178== sip:0:0:2 2112 2112 100%
==16178== sip:0:0:3 2195 2195 100%
==16178== sip:0:0:4 2274 2274 100%
==16178== sip:0:0:5 2329 2329 100%
4. 采集控制¶
4.1. Session¶
topsprof 启动应用时,会创建一个新session或者加入已有的session. start/stop/suspend/resume/cancel 通过–session,指定要控制topsprof进程.当前系统只存在一个session时,可以省略session选项. topsprof –session-list 会列出当前系统所有session.
4.2. 查询采集项¶
选项 –query-activities 或 –query-events 可用来查询可控制的采集项. 示例:
$ topsprof --query-activities
==== Device(0 ~ 1):
Cluster(0 ~ 3):
CDMA(0 ~ 3):DMA VC Execution,DMA Busy
CQM(0 ~ 0):CQM Step Debug Packet,CQM Op Debug Packet,CQM Command Packet,CQM Loop Task,CQM Executable Execute,CQM Sleep
SDMA(0 ~ 5):DMA VC Execution,DMA Busy
SIP(0 ~ 5):SIP Busy
SIPPMC(0 ~ 5):
ClusterLite(0 ~ 1):
CDMA_LITE(0 ~ 1):DMA VC Execution,DMA Busy
SDMA_LITE(0 ~ 0):DMA VC Execution,DMA Busy
SIP_LITE(0 ~ 0):SIP Busy
General(0 ~ 0):Task Pipeline,Launch Kernel,Operator
TS(0 ~ 0):TS Record Stream,TS Wait Stream,TS VDEC Executable Launch,TS HCVG Executable Launch,TS CQM Executable Launch,TS Parse EDMA,TS VG Config,TS Memory Wait,TS Register Wait,TS Memory Write,TS Register Write,TS ISR,TS Parse GDMA,TS Read Packet,TS Command Packet
==== Api Trace:
RUNTIME(0 ~ 0):StreamExecutor_MemcpyD2DSync,StreamExecutor_MemcpyD2HSync,StreamExecutor_MemcpyH2DSync,StreamExecutor_GetOrCreateHostMemObj,Stream_LaunchCodeAsync,Stream_RunExecutableAsync,Stream_RunExecutablePerformance,Stream_MemcpyH2DAsync,Stream_MemcpyD2HAsync,TSStream_WaitMemory,TSStream_WaitEvent,TSStream_RunExecutablePerformanceMode,TSStream_RunExecutable,TSStream_Memset32,TSStream_MemcpyH2D,TSStream_MemcpyD2H,TSStream_MemcpyD2R,TSStream_MemcpyR2D,TSStream_MemcpyD2D,dtuMemcpyD2HASync,dtuWaitHostCallBackFunc,dtuRunExeAsync,FetchNodesData,dtuLaunchHostCallBackFunc,dtuGetExeDefaultStream
4.3. 使用字符串控制¶
选项 –enable-activities 或 –enable-events 使用字符串进行筛选,可控制的 activity,event 分为两种情况. 三层,由 device/engine/activity,event 或 api trace/domain/name 组成. 四层,由 device/cluster/engine/activity,event 组成. 匹配规则如下:
使用名称: 匹配名称符合的全部项.
使用名称 + 下标: 匹配名称符合的第几项.
使用通配符. ‘*’.
每层之中由 ‘,’ 分隔.
层与层之间由 ‘/’ 分隔.
多条匹配规则由 | 符号相连.
all 匹配所有选项.
示例:
采集所有SIP Busy 项
*/*/*/SIP Busy
采集所有RUNTIME 的Api trace项
Api Trace/RUNTIME/*
采集所有设备cluster1中所有SIP Busy 项
*/cluster1/*/SIP Busy
采集设备0/cluster1中所有sdma,cdma 项
0/cluster1/sdma,cdma/*
采集设备0中所有sdma,cdma 的数据
0/*/sdma,cdma/*
采集设备0/cluster1中所有sdma数据及设备1/cluster2中所有cdma
0/cluster1/sdma/*|1/cluster2/cdma/*
采集所有数据
all
4.4. 使用json文件控制¶
选项 –export-activities 或 –export-events 可以导出json格式文件,用于编辑.
json文件是树形节点,最末尾节点的 type 为 activity 或 event. 设置此节点 isCheck 项为 true, 即可开启相关采集项.
随后使用 –import-activities 或 –import-events 可以导入编辑后的json 文件,用于采集项控制.
4.5. Event/metric项的控制¶
Event/metric 规则如下:
如果没有其他的采集项控制,Event/metric会使用内置的默认项进行采集.
如果使用 enable-actities,import-actities 等选项设置了要采集的 activity. Event/metric 的默认开启的actities会被覆盖.
如果使用 enable-events,import-events 等选项设置了要采集的 events. Event/metric 的默认开启的events会被覆盖.
4.6. 采集控制¶
首先启动一个 topsprof 用于采集,之后在另外的终端再开启topsprof 进行控制. 支持 start/stop/suspend/resume/cancel 一个常见的用法是先启动应用不采集,等合适时机手动开启采集,示例: topsprof –profile-from-start off –enable-activities “*/general/operator” python xxx 等合适时机,启动新终端输入 topsprof start
5. 输出¶
5.1. Export/Import¶
选项 –export-profile 可以用来生成结果文件. 可以使用 –import-profile 选项导入topsprof. 选项 –export-visual-profiler 可以用来供visual-profiler使用的结果文件. 可以用 visual-profiler 打开,也可以使用 –import-profile 选项导入生成的vpd文件. 选项 –export-rawdata 可以用来导出原始采集数据. 可以使用 –import-rawdata 选项导入topsprof.
5.2. 打印应用输出¶
启用选项 –print-app-log 可以同时打印应用输出
6. 分布式¶
6.1. 分布式启动采集¶
分布式支持通过 mpirun 和 python ddp 启动topsprof, 示例如下 mpirun [mpirun-arguments] topsprof [options] [application] [application-arguments] python -m torch.distributed.launch -no-python [python-arguments] topsprof [options] [application] [application-arguments]
6.2. 合并输出结果¶
通过分布式调用, topsprof 会为每个进程生成一份 vpd 文件, 用户需要在运行结束后,将所有文件复制到一个文件夹,并调用topsprof进行合并. topsprof –visual-profiler-merge-from {directory} –visual-profiler-merge-to {filename}
7. 运行时采集¶
现在topsprof支持运行时采集数据,不依赖于编译期收集数据。这种方式仅支持host program,因此可以同时支持factor和topscc程序。并且和通常的profiling流程有不同的配置方法。
7.1. 环境变量¶
运行时采集需要export以下环境变量
export KERNEL_PROFILE=true
这样即可以采集gcu op信息和ODMA信息(dorado)以及CDMALite信息(pavo)。 如若需要采集CDTE和SDTE信息,对于factor程序,还需要export下面的环境变量。
export ENFLAME_GENERATE_PROFILE_META=true
对于topscc程序,使用topscc编译时,需添加-fgcu-generate-profile-meta参数。
7.2. 使用字符串控制采集¶
选项 –enable-activities使用字符串进行筛选可控制的activities,包括Operator,Memcpy,Memcpy_cdte,Memcpy_sdte。可以指定一个或多个,用逗号分隔。也可以指定all采集所有。 Operator指定采集gcu op。 Memcpy指定采集ODMA或者CDMALite。 Memcpy_cdte指定采集CDTE。 Memcpy_sdte指定采集SDTET。
8. 附录¶
8.1. perf 工具说明¶
perf是linux系统中提供的性能分析工具,常见的发行版都能提供安装. topsprof 部分采集功能依赖perf. topsprof 会直接调用 perf xxx 进行分析, 请确保perf 在系统路径 PATH 中能够查找到.
ubuntu安装¶
sudo apt-get install linux-tools-common
sudo apt-get install linux-tools-"$(uname -r)"
sudo apt-get install linux-tools-generic
centos安装¶
yum install perf
从源码编译¶
git clone git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git
cd linux/tools/perf
git checkout xxx #系统对应的内核版本
make
sudo make install
8.2. release note¶
2022.03 首次发布 2022.06 版本发布 2022.09 版本发布
增加 visual-profiler-merge-from,visual-profiler-merge-to 选项 2023.03 版本发布
增加 pavo-AOT & HostProgram profiling support
增加 scorpio support for launch kernel profiling