利用 ADF API 控制 AI 引擎 graph - 2022.1 简体中文

Versal ACAP AI 引擎编程环境 用户指南 (UG1076)

Document ID
UG1076
Release Date
2022-05-25
Version
2022.1 简体中文

ADF API 用于控制顶层应用或主机代码中的 graph 执行,如 AI 引擎编程简介 中所述。例如,以下代码对用于 graph 中的 AI 引擎内核运行时参数进行同步更新:

// ADF API:run and update graph parameters (RTP)
gr.run(4);
gr.update(gr.trigger,10);
gr.update(gr.trigger,10);
gr.update(gr.trigger,100);
gr.update(gr.trigger,100);
gr.end();
提示: 使用 graph.end() 会终止此 graph。调用 end() 后,此 graph 无法恢复。

在主机应用 (host.cpp) 中,通过调用 graph.update() 函数即可更新 RTP,调用 graph.run() 即可在 graph 中启动 AI 引擎内核。在硬件仿真流程和硬件流程中,ADF API 会调用 XRT API,而 adf::registerXRT() 则用于管理两者之间的关系。

重要: 必须先调用 adf::registerXRT(),然后才能调用任何 ADF API 控制 graph 或者与 graph 交互。

以下代码示例显示的是 RTP 更新以及 ADF API 的执行过程。

// update graph parameters (RTP) & run
adf::registerXRT(dhdl, uuid);
gr.update(gr.size, 1024);//update RTP
gr.run(16);//start AIE kernel
gr.wait();

在前述示例中,gr.run(16) 指定运行 16 次迭代。

graph.wait() 中,应用会等待 AI 引擎内核完成。

此代码示例显示 adf::registerXRT() 需要 XCLBIN 镜像的器件句柄 (dhdl) 和 UUID。这些均可使用 XRT API 来获取:

auto dhdl = xrtDeviceOpen(0);//device index=0
xrtDeviceLoadXclbinFile(dhdl,xclbinFilename);
xuid_t uuid;
xrtDeviceGetXclbinUUID(dhdl, uuid);