Rellum Rellum

rellum.dev/benchmark

Benchmark

Rellum matches C++ on sequential native code and runs independent dataflow bindings in parallel automatically. No threads, locks, pragmas, or task annotations in the Rellum program.

workload recursive divide-and-conquer integer computation
problem size 16,777,216 leaves
machine Intel Core i7-11700F, 8 cores, 16 logical processors
compiler settings C++: clang++ -O2. Rellum: opt -O2 + llc -O2.

Results

program time work items/sec notes
C++ sequential 59.9 ms 560M explicit recursive function, clang++ -O2
Rellum sequential 59.7 ms 562M same pure recursive function shape, native release build
C++ OpenMP recursive tasks 38.3 ms 877M manual task tree with threshold and taskwait
C++ OpenMP 8 top-level tasks 21.8 ms 1.54B manual split into eight explicit tasks
Rellum graph parallelism 14.0 ms 2.40B eight independent graph bindings, parallelized by the compiler

Rellum Parallel Version

chunk_size = 2097152

a = work(0, chunk_size)
b = work(chunk_size, chunk_size * 2)
c = work(chunk_size * 2, chunk_size * 3)
d = work(chunk_size * 3, chunk_size * 4)
e = work(chunk_size * 4, chunk_size * 5)
f = work(chunk_size * 5, chunk_size * 6)
g = work(chunk_size * 6, chunk_size * 7)
h = work(chunk_size * 7, chunk_size * 8)

result = a + b + c + d + e + f + g + h

The bindings a through h do not depend on each other. The compiler places them in the same graph layer and emits parallel dispatch for that layer.

What This Means

These are local best-of runs on one workstation. Benchmark numbers are hardware-sensitive; the source lives in the Rellum repository under benchmarks/language_speed.