第二章:开发环境搭建
好,咱们正式开始动手。这一章我带你把FINN的开发环境搭起来。说实话,环境配置往往是整个流程里最磨人的环节——我见过不少同学卡在这一步好几天。别急,按我的步骤来,稳得很。
2.1 安装Vivado
Vivado是Xilinx的FPGA开发套件,FINN依赖它做综合和实现。我个人习惯用Vivado 2020.1或2021.1版本,这两个版本跟FINN的兼容性最好。
安装步骤其实很简单:
- 去Xilinx官网下载Vivado HLx安装包(建议选WebPACK版,免费够用)
- 运行安装程序,选择安装路径——记住,路径里不要有中文和空格
- 勾选“Vivado”和“Vitis”组件,其他按需选
- 等它装完,大概需要30-60分钟,取决于你的网速和硬盘
装完后,打开Vivado试试。能正常启动,看到欢迎界面,就算成了。
2.2 安装XRT
XRT是Xilinx Runtime,说白了就是FPGA和主机之间的通信桥梁。FINN生成的加速器要靠它来跑。
安装XRT前,先确认你的操作系统。我推荐Ubuntu 18.04或20.04,这两个系统支持最全。如果你用CentOS或RHEL,也行,但命令会略有不同。
安装命令如下:
# 下载XRT deb包(以Ubuntu 20.04为例)
wget https://www.xilinx.com/bin/public/openDownload?filename=xrt_202110.2.11.634_20.04-amd64-xrt.deb
# 安装
sudo apt update
sudo apt install ./xrt_202110.2.11.634_20.04-amd64-xrt.deb
# 验证安装
xbutil validate
运行xbutil validate后,如果看到类似“Device 0: PASS”的输出,说明XRT装好了。如果报错,别慌——大概率是驱动没加载。重启一下系统,或者手动加载驱动:
sudo modprobe xclmgmt
sudo modprobe xocl
2.3 配置FINN环境
FINN环境配置,说白了就是装Python依赖和克隆代码仓库。FINN官方推荐用Anaconda管理Python环境,我建议你也这么干——省心。
先装Anaconda(如果还没装的话):
# 下载Anaconda安装脚本
wget https://repo.anaconda.com/archive/Anaconda3-2023.03-Linux-x86_64.sh
# 运行安装
bash Anaconda3-2023.03-Linux-x86_64.sh
# 按提示操作,最后source一下
source ~/.bashrc
然后创建FINN的虚拟环境:
conda create -n finn_env python=3.8
conda activate finn_env
克隆FINN仓库并安装依赖:
git clone https://github.com/Xilinx/finn.git
cd finn
# 安装Python依赖
pip install -r requirements.txt
# 安装FINN本身
pip install -e .
onnx和protobuf版本不匹配的问题。解决办法是手动指定版本:
pip install onnx==1.12.0 protobuf==3.20.3
装完后,设置环境变量。把下面这行加到~/.bashrc里:
export FINN_ROOT=/path/to/your/finn
然后source ~/.bashrc让它生效。
2.4 验证安装是否成功
环境搭好了,得验证一下能不能用。FINN自带了一个简单的测试脚本,咱们跑一下看看。
先激活环境:
conda activate finn_env
然后运行测试:
cd $FINN_ROOT
python -m pytest tests/end2end/test_1_single_layer.py -v
这个测试会编译一个单层的神经网络加速器。如果一切顺利,你会看到类似这样的输出:
============================= test session starts ==============================
platform linux -- Python 3.8.10, pytest-7.2.0, pluggy-1.0.0
rootdir: /home/user/finn
collected 1 item
tests/end2end/test_1_single_layer.py::test_single_layer PASSED [100%]
============================== 1 passed in 120.32s ==============================
看到“PASSED”三个字,恭喜你——环境搭好了!
如果测试失败,别急。常见问题有:
- Vivado路径没设置:检查
vivado命令能不能在终端里直接运行。不能的话,把Vivado的bin目录加到PATH里。 - XRT版本不匹配:用
xbutil version查看版本,确保跟FINN要求的版本一致。 - Python包冲突:重新创建一个干净的conda环境,按顺序安装依赖。
嗯,到这里环境搭建就完成了。下一章咱们开始动手设计第一个FINN加速器——一个简单的二值神经网络。到时候你会看到,FINN到底有多强大。
对了,如果你在搭建过程中遇到任何问题,欢迎随时交流。我微信是deep3321,公众号是“蓝海资料掘金营”。咱们一起把FINN玩透。