在 ARM Linux aarch64 上加速计算机视觉:ACL Pack 实践
ARM Linux aarch64 无处不在:边缘网关、工业相机、机器人、手持设备。但在此之前,大多数高性能视觉库并没有把它当作一等公民。
ACL Pack v1.0.3 现在除了 Android arm64-v8a,还原生提供 Linux aarch64 静态库,使用同样的公共 API 和同样的 license 文件。
为什么 ARM Linux aarch64 重要
- 同一块芯片,不同的 OS。 很多设备运行嵌入式 Linux 而非 Android。
- 没有 Java / JNI 开销。 纯原生 C++ 集成。
- 更小的二进制体积。 同版本下 Linux aarch64 的
libacl.a比 Android 版小约 30%。
工具链
| 组件 | 版本 |
|---|---|
| 交叉编译器 | aarch64-linux-gnu-g++ 9.4 |
| 验证环境 | qemu-aarch64-static 4.2 |
| SDK | ACL Pack v1.0.3 Linux aarch64 |
最小示例
cpp
#include <acl/acl.h>
#include <acl/api.h>
#include <cstdint>
#include <vector>
int main() {
int rv = acl::init("/path/to/license.dat");
if (rv != 0) return rv;
const int w = 1920, h = 1280;
std::vector<uint8_t> src(w * h * 3), dst(w * h * 3);
acl::neon::cvtcolor::channelSwap<acl::BGR2RGB>(
src.data(), dst.data(), w, h
);
return 0;
}编译运行:
bash
aarch64-linux-gnu-g++ -O3 -I./include main.cpp ./lib/libacl.a \
-o demo_aarch64
qemu-aarch64-static ./demo_aarch64验证
ACL Pack v1.0.3 Linux aarch64 通过了与 Android 相同的 5 轴 stock_qa 关卡:
- 压缩包结构正确。
- 正常
init返回0。 init(nullptr)返回-1001。- 未初始化调用算子返回
-1001。 - 6 算子 demo PASS。
包体积
| 版本 | Linux aarch64 zip | libacl.a |
|---|---|---|
| starter | 0.82 MB | 3.94 MB |
| pro | 1.13 MB | 4.89 MB |
| business | 1.22 MB | 5.29 MB |
立即体验
从 v1.0.3 Release 下载 Linux aarch64 版本,并阅读集成指南。