Oa Library
Welcome to the Oa Library.
Oa is a cross-vendor compute library built on C++ and Vulkan. One binary runs ML, vision, audio, and general compute on NVIDIA, AMD, and Intel GPUs.

TL;DR
Oa is a cross-vendor compute library built on C++ and Vulkan. One binary runs ML, vision, audio, and general compute on NVIDIA, AMD, and Intel GPUs without per-vendor SDK installation. The same Fashion-MNIST model that trains at 877K samples/s on an RTX 5090 trains at 22K samples/s on an Intel iGPU, with matching accuracy.
Why We Persist
The premise is simple: take everything the hardware can give. All of it. Including older silicon, including integrated graphics. Many existing frameworks require a specific vendor stack and a Python runtime, which leaves a lot of capable hardware unused. Oa takes a different path: write the model once in C++, run it on any Vulkan 1.4 device.
The Measurement
Fashion-MNIST, 2-layer MLP, 101K parameters, batch size 64. Same C++ model path across every row.
| Runtime | Device | Accuracy | GPU SPS | Wall SPS |
|---|---|---|---|---|
| Oa Api2 | RTX 5090 Laptop | 86.03% | 1,290,323 | 877,160 |
| Oa Api1 Autograd | RTX 5090 Laptop | 86.42% | 834,718 | 674,080 |
| Oa Api1 | Intel ARL iGPU | 86.53% | 129,433 | 22,118 |
| Oa Api1 Autograd | Intel ARL iGPU | 86.19% | 97,000 | 18,494 |
| Vendor SDK 1:1 | RTX 5090 Laptop | 84.44% | 1,171,230 | 707,982 |
| Vendor SDK Fused | RTX 5090 Laptop | 86.21% | 412,411 | 309,957 |
| Python on Vendor SDK | RTX 5090 Laptop | 85.81% | n/a | 104,454 |
Key observations:
- Intel iGPU runs the same binary at 22K wall SPS — a useful baseline for integrated graphics.
- RTX 5090 achieves 877K wall SPS with the hand-wired backward path.
- Implicit autograd runs ~23% slower wall-time than hand-wired backward, with identical convergence.
For small and medium ML workloads, framework and runtime overhead is often a significant factor. A thin Vulkan-native path — one context, low object overhead — can change the throughput baseline.
Validation detail: Fashion-MNIST tutorial
What Oa Is
A foundation library for compute-intensive applications:
- Core — types, containers, memory, threading, file I/O, matrix operations.
- Runtime — Vulkan compute engine, device, context, allocator, streams, compute graphs.
- Ml — layers, loss, optimizers, autograd, precision (FP32, BF16, FP16, INT8).
- Vision — image processing, video decode/encode, color and geometric transforms.
- Audio — signal processing, STFT, mel filterbanks, audio decode.
- Ui — windowing, rendering, plotting, image viewer.
- Crypto — hashing (Keccak, SHA3), post-quantum signatures (ML-DSA).
- Network — TCP, HTTP, distributed topology, collective operations.
Quick start
Both examples dispatch the same matrix operation through the default Vulkan context.
Matmul.cpp
OaMatrix a = OaFnMatrix::RandN(OaMatrixShape{1024, 64});OaMatrix b = OaFnMatrix::RandN(OaMatrixShape{128, 64});OaMatrix c = OaFnMatrix::MatMulNt(a, b);OaContext::GetDefault().Execute();OaContext::GetDefault().Sync();
Who It Is For
Use Oa when you need GPU compute across Intel, AMD, and NVIDIA from one binary, deterministic results across vendors, performance from older or integrated GPUs, and code you can read end to end.
Reach for something else when you need a large pre-trained model zoo, maximum single-GPU throughput from a vendor-specific stack, or training across thousands of GPUs. OA exposes both C++ and Python front ends while naming those remaining tradeoffs directly.