Skip to content

Hexagon: implement the direct HTP/QFloat32 protocol and check it in Axiom #128

Description

@Colin-Hayes

Goal Update the Qualcomm Hexagon backend with an explicit direct-HTP execution path for workloads that require more precision/control than standard QNN graph lowering provides, while keeping the existing QNN FP16/INT8 path intact. Axiom #49 is the end-to-end consumer and acceptance check for this work. ## Design boundary - QNN remains the default conformant FP16/INT8 graph backend delivered by #77. - The updated path uses a FastRPC ARM64 host stub plus a signed architecture-specific HTP skel, following the public ggml-hexagon execution shape. - Hexagon v73 uses QFloat32 HVX arithmetic (Q6_Vqf32_* followed by Q6_Vsf_equals_Vqf32). It must not be advertised as strict IEEE/TOSA FP32. - A scheduler must select the relaxed tier explicitly. The provider never silently substitutes QNN FP16, CPU, GPU, or another numerical tier. - Work must be coarse/fused enough to avoid per-operator FastRPC overhead. - Windows catalog/signing requirements are part of the implementation. Test-signing is development evidence, not a production signing claim. ## Work 1. Define the backend-local artifact/capability contract for relaxed QFloat32, including finite values, wide range, subnormals, signed zero, infinities, NaNs, architecture/version compatibility, discovery, and refusal behavior. Classify any proposed wire/API change before implementation; prefer no wire change when provider-local semantics suffice. 2. Build and sign a minimal v73 FastRPC skel and run identity, ADD, MUL, MATMUL, reciprocal, and reciprocal-square-root probes on Snapdragon X126100. Compare raw bits against both CPU oracles and the existing QNN HTP FP32 spike. 3. Implement the direct provider through the full Accelerator lifecycle: discovery, contexts, exact registered/shared buffers, programs, queues, submissions, events, transfers, device loss/reset, release, and teardown. 4. Add the v73 QFloat32 kernel support required by Axiom's fused Kerr/wormhole workload. Keep request count per frame bounded and report preparation, registration/copy, FastRPC, DSP, and end-to-end timings. 5. Add all numerical, lifecycle, deployment, and performance validation to this issue. Do not create a separate validation project or advertise capabilities ahead of passing evidence. ## Acceptance criteria - The signed v73 skel loads through the Qualcomm NPU driver and every probe records raw result bits, device/driver/skel/toolchain identity, and proof of HTP execution. - The relaxed capability precisely matches passing hardware evidence. Strict FP32 remains rejected on v73 unless the full shared strict corpus passes. - QNN FP16/INT8 examples and conformance remain unchanged. - The direct provider passes lifecycle coverage for exact bindings/ranges, bounded queues, stable nonblocking polling, timeout/cancel claims, malformed artifacts, incompatible architecture, DSP failure, reset quarantine, and exactly-once release. - No hidden full-range bounce buffer or hidden CPU/GPU/QNN fallback is reported as direct execution. - SDK-free builds and published packages remain free of Qualcomm SDK binaries, private keys, generated certificates, and proprietary artifacts. - Axiom #49 runs the Kerr and wormhole examples through this provider and passes its numerical/image checks.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

area: backendAccelerator traits, mock backend, and provider conformancearea: verificationSecurity, fuzzing, model tests, and performance evidenceenhancementNew feature or requestkind: implementationProduction implementation workpriority: highImportant v1 work, but not the immediate critical path

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions