Skip to content

Accelerating Computer Vision on ARM Linux aarch64 with ACL Pack

ARM Linux aarch64 is everywhere: edge gateways, industrial cameras, robots, and handheld devices. But until recently, most high-performance vision libraries treated it as a second-class citizen.

ACL Pack v1.0.3 now ships native Linux aarch64 static libraries alongside Android arm64-v8a, with the same public API and the same license file.

Why ARM Linux aarch64 matters

  • Same silicon, different OS. Many devices run embedded Linux instead of Android.
  • No Java / JNI overhead. Pure native C++ integration.
  • Smaller binaries. The Linux aarch64 libacl.a is roughly 30% smaller than the Android build for the same tier.

Toolchain

ComponentVersion
Cross compileraarch64-linux-gnu-g++ 9.4
Validationqemu-aarch64-static 4.2
SDKACL Pack v1.0.3 Linux aarch64

Minimal example

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;
}

Build:

bash
aarch64-linux-gnu-g++ -O3 -I./include main.cpp ./lib/libacl.a \
  -o demo_aarch64
qemu-aarch64-static ./demo_aarch64

Validation

ACL Pack v1.0.3 Linux aarch64 passes the same 5-axis stock_qa gate as Android:

  1. Zip structure correct.
  2. Positive init returns 0.
  3. Negative init(nullptr) returns -1001.
  4. Pre-init operator call returns -1001.
  5. 6-operator demo PASS.

Package sizes

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

Try it

Download the Linux aarch64 build from the v1.0.3 release and read the integration guide.


Questions? See the API Reference or open an issue on GitHub.