Skip to content

在 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
SDKACL 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 关卡:

  1. 压缩包结构正确。
  2. 正常 init 返回 0
  3. init(nullptr) 返回 -1001
  4. 未初始化调用算子返回 -1001
  5. 6 算子 demo PASS。

包体积

版本Linux aarch64 ziplibacl.a
starter0.82 MB3.94 MB
pro1.13 MB4.89 MB
business1.22 MB5.29 MB

立即体验

v1.0.3 Release 下载 Linux aarch64 版本,并阅读集成指南


有问题请查看 API 参考 或在 GitHub 提交 issue。