Skip to content

hexagon: build and run on Snapdragon Linux (IQ-10) - #68

Open
thanhdq1o2 wants to merge 2 commits into
VinRobotics:mainfrom
thanhdq1o2:hexagon-linux-build
Open

thanhdq1o2 wants to merge 2 commits into
VinRobotics:mainfrom
thanhdq1o2:hexagon-linux-build

Conversation

@thanhdq1o2

Copy link
Copy Markdown
Contributor

Adds a build script and docs for running vla.cpp on the Hexagon NPU of a Snapdragon Linux board
(IQ-10). Follow-up to #67, which fixed the runtime abort; this makes the setup reproducible.

What changes

  • scripts/build_linux_snapdragon.sh (new): cross-builds vla.cpp, vla-server included, in
    Qualcomm's toolchain container, and packages the binaries and HTP skels.
  • docs/backend/hexagon.md: a Linux (IQ-10) section with build, skel install, run and results.
  • CHANGELOG.md: one Unreleased entry.

Risk

  • No source code changes; other backends and existing builds are unaffected.
  • The script only writes inside its build directory and does not touch the board.

Tested on an IQ-10 (Linux, Hexagon v81, llama.cpp b11223) with the published vrfai/* GGUFs:

  • The script builds with and without vla-server, and the binaries run on the board.
  • vla-server serves SmolVLA to eval/client/vla_cpp_client.py.
  • vla_predict_check against CPU F32 (bar 2.9e-3):
Model max |Δ|
SmolVLA 7.2e-4
π0.5 3.6e-4
Evo-1 4.1e-4
GR00T N1.5 1.7e-3
GR00T N1.6 1.3e-3
GR00T N1.7 5.4e-3

Not in this PR

  • GR00T N1.7 is above the bar; a fix will follow separately.
  • The other archs have not been run on the board yet.

The Hexagon SDK has no arm64 Linux build, so on a Snapdragon Linux board
such as IQ-10 vla.cpp is cross-built in Qualcomm's toolchain container.
build_linux_snapdragon.sh runs that build and packages bin/ and lib/
with the HTP skels. With vla-server it installs Debian's arm64 protobuf
and ZeroMQ dev packages in the container (multiarch); --no-server skips
them. HTP_SKEL_POST runs a command on each skel, for boards that load
only processed skels.

Verified on IQ-10 (Linux, Hexagon v81): vla-server serves SmolVLA to
eval/client/vla_cpp_client.py, and vla_predict_check matches the CPU
F32 reference to 7.2e-4.
Document the IQ-10 under Linux: cross-building with
scripts/build_linux_snapdragon.sh, installing the HTP skel (FastRPC
there ignores ADSP_LIBRARY_PATH and loads only processed skels from
/vendor/dsp/cdspN), running vla-server, the CONCAT refusal, and the
fidelity of the six archs run so far. Add a CHANGELOG entry.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant