LeiWang1999/ZYNQ-NVDLA
NVDLA (An Opensource DL Accelerator Framework) implementation on FPGA.
ZYNQ‑NVDLA – 在 Xilinx Zynq FPGA 上运行 NVDLA
简介
- 这是一套硬件与软件组件,让您能在 Xilinx Zynq‑7000 或 Zynq MPSoC FPGA 开发板上执行 NVIDIA‑DLA (Deep Learning Accelerator) 神经网络推论。
- 本项目整合了 small NVDLA 配置的 RTL、Vivado IP 套件、PetaLinux 内核模式驱动程序、预编译的 ARM64 库,以及一个能将 Tengine 模型转换为 OpenDLA 格式的 Tengine‑Lite 后端。
主要组件
| 文件夹 | 内容 |
|---|---|
IP/ |
NVDLA‑small 核心的 Vivado IP 套件(可直接用于 Zynq 设计)。 |
RTL/ |
NVDLA‑small RTL 的 Verilog 源代码及整合用的封装层。 |
kmd/ |
PetaLinux 的内核模式驱动程序,支持 Zynq‑7000 与 Zynq MPSoC 设备。 |
prebuilt/ |
主机 CPU 用于与加速器通信的 AArch64 编译运行时库。 |
include/ |
Tengine 后端所需的头文件。 |
umd/ |
将 Tengine 模型转换为 OpenDLA 二进制格式的编译器与运行时源代码。 |
sdk_sanity/ |
用于验证加速器端到端运行的简易测试程序。 |
reports/ |
综合运行后的时序、功耗、资源利用率与执行时间报告。 |
examples/ (通过 Tengine‑Lite 构建) |
用于分类 (ResNet‑18 on CIFAR‑10) 与物体检测 (YOLOX‑nano) 的现成演示二进制文件。 |
运作原理
- 硬件 – NVDLA‑small IP 针对 Zynq FPGA 进行综合,产生位于可编程逻辑 (PL) 上的自定义加速器模块。
- 驱动程序 – Linux 内核驱动程序 (
kmd) 将加速器公开为设备节点,供主机 CPU 控制。 - 软件堆栈 – Tengine‑Lite(开源推论引擎)以特殊的 OpenDLA 后端进行编译。模型首先转换为
.tmfile(Tengine 二进制格式),再转换为 NVDLA 硬件可执行的 OpenDLA 二进制文件。 - 运行时 –
prebuilt/中的预编译 ARM64 库负责处理内存管理、指令提交与结果获取。
演示使用
分类 – 在 32×32 CIFAR‑10 图像上执行 ResNet‑18:
cd <tengine-lite-root>/build cmake --build . --target tm_classification_opendla ./examples/tm_classification_opendla -m models/resnet18-cifar10-nosoftmax-relu_int8.tmfile -i images/cat.jpg -g 32,32 -s 1,1,1输出显示前 5 名类别分数,并报告在 NVDLA 模块上的推论时间约为 12 ms。
物体检测 – 在狗的图片上执行 YOLOX‑nano:
cmake --build . --target tm_yolox_opendla ./examples/tm_yolox_opendla -m models/yolox_nano_relu_int8.tmfile -i images/dog.jpg -r 1演示程序会打印出三个检测结果(汽车、狗、自行车)及其置信度百分比与边界框坐标。
重要性
- 边缘 AI – 将推论从 CPU 转移到专用的 FPGA 实现 DLA,可大幅降低延迟并保持低功耗,非常适合嵌入式或边缘设备。
- 开源堆栈 – 所有硬件 (RTL, IP)、驱动程序与软件皆公开可用,让研究人员与开发者能实验自定义加速器配置,或将 NVDLA 整合至其基于 Zynq 的产品中。
入门指南
- 克隆仓库并确保已安装 Xilinx Vivado 与 PetaLinux。
- 构建 NVDLA IP (
IP/) 并将其整合至您的 Zynq 开发板 Vivado 模块设计中。 - 编译内核驱动程序 (
kmd/) 并加载至运行中的 PetaLinux 映像文件。 - 安装 Tengine‑Lite,启用 OpenDLA 后端,并如上所示构建示例二进制文件。
- 执行提供的分类或检测示例,或将您自己的 Tengine 模型转换为 OpenDLA 格式。
限制
- 仅提供 small NVDLA 配置;不包含较大的配置(medium, large)。
- 演示针对 8 位量化模型;全精度或混合精度支持需要额外开发。
- 性能受限于您使用的特定 Zynq 设备资源;在低端 Zynq‑7000 开发板上,加速器可能会受到资源限制。
以上所有信息皆直接取自该仓库的 README。
相关
- 项目
- 项目
- 项目
- 项目