GERDOS
Global Execution Runtime for Dynamic Open Systems
GERDOS is a model-agnostic execution runtime designed to extract useful performance from heterogeneous and constrained hardware.
Its purpose is the measured heterogeneous execution of a small exact operation set across hardware configurations that conventional inference runtimes may not exploit efficiently.
GERDOS treats compute, memory, storage, transfer mechanisms, and model state as resources within a single global execution system, while representing physical connectivity through a separate topology model.
Core principle
Revive old hardware. Run new models.
Direction, not status: what actually runs today is listed under Status below. Full-model inference is not claimed.
Architectural principles
- Model-agnostic core
- Hardware-aware execution
- Global resource visibility
- Dynamic scheduling
- Explicit memory hierarchy
- CPU as a compute resource
- GPU as a compute and memory resource
- Storage as an executable memory tier when beneficial
- Overlapped computation and data movement
- Measurement-driven decisions
- Backend independence
- Reproducible benchmarking
Specific models are validation workloads, not architectural dependencies.
Status
Early architectural development.
The project is intentionally being built from a minimal foundation rather than starting with model-specific or hardware-specific assumptions.
What runs today: the v1 op set (affine, matmul, reductions, min/max, mask-select, gather, division, move — F32), tiny gated demos, and tiled 128x128x128 matmul on the CPU/OpenCL/Vulkan engines. Full-model inference is not claimed: softmax, attention, layer-norm, residual-add, and argmax are refused by name until the algebra gap closes — nothing here runs an LLM yet.
Quickstart
Requires CMake 3.20+, a C++20 compiler, and Ninja (or your generator of
choice). Python 3.10+ only for the gerdos driver/wheels.
Linux
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j
ctest --test-dir build --output-on-failure
Both configs must be green with zero warnings under
-Wall -Wextra -Wpedantic. Hardware suites print SKIP: ... and exit
green when no device is present — that is the hardware gate working,
not a failure. Full walkthrough: docs/GETTING_STARTED.md.
Windows (MSVC developer prompt)
cmake/ctest are not on a plain PowerShell PATH; run everything
inside one VsDevCmd session:
VsDevCmd.bat -arch=amd64
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -S . -B build-win
cmake --build build-win
ctest --test-dir build-win --output-on-failure
With the Vulkan SDK installed (VULKAN_SDK set), the Vulkan compute
backend test registers and runs; without it, it is absent-by-design.
OpenCL needs a vendor ICD or it stays unregistered. Same green-tree
rule, /W4, zero warnings.
Python wheels
pip install gerdos
python -m gerdos selftest
Manylinux x86_64/aarch64 wheels (CPython 3.10–3.13) self-test on the spot with no repo, no compiler, no env vars.
License
MIT — see LICENSE. Version is single-sourced from
include/gerdos/version.hpp (currently 0.1.3).
Metadata
Release files for gerdos 0.1.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| gerdos-0.1.3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl | CPython 3.13 | CPython 3.13 | Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 | Details |
| gerdos-0.1.3-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl | CPython 3.13 | CPython 3.13 | Linux glibc 2.28+ ARM64, Linux glibc 2.27+ ARM64 | Details |
| gerdos-0.1.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl | CPython 3.12 | CPython 3.12 | Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 | Details |
| gerdos-0.1.3-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl | CPython 3.12 | CPython 3.12 | Linux glibc 2.28+ ARM64, Linux glibc 2.27+ ARM64 | Details |
| gerdos-0.1.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl | CPython 3.11 | CPython 3.11 | Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 | Details |
| gerdos-0.1.3-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl | CPython 3.11 | CPython 3.11 | Linux glibc 2.28+ ARM64, Linux glibc 2.27+ ARM64 | Details |
| gerdos-0.1.3-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl | CPython 3.10 | CPython 3.10 | Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 | Details |
| gerdos-0.1.3-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl | CPython 3.10 | CPython 3.10 | Linux glibc 2.28+ ARM64, Linux glibc 2.27+ ARM64 | Details |
Total release size: 774.3 kB
Release files / gerdos-0.1.3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | gerdos-0.1.3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 99.0 kB |
| Tags | CPython 3.13 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
4f6a1fe11a01b6691f0d99298202b43b4ac00e959fcc876942668887f55c1229
|
|
BLAKE2b-256 checksum How to use checksums |
fe6be11f2f02c02df9f3dd4a28b5cc0546bf9782017d378899a32536b1f18739
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.6
|
Release files / gerdos-0.1.3-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
| Download URL | gerdos-0.1.3-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 94.6 kB |
| Tags | CPython 3.13 Linux glibc 2.27+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
eda03f2961c74a689631f1fa9328f5922918693ab289489207c754489e2ce65f
|
|
BLAKE2b-256 checksum How to use checksums |
020ea5cc8daffb7da11dd27639c9438aacdd518969788b18726017e67d1164b5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.6
|
Release files / gerdos-0.1.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | gerdos-0.1.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 99.0 kB |
| Tags | CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
c6fb1359a6b51a000093835c8e1ffc8adecb348101836948a8c32d3c8d2dd5b1
|
|
BLAKE2b-256 checksum How to use checksums |
c6040e40f6dbd55d4ca7dec79e8b5768425f4fcff191115a6cc63e9f607ad3ea
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.6
|
Release files / gerdos-0.1.3-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
| Download URL | gerdos-0.1.3-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 94.6 kB |
| Tags | CPython 3.12 Linux glibc 2.27+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
54e409dd52de65835eaae2c44ecbe56c4de4d015316c38bd719484712f91f40c
|
|
BLAKE2b-256 checksum How to use checksums |
e51c9e38f0c5aaf1fa8a26f01d165062559b5655c9c86fd2b284ba2acfb42e06
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.6
|
Release files / gerdos-0.1.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | gerdos-0.1.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 99.0 kB |
| Tags | CPython 3.11 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
9a5528f2f30939babca96dceef46c480b7d78745959ecae9632f9a3ffd16d04a
|
|
BLAKE2b-256 checksum How to use checksums |
10c14c07995b078c5097a962c69870b84dddb8a5f028f009549255c88bbe114e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.6
|
Release files / gerdos-0.1.3-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
| Download URL | gerdos-0.1.3-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 94.6 kB |
| Tags | CPython 3.11 Linux glibc 2.27+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
b5b49f08a84e56ff2483a55c2777fc0c633eedf90cb331878f134d2a631e446a
|
|
BLAKE2b-256 checksum How to use checksums |
f9d72e7fcdd1cf4e57827262a7a62cd57141fc3786392a642c72b43854a9c5dd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.6
|
Release files / gerdos-0.1.3-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | gerdos-0.1.3-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 99.0 kB |
| Tags | CPython 3.10 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
2aa7c1cbf5eff97a18d3ab0ecf182d956c2e4b340395bd29d61121ddd9b94cc8
|
|
BLAKE2b-256 checksum How to use checksums |
79ce0d0b0b6f8210644c96cb6bcb5c7b61c766dca100228407fd4f19670462dc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.6
|
Release files / gerdos-0.1.3-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
| Download URL | gerdos-0.1.3-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 94.6 kB |
| Tags | CPython 3.10 Linux glibc 2.27+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
fcfb561a9825c3454c7742a0702bf5b42b30ac5e7f9728dfa6730ea2194d3008
|
|
BLAKE2b-256 checksum How to use checksums |
c74eb73a4a4a870a430740605b69a3915c7c330827a451b28b12f0ac367bd6ed
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.6
|