--profile 选项 - 2023.2 简体中文

Vitis 统一软件平台文档 应用加速开发 (UG1393)

Document ID
UG1393
Release Date
2023-12-13
Version
2023.2 简体中文

在应用中启用剖析 中所述,有多个 --profile 选项支持您在运行时执行期间启用应用与内核事件剖析。该选项支持捕获内核与主机之间、内核停滞时、内核与计算单元 (CU) 执行时间以及 Versal AI 引擎中的监控活动的数据流量的传输事务详细信息。

重要:v++ 中使用 --profile 选项还需要在 xrt.ini 文件中添加某个剖析或追踪选项。如需了解更多信息,请参阅 xrt.ini 文件
在配置文件中的 [profile] 节头下可使用如下格式来指定 --profile 命令:
[profile]
data=all:all:all           # Monitor data on all kernels and CUs
data=k1:all:all            # Monitor data on all instances of kernel k1
data=k1:cu2:port3          # Specific CU master
data=k1:cu2:port3:counters # Specific CU master (counters only, no trace)
memory=all                 # Monitor transfers for all memories
memory=<sptag>             # Monitor transfers for the specified memory
stall=all:all              # Monitor stalls for all CUs of all kernels
stall=k1:cu2               # Stalls only for cu2
exec=all:all               # Monitor execution times for all CUs
exec=k1:cu2                # Execution tims only for cu2
aie=all                    # Monitor all AIE streams
aie=DataIn1                # Monitor the specific input stream in the SDF graph
aie=M02_AXIS               # Monitor specific stream interface

此命令的各选项如下所述:

--profile.aie:<arg>

支持在自适应数据流 (ADF) 应用中对 AI 引擎串流进行剖析,其中 <arg> 为:

<ADF_graph_argument|pin name|all>
  • <ADF_graph_argument>:指定来自 ADF 计算图应用的实参名称。
  • <pin_name>:表示 AI 引擎内核上的端口。
  • <all>:指示监控 ADF 应用中的所有串流连接。
例如,要监控 DataIn1 输入串流,请使用以下命令:
v++ --link --profile.aie:DataIn1

--profile.aie_trace_offload:<arg>

支持在自适应数据流 (ADF) 应用中对 AI 引擎串流进行剖析,其中 <arg> 为 HSDP 或高速调试端口。

v++ --link --profile.aie_trace_offload:HSDP

如需了解 HSDP 使用方法描述,请参阅 AI 引擎工具和流程用户指南(UG1076) 中的使用高速调试端口进行事件追踪卸载

--profile.data:<arg>

通过监控器 IP 对设计中添加的数据端口启用监控。此选项只需在链接期间指定即可。

其中 <arg> 为:

[<kernel_name>|all]:[<cu_name>|all]:[<interface_name>|all](:[counters|all])
  • [<kernel_name>|all] 用于定义此命令要应用到的特定内核。但是,您也可以通过单一选项,指定关键字 all 来将该监控应用于所有现存内核、计算单元和接口。
  • [<cu_name>|all]:已指定 <kernel_name> 的情况下,您还可指定将此命令应用于特定 CU 或者指明应将此命令应用于内核的所有 CU。
  • [<interface_name>|all] 用于定义内核或 CU 上的特定接口以监控其中的数据活动,或者监控所有接口。
  • [<counters|all] 为可选实参,如不指定,则默认为 all。它允许将较大型设计的信息收集操作范围局限于 counters,如设为 all 则将包含收集实际追踪信息。

例如,要将数据剖析分配到内核 k1 的所有 CU 和接口,请使用以下命令:

v++ --link --profile.data k1:all:all

--profile.exec:<arg>

该选项会记录内核的执行时间,并在系统运行期间提供最小范围的端口数据收集。此选项只需在链接期间指定即可。

提示: 默认情况下,指定 --profile.data--profile.stall 时,会收集内核的执行时间。您可为 datastall 未涵盖的任意 CU 定 --profile.exec

exec 剖析的语法是:

[<kernel_name>|all]:[<cu_name>|all](:[counters|all])

例如,要对内核 k1cu2 的执行进行剖析,请使用以下语法:

v++ --link --profile.exec:k1:cu2

--profile.stall:<arg>

重要:v++ 编译和链接期间,都必须指定该选项。

它会将停滞监控逻辑添加到器件二进制文件 (.xclbin) 中,这需要在内核接口上添加停滞端口。为便于执行此操作,必须在编译和链接期间指定 stall 选项。

stall 剖析的语法是:

[<kernel_name>|all]:[<cu_name>|all](:[counters|all])

例如,要监控内核 k1cu2 的停滞,请使用以下命令:

v++ --compile -k k1 --profile.stall ...
v++ --link --profile.stall:k1:cu2 ...

--profile.trace_memory:<arg>

提示: 该选项仅适用于硬件构建目标 (-t=hw),并且不能用于软件或硬件仿真流程。

构建硬件目标 (-t=hw) 时,请使用该选项来指定用于捕获追踪数据的存储器类型和量。您可按如下方式来指定实参:

<FIFO>:<size>|<MEMORY>[<n>][:<SLR>]

此实参用于指定要用于捕获追踪数据的存储器类型。使用 --profile.trace_memory 命令定义要使用的类型或存储器,搭配 xrt.ini 文件中的 trace_buffer_size 开关来定义要使用的存储空间,如 xrt.ini 文件 中所述。默认使用的存储器类型是平台中定义的第一个存储器;默认缓冲器大小为 1 MB。

如不指定 trace_memory,但在 xrt.ini 文件 中启用 device_trace,则将捕获剖析数据并存入为追踪缓冲器分配的 1 MB 的默认平台存储器。

FIFO:<size>
以 KB 为单位来指定。最大值为 128K,但建议采用 64K 作为最大值。
存储器
指定平台上的存储器资源类型和数量。可通过 platforminfo 命令来识别目标平台的存储器资源。受支持的存储器类型包括 HBM、DDR、PLRAM、HP、ACP、MIG 和 MC_NOC。例如,DDR[1]
[:<SLR>]
(可选)指示分配给指定 <SLR> 的 CU 应使用 <MEMORY> 字段中指定的 DDR 或 HBM 资源。请注意,该语法仅限搭配 DDR 或 HBM 存储体一起使用。

您可指定含存储器大小和单位(如 FIFO:8k)的 --profile.trace_memory 命令,或者也可指定 DDR[0]HBM[3] 等存储体。在此情况下,在指定存储器中会捕获所有 CU 的剖析数据。

或者您可以指定要用于捕获剖析数据的存储器,以及该存储器的 SLR 分配。在此情况下,SLR 分配用于指示分配给指定 SLR 的任意 CU 都应在指定存储器内捕获剖析数据。如下配置文件示例所示:

[profile]
trace_memory=DDR[1]:SLR0
trace_memory=DDR[2]:SLR1

在以上示例中,分配给 SLR0 的 CU 的剖析数据在 DDR 存储体 1 内捕获,分配给 SLR1 的 CU 的剖析数据则在 DDR 存储体 2 内捕获。CU 是使用 --connectivity.slr 命令分配给 SLR 的,如 在 Alveo 加速器卡上将计算单元分配给 SLR 中所述。

重要: 在任一设计内不能混用 DDR 与 HBM 存储体,指定 <SLR> 语法时,必须将该语法用于该设计内的所有 trace_memory 命令。