Rake is a research programming language designed around explicit SIMD (Single Instruction, Multiple Data) programming, with a vector-first approach that treats vectors as primitive elements in the language. Its execution model is inspired by the metaphor of data raking through tine patterns, where data flows through a series of horizontal barriers—tines—that act as masks, filtering which data lanes are active at each stage. This model is intended to address the challenge of efficiently mapping divergent control flow to SIMD hardware, a problem where traditional auto-vectorization often fails due to the need for different code paths across data lanes.
The language introduces several unique concepts and vocabulary tailored to SIMD programming. A 'rack' represents a vector value, with one value per SIMD lane, while 'tines' are named boolean masks that partition these lanes. 'Through' blocks execute computations under these masks, and 'sweep' operations collect results from the various tines. Scalars are explicitly marked and broadcast across lanes to prevent confusion with vector values. Rake emphasizes explicit control over data layout, distinguishing between structure-of-arrays (stack) and scalar (single) configurations. The language also defines 'crunch' as pure functions where all lanes execute identical logic, and 'rake' functions for handling divergent logic using tines and through blocks.
Rake's syntax and semantics are still evolving, as it is in early development. 0+ with dune, as well as LLVM/MLIR 17+ for building and running code. Installation is performed by cloning the project's GitHub repository and building it with dune. Rake is distributed under the MIT License.
This tool is intended for those interested in explicit SIMD programming, such as systems programmers or researchers who require fine-grained control over parallel computation on modern CPUs. Its design is focused on making SIMD semantics explicit and providing language constructs that map directly to parallel hardware.
In the Developer Tools space, Rake takes a focused approach. Enabling developers to write efficient SIMD code with explicit vector semantics. Rake is an open-source project aimed at systems programmers. The project is open source (Open Source). Rake is available on the web.
Rake first shipped in 2024. Among its 4 catalogued features are SIMD primitives, explicit vector operations, and masking model. Rake is currently in beta.
Latest indexed changes and source events
Other apps tracked under the same category.