2. 开发环境搭建
说实话,环境搭建这事儿,看着琐碎,但往往是整个项目里最容易卡住人的地方。我见过不少团队,芯片选型、算法设计都搞定了,结果在环境配置上折腾了两三天,最后发现是某个库版本不对。所以这一章,咱们把每一步都踩实了。
Eyeriss 的开发环境,说白了就三块:SDK(芯片的“说明书”和“工具箱”)、交叉编译工具链(让 PC 能生成芯片能跑的代码)、Python 依赖(模型转换、性能分析这些活儿全靠它)。下面我按顺序来。
2.1 获取并安装 Eyeriss SDK
Eyeriss SDK 通常以压缩包形式提供,里面包含了驱动库、运行时库、示例代码和文档。我个人习惯把它放在 /opt/eyeriss/ 下,方便多用户共享。
核心步骤:
- 从官方仓库或内部服务器下载 SDK 包(例如
eyeriss_sdk_v2.3.0.tar.gz)。 - 解压到目标目录:
sudo tar -xzf eyeriss_sdk_v2.3.0.tar.gz -C /opt/eyeriss/ - 设置环境变量
EYERISS_SDK_PATH,指向解压后的根目录。
嗯,这里要注意:SDK 的版本必须和芯片固件版本匹配。我曾经遇到过 SDK 升级后,旧固件上的某些 API 行为变了,排查了半天才发现是版本对不上。所以拿到 SDK 后,先看一眼 RELEASE_NOTES 文件。
SDK 的目录结构大致如下:
/opt/eyeriss/eyeriss_sdk_v2.3.0/
├── include/ # 头文件(API 声明)
├── lib/ # 预编译库(.so / .a)
├── tools/ # 模型转换、量化工具
├── samples/ # 示例工程
├── docs/ # API 参考手册
└── cmake/ # CMake 辅助模块
2.2 配置交叉编译工具链
Eyeriss 芯片通常基于 ARM 架构,所以我们需要在 x86 的 PC 上安装 ARM 交叉编译器。说白了,就是让 PC 生成 ARM 指令集的二进制文件。
我个人推荐使用 ARM GCC,稳定且社区活跃。安装方式有两种:
| 方式 | 命令/步骤 | 适用场景 |
|---|---|---|
| 包管理器安装 | sudo apt install gcc-arm-linux-gnueabihf |
快速验证、原型开发 |
| 官方预编译包 | 从 ARM 官网下载,解压后配置 PATH | 生产环境、版本可控 |
我的建议: 用官方预编译包。包管理器里的版本往往滞后,而且不同 Ubuntu 版本提供的 GCC 版本可能不一样,容易导致二进制兼容性问题。我曾经在 Ubuntu 18.04 上用 apt 装的 GCC,编译出来的程序在芯片上跑出了奇怪的段错误,换成官方 9.2 版本就好了。
安装完成后,验证一下:
arm-linux-gnueabihf-gcc --version
# 输出应显示版本号,例如:arm-linux-gnueabihf-gcc (GCC) 9.2.1 20191025
然后,我们需要让 CMake 能找到这个工具链。创建一个工具链文件 arm_toolchain.cmake:
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR arm)
set(CMAKE_C_COMPILER arm-linux-gnueabihf-gcc)
set(CMAKE_CXX_COMPILER arm-linux-gnueabihf-g++)
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
编译时,通过 -DCMAKE_TOOLCHAIN_FILE 指定这个文件即可。
2.3 安装 Python 依赖库
Eyeriss 的模型转换、性能分析、数据可视化等工具,底层都是 Python 写的。所以 Python 环境必须配好。
我强烈建议用 虚拟环境,别把依赖装到系统 Python 里。你想想看,不同项目可能依赖不同版本的 PyTorch 或 ONNX,混在一起迟早出问题。
避坑指南: 我曾经在一个项目里,因为系统 Python 的 numpy 版本被另一个库升级了,导致 Eyeriss 的量化工具报错。从那以后,我每个项目都建独立的虚拟环境。
创建并激活虚拟环境:
python3 -m venv eyeriss_env
source eyeriss_env/bin/activate
然后安装核心依赖。Eyeriss SDK 通常会提供一个 requirements.txt,直接装就行:
pip install -r /opt/eyeriss/eyeriss_sdk_v2.3.0/tools/requirements.txt
如果没提供,那至少需要以下这些:
- numpy:数据处理的基础
- onnx 和 onnxruntime:模型格式转换和推理验证
- pyyaml:读取配置文件
- matplotlib:画性能分析图
- tqdm:进度条,跑批量任务时很有用
安装命令:
pip install numpy onnx onnxruntime pyyaml matplotlib tqdm
2.4 验证环境:跑一个 Hello World
环境搭没搭好,跑个例子最直接。SDK 的 samples/hello_world 目录下有个最简单的工程。
编译命令:
mkdir build && cd build
cmake .. -DCMAKE_TOOLCHAIN_FILE=../arm_toolchain.cmake -DEYERISS_SDK_PATH=/opt/eyeriss/eyeriss_sdk_v2.3.0
make
编译成功后,会生成一个 hello_eyeriss 可执行文件。把它拷贝到 Eyeriss 开发板上,运行:
./hello_eyeriss
# 输出:Hello from Eyeriss NPU! Device ID: 0
看到这行输出,说明 SDK 和工具链都配好了。
2.5 本章知识体系总览
下面这张图,把整个环境搭建的流程和组件关系梳理了一下。你跟着这个图走,基本不会漏东西。
环境搭建这块,看起来步骤多,但只要你按顺序来——先 SDK,再工具链,最后 Python——基本不会出大问题。嗯,真遇到问题了,多半是版本不匹配或者路径没设对。这时候别慌,回头检查一下环境变量和文件权限,八成能解决。