Skip to content

Krell v2.0

Choose a tag to compare

@nightwarelabz nightwarelabz released this 03 Nov 04:12
· 12 commits to v2.0 since this release
Immutable release. Only release title and notes can be modified.

Krell v2.0 is the performance release: seven work packages (WP1-WP7) that take Krell's generated code from a quarter of C's speed to ahead of C -O2, plus a faster reference interpreter.

Benchmarks: KRELLPROOF twelve-kernel suite, AMD EPYC, gcc 13.3 -O2 as the opponent, geometric mean of S = T_C / T_Krell across all twelve kernels (recorded run, krellproof v2.0 branch):

  • Native backend: S = 1.117 — 11.7% faster than C -O2 (original six kernels: 1.229)
  • LLVM lane: S = 1.349 — 34.9% faster than C -O2 (original six kernels: 1.196)

What changed:

  • WP1: vector lowering for streaming loops (fill32, sumsq at the memory roofline)
  • WP2: backend code generation (register allocation, instruction selection)
  • WP3: bounded fragment superoptimization
  • WP4: call, loop, and chain overhead polish (fib and fnv1a to parity or better)
  • WP5: six new domain kernels in KRELLPROOF (dot, saxpy, copy, bytesum, parse, mix); the saxpy map shape added to the loop vectorizer and a range-check idiom in the optimizer closed the two trailing kernels
  • WP6: the LLVM lane under the same bench protocol, checksums verified
  • WP7: the reference interpreter allocates one flat arena per frame instead of one buffer per value — about 1.2x faster by paired A/B on the bench's timing drivers (fib 2.0x, sumsq 5.0x); native and LLVM code generation byte-identical to WP6

Verification: differential battery 4,546 cases, 0 failures on the x86_64 and LLVM lanes; make tests green; all bench checksums agree across every implementation. Generated code remains byte-identical across machines and backends, and the semantics remain total — no undefined behavior, by construction.

Full record: https://github.com/nightwarelabz/krellproof (v2.0 branch)