Back to Nexa Sdk

GenieX SDK

sdk/README.md

0.3.162.8 KB
Original Source

GenieX SDK

The native core of GenieX: a unified C ABI (include/geniex.h) that runs LLMs and VLMs across multiple inference backends on Qualcomm platforms (Windows ARM64, Linux ARM64, Android). Backends load as dynamic plugins, so a build links only the engines it needs. The Go CLI, Python, and Android bindings are all thin wrappers over this one library.

Backends

PluginEngineCompute unitsModel format
llama_cppllama.cpp / ggmlCPU, Adreno GPU, Hexagon NPUGGUF
qairtQualcomm QNN / QAIRTHexagon NPUQAIRT .bin

Both target the NPU but through separate user-space stacks consuming different model formats — they are not substitutes. See the top-level README § Runtimes & compute units.

mermaid
flowchart LR
    subgraph Backends
        llama[llama.cpp]
        qnn[QNN / QAIRT]
    end
    llama --> unified["libgeniex
(C ABI + headers)"]
    qnn --> unified
    unified --> py[Python binding]
    unified --> android[Android AAR]
    unified --> go[Go CLI]
    unified --> cpp[C++ apps]

Layout

PathContents
include/Public C ABI (geniex.h) and plugin interfaces (plugin/).
src/Core library — device resolution, LLM/VLM, registry, logging.
plugins/Backend plugins: llama_cpp, qairt.
model-manager/Rust model puller / cache shared by the CLI and bindings.
benchmark/C inference benchmark driving the public API.

Compute-unit alias resolution (cpu / gpu / npu / hybrid) lives in src/device.cpp (geniex_resolve_device) — the single source of truth for every binding. See notes/run.md § Compute-unit aliases.

Build

See notes/build.md § Build the SDK for the per-platform CMake recipes. After cmake --install, the libs and headers land in pkg-geniex/, which the bindings and CLI consume.

Bindings

BindingDocs
Pythonbindings/python/README.md
Androidbindings/android/README.md
<div align="center"> <p>By Qualcomm</p> </div>