aether

aether

aether#

One array, two machines. aether is a header-only C++23 tensor and expression-template core: typed views over your own memory, arithmetic that composes into one assignment instead of allocating a temporary per operator, and a dual-mode evaluator so the SAME kernel source compiles for OpenMP threads or CUDA threads. It is the numerics base layer the eagle execution runtime and the hawk code generator build on.

30 seconds#

#include <aether/aether.h>

aether::Array<double, 3> arr(10);   // 10 samples, 3 components each
auto v = arr.hostView();            // a View: a typed window over arr's own memory, introduced next
v(0, 0) = 1.0;                      // (component, sample)
// arr.samples() == 10, arr.size() == 30

No separate install step: it is header-only, so a consumer just #includes it and links nothing extra beyond the compiler’s own runtime. Quickstart walks through reading and writing a whole array.

Where aether sits#

aether → eagle ← raptor → hawk

aether is the numerics core: eagle’s GPU execution layer builds directly on it, and hawk’s code generator emits kernels against the same device-safe slice. raptor holds the family’s shared contracts, with no dependencies — the manifest schema and interop contracts eagle and hawk both certify against.

Start here

Build an array, read it through a view, and move it to the device and back — about six minutes.

One array, two machines
Tutorials

Arrays and views, expression templates, device math, your own kernel, and the macro scaffold behind it all.

Tutorials
How-to guides

Quaternions, random numbers, the vector/matrix cookbook, banded emulated double precision.

How-to guides
Reference

Every documented C++ class, function and macro.

API reference

New to the whole RAPTOR family? The landing page’s Start here walks through one kernel, a million samples and a PyTorch fit in ten minutes, across every repo at once.