如果您是命令行用户,则需手动创建 xrt.ini 文件并将其保存至主机可执行文件所在的目录。
该运行时库会检查主机可执行文件中是否存在 xrt.ini 并自动读取该文件来配置运行时。您还可以通过将 XRT_INI_PATH
环境变量设置为指向文件,以在运行时指定 xrt.ini 文件的位置,例如:
export XRT_INI_PATH=/path/to/xrt.ini
运行时初始化文件格式
xrt.ini 文件是简单的文本文件,其中包含多组键和键值。以分号 (;) 或井号 (#) 开头的任何行都是注释。组名、键和键值都区分大小写。
以下是 xrt.ini 文件示例,此文件支持时间线轨迹功能,并且指示在Console(控制台)视图上显示运行时 log 日志消息。
#Start of Debug group
[Debug]
native_xrt_trace = true
device_trace = fine
#Start of Runtime group
[Runtime]
runtime_log = console
其中有 3 组初始化键:
- 运行时
- 调试
- AIE_profile_settings
- AIE_trace_settings
- 仿真
下表列出了每个组的所有受支持的键、每个键支持的值以及键用途的简短描述。
运行时组
开关的运行时组允许您配置运行时操作的元素,如下所述。
键 | 有效值 | 描述 |
---|---|---|
api_checks
|
[true|false]
|
启用或禁用 OpenCL API 检查。
|
cpu_affinity
|
{N,N,...}
|
将所有运行时线程固定到指定的 CPU。示例:
|
exclusive_cu_context
|
[true|false]
|
这样即可允许主机应用指示 OpenCL 获取专属 CU 访问,以便低层次 AXI 读写(xclRegRead 和 xclRegWrite)可供常规内核使用。 |
force_program_xclbin
|
[true|false]
|
强制将可重配置模块 (RM) .xclbin 文件重新加载到器件中,即使此文件已加载也是如此。这用于在含有 .xclbin 的平台中根据请求强制重新加载 DFX 区域。 |
runtime_log
|
[null | console | syslog |
<filename>]
|
指定运行时 log 日志的打印位置
|
verbosity
|
[0 | 1 | 2 | 3 | 4 | 5 | 6 | 7
]
|
log 日志文件的详细程度。默认值为 4。 |
调试组
开关的调试组用于定义键的选项,以便在运行时期间启用应用剖析,或者追踪数据传输与执行。这些开关适用于 Vitis 加速流程中的 AI 引擎和 PL 内核,并且允许您配置运行时的方方面面,以便控制数据捕获频率、要捕获的事件以及要保留或用于记录追踪和剖析数据的存储器量。
键 | 有效值 | 描述 |
---|---|---|
aie_profile
|
[true|false]
|
启用 AI 引擎硬件性能计数器的运行时配置和轮询。在 VCK190 硬件上以及硬件仿真运行时可用。
|
aie_trace
|
[true|false]
|
启用 AI 引擎事件追踪的运行时配置和收集。仅在运行 VCK190 硬件时才可用。
|
aie_status
|
[true|false]
|
启用 AI 引擎状态信息的轮询。在 VCK190 硬件上以及硬件仿真运行时可用。 |
aie_status_interval_us
|
整数(默认值 = 1000 us) | 控制捕获 AI 引擎状态信息的时间间隔。以微秒为单位来指定。 |
app_debug
|
[true|false]
|
使用 GDB 进行调试时,针对主机代码启用 OpenCL 应用调试。
|
continuous_trace
|
[true|false]
|
启用将器件数据的追踪和连续读取对应的文件连续转储到主机中。
注释: 仅当启用
device_trace 时,此开关才有效。 |
device_counters
|
[true|false]
|
仅启用器件计数器卸载,不启用追踪功能。 |
device_trace
|
[off|fine|coarse|accel]
|
启用从 PL 上插入的监控器收集数据,以添加至汇总数据和轨迹。
|
host_trace
|
[true|false]
|
基于遇到的第一条协议,启用主机代码追踪。 提示: 如果您的主机应用使用 OpenCL 和 XRT 本机 API,则应手动指定
opencl_trace 和 native_xrt_trace 来捕获所有事件。 |
lop_trace
|
[true|false]
|
启用低开销 OpenCL API 主机追踪的生成。不应配合其他 OpenCL 选项一起使用。
|
native_xrt_trace
|
[true|false]
|
启用原生 C/C++ API 追踪的生成。这也会在“Profile Summary”(剖析汇总)中生成“Host Data Transfer from/to Global memory”(出入全局存储器的主机数据传输)表。
|
opencl_trace
|
[true|false]
|
启用 OpenCL API 主机追踪的生成。
|
pl_deadlock_detection
|
[true|false]
|
为 PL 内核启用死锁检测。 |
power_profile
|
[true|false]
|
在应用执行期间,启用功耗数据的轮询。
注释: 在嵌入式平台或 AWS 上不支持此功能。
|
power_profile_interval_ms
|
<int>(default=20)
|
控制读取功耗计数器的时间间隔(以毫秒为单位)。默认时间间隔为 20 ms。 注释: 仅当
power_profile = true 时,此开关才有效。 |
profile_api
|
[true|false]
|
支持直接从主机应用访问 HAL API,以在执行期间读取器件剖析监控器上的计数器。
|
stall_trace
|
[off|all|dataflow|memory|pipe]
|
指定时间线轨迹内要捕获和报告的器件侧停滞类型。默认设置为关 (off)。
注释: 仅当启用
device_trace 时,此开关才有效。 |
trace_buffer_offload_interval_ms
|
<int>
|
控制从器件到主机的器件数据读取(以毫秒 (ms) 为单位)。默认值为 10 ms。 注释: 仅当启用
device_trace 时,此开关才有效。 |
trace_buffer_size
|
<string>
|
如果创建的 .xclbin 中已指定追踪的存储器卸载方案(如 --profile 选项 中所述),则此开关可确定在存储器中要分配用于捕获追踪数据的缓冲器大小。默认值为 1 M。 注释: 仅当启用
device_trace 时,此开关才有效。 |
trace_file_dump_interval_s
|
<int>
|
控制追踪文件转储的时间间隔(以秒 (s) 为单位)。默认值为 5 s。 注释: 仅当启用
device_trace 时,此开关才有效。 |
vitis_ai_profile
|
[true|false]
|
剖析汇总和其他文件来自 Vitis AI 应用层。
|
xocl_debug
|
[true|false]
|
启用时,生成 xocl.log 文件。 同时启用任意追踪选项时,调试 log 日志已添加到 xrt.run_summary 中,以供在 Vitis 分析器内查看。 |
xrt_trace
|
[true|false]
|
支持在硬件运行期间生成低级硬件 shim 函数追踪。这将在搭配 native_xrt_trace 一起使用时禁用。
|
AIE_profile_settings 组
仅当 [Debug]
下的 aie_profile=true
时,该组中指定的选项才适用。
键 | 有效值 | 描述 |
---|---|---|
graph_based_aie_metrics
|
<graph name|all>:<kernel name|all>:<off|heat_map|stalls|execution|floating_point|write_bandwidths|read_bandwidths|aie_trace> |
基于每个计算图,指定由 AI 引擎拼块的 AI 引擎模块所报告的指标集。 重要: 当前,指定内核时仅支持
all 。控制从整个 AI 引擎计算图应用的 AIE 核性能计数器读取的统计数据的配置。 heat_map:剖析活动/停滞的周期和矢量指令使用情况 stalls:剖析不同类型的停滞(例如,存储器、串流、锁定和级联) execution:剖析 AI 引擎指令 floating_point::剖析浮点异常 write_bandwidths:剖析串流和级联的写入带宽 read_bandwidths:剖析串流和级联的读取带宽 aie_trace:剖析来自核与存储器模块的事件追踪的量和停滞 |
graph_based_aie_memory_metrics
|
<graph name|all>:<kernel name|all>:<off|conflicts|dma_locks|dma_stalls_s2mm|dma_stalls_mm2s|write_bandwidths|read_bandwidths> |
基于每个计算图,指定由 AI 引擎拼块的存储器模块所报告的指标集。 重要: 当前,指定内核时仅支持
all 。控制从整个 AI 引擎计算图应用的 AI 引擎存储器性能计数器读取的统计配置。 conflicts:剖析 DMA 存储器冲突 dma_locks:剖析获取锁定时其中的 DMA 锁定和停滞 dma_stalls_s2mm:剖析 DMA S2MM 通道上的停滞 dma_stalls_mm2s:剖析 DMA MM2S 通道上的停滞 write_bandwidths:剖析 DMA S2MM 通道的带宽 read_bandwidths:剖析 DMA MM2S 通道的带宽 |
tile_based_aie_metrics
|
<{<column>,<row>}|all>:<off|heat_map|stalls|execution|floating_point|write_bandwidths|read_bandwidths|aie_trace> ; {<mincolumn,<minrow>}:{<maxcolumn>,<maxrow>}:<off|heat_map|stalls|execution|floating_point|write_bandwidths|read_bandwidths|aie_trace> |
基于每个 tile(拼块),指定由 AI 引擎拼块的 AI 引擎模块所报告的指标集。可搭配基于每个计算图的选项一起使用,并取指定拼块的优先级进行报告。 请参阅 |
tile_based_aie_memory_metrics
|
<{<column>,<row>}|all>:<off|conflicts|dma_locks|dma_stalls_s2mm|dma_stalls_mm2s|write_bandwidths|read_bandwidths> ; {<mincolumn,<minrow>}:{<maxcolumn>,<maxrow>}:<off|conflicts|dma_locks|dma_stalls_s2mm|dma_stalls_mm2s|write_bandwidths|read_bandwidths> |
基于每个 tile(拼块),指定由 AI 引擎拼块的存储器模块所报告的指标集。可搭配基于每个计算图的选项一起使用,并取指定拼块的优先级进行报告。 请参阅 |
tile_based_interface_tile_metrics
|
<column|all>:<off|input_bandwidths|output_bandwidths|packets>[:<channel>] ; <mincolumn>:<maxcolumn>:<off|input_bandwidths|output_bandwidths|packets>[:<channel>] |
基于每个 tile(拼块),指定由 AI 引擎接口拼块所报告的指标集。 注释: 接口拼块与 AI 引擎拼块分离,并具有不同的指标集。
|
interval_us
|
<int>
|
控制读取 AI 引擎计数器值的时间间隔(以微秒 (µs) 为单位)。默认时间间隔为 1000 µs。 注释: 仅当
aie_profile =
true 时,此开关才有效。 |
AIE_trace_settings 组
仅当 [Debug]
下的 aie_trace=true
时,该组中指定的选项才适用。
键 | 有效值 | 描述 |
---|---|---|
buffer_size
|
<string>
(default=8M)
|
控制为 AI 引擎事件追踪分配的缓冲器的总大小。此大小最终将根据 AI 引擎输出的不同追踪串流的数量进行分区。默认值为 8 M。 注释: 仅当
aie_trace = true 时,此开关才有效。 |
buffer_offload_interval_us
|
整数(默认值 = 10 ms) | 读取从器件到主机存储器的 PLIO 模式 AI 引擎追踪的时间间隔(以毫秒为单位)。 |
periodic_offload
|
true/false(默认值 = true) | 启用 PLIO 模式 AI 引擎追踪的连续卸载。在生成的 AI 引擎追踪输出文件(每条串流一个文件)中追加新追踪数据。 |
file_dump_interval_s
|
整数(默认值 = 5 s) | 原始 AI 引擎追踪数据写入(追加到)输出文件的时间间隔(以秒为单位)。 |
graph_based_aie_tile_metrics
|
string("") <graph name|all>:<kernel name|all>:<off|functions|functions_partial_stalls|functions_all_stalls> |
基于每个计算图,指定由 AI 引擎拼块的 AI 引擎模块所报告的指标集。 重要: 当前,指定内核时仅支持
all 。 |
tile_based_aie_tile_metrics
|
string("") <{<column>,<row>}|all>:<off|functions|functions_partial_stalls|functions_all_stalls>[:<memory_stalls|stream_stalls|cascasde_stalls|lock_stalls>] {<mincolumn,<minrow>}:{<maxcolumn>,<maxrow>}:<off|functions|functions_partial_stalls|functions_all_stalls> |
基于每个 tile(拼块),指定由 AI 引擎拼块的 AI 引擎模块所报告的指标集。 重要: 当前,指定内核时仅支持
all 。 |
reuse_buffer
|
true/false (false) |
仿真组
开关的仿真组适用于仿真环境和 AMD Vivado™ 仿真器。
键 | 有效值 | 描述 |
---|---|---|
aliveness_message_interval
|
任何整数 | 指定需要打印活动消息的时间间隔(以秒为单位)。默认值为 300。 |
debug_mode
|
[off|batch|gui]
|
指定在仿真 (emulation) 期间如何保存和显示波形。
注释: 内核需要在调试启用 (
v++ -g ) 的情况下进行编译,以便保存波形并在仿真器 GUI 中显示。 |
kernel-dbg
|
[true|false]
|
在软件仿真期间启用内核调试功能,如 软件仿真的命令行调试流程 中所述。
|
print_infos_in_console
|
[true|false]
|
控制将仿真 (emulation) 参考消息打印到用户控制台的行为。仿真参考消息始终记录到名为 emulation_debug.log 的文件中
|
print_warnings_in_console
|
[true|false]
|
控制将仿真 (emulation) 警告消息打印到用户控制台的行为。仿真警告消息始终记录到名为 emulation_debug.log 的文件中。
|
print_errors_in_console
|
[true|false]
|
控制在用户控制台中打印仿真错误消息的行为。仿真错误消息始终记录到 emulation_debug.log 文件中。
|
user_pre_sim_script
|
Tcl 文件路径 | 首次运行时,以 GUI 模式运行仿真 (simulation)。添加要添加的信号。将命令从 Tcl 控制台复制并保存到 Tcl 脚本中。 对于下一次运行,以批处理模式传递此 Tcl 脚本。 |
user_post_sim_script
|
Tcl 文件路径 | 任何转发操作均可在 Tcl 中指定并传递给开关。Tcl 中提供的所有命令都在仿真 (simulation) 完成后执行。 |
xtlm_aximm_log
|
[true|false]
|
在运行时启用 XTLM AXI4 存储器映射传输事务 log 日志记录,您可在 xsc_report.log 文件中看到所有传输事务。 |
xtlm_axis_log
|
[true|false]
|
在运行时启用 XTLM AXI4‑Stream 传输事务 log 日志记录,您可在 xsc_report.log 文件中看到所有传输事务。 |
timeout_scale
|
na/ms/sec/min
|
针对仿真 (emulation) 中的 clPollStream API 的超时支持。为 clPollStream API 中指定的超时提供刻度。代码中指定的超时是以毫秒 (ms) 为单位来指定的,可能对于仿真 (emulation) 无效。因此,请使用 timeout_scale 将 ms 映射到其他刻度,以满足仿真 (emulation) 所需。 重要: 默认情况下,在仿真 (emulation) 中不启用超时。该选项可用于启用
clPollStream 超时。 |