R-Stream® is advanced compiler technology that enables algorithm and application developers to achieve high performance on advanced computer architectures.

R-Stream is a software tool, a compiler, that enables algorithm and application developers to focus on their algorithms and applications, not the complexity of programming for complex hardware. Developers can express the program in high-level program code once, then use R-Stream to automatically produce optimized parallelized source code for key parallel computing architectures.

R-Stream has broad applicability. It can be used by physicists to accelerate simulations that reflect the deep structure of the universe, by radar system designers to implement new sensor capabilities, and by oil and gas companies to accelerate computing processes for finding oil. It also has exciting capabilities for accelerating machine learning.

R-Stream is a source-to-source compiler that accepts a sequential C program as input and produces code that has been parallelized and optimized for parallel processors and accelerators. R-Stream can output code in a variety of formats for downstream processors, including highly optimized OpenMP, OpenCL, and CUDA. Developers can write their algorithm once in high-level sequential C, and use R-Stream to produce optimized OpenMP, OpenCL, and CUDA, targeted at particular processor instances. R-Stream performs optimizations that include parallelization, locality optimization, iteration space blocking, vectorization, explicit memory management, virtual scratchpad management, explicit communication/DMA generation, DMA data reshaping, and high-level software pipelining.  Autotuning is implicit.

R-Stream in many cases enables optimizations that would be very time-consuming to achieve by hand. The input code that R-Stream accepts can be compact and short, enabling high productivity and understandability. The output code that R-Stream generates automatically reflects the full complexity needed to achieve performance on the target architecture; such output code can be long. Without R-Stream, a programmer needs to write long output code manually.

R-Stream also targets new execution models. It has the ability to generate dataflow programs, sometimes known as “Event Driven Tasks” or EDT. Such dataflow execution can expose more concurrency, and hence performance, on both regular and irregular applications.

R-Stream has the ability to optimize machine learning computations for advanced accelerators. In particular, R-Stream can accept TensorFlow and generate optimized OpenMP, OpenCL, and CUDA and dataflow code.

R-Stream is proprietary technology of Reservoir Labs. It includes patented and patent-pending optimizations and special features to enable rapid compilation for very complex (e.g., hierarchical) target architectures. R-Stream uses the Gurobi solver for underlying optimizations and is distributed with user licenses of Gurobi.

Reservoir also has the capability to enhance R-Stream for new target hardware and application domains. R-Stream accepts target architecture descriptions expressed in a machine modeling language, which can encapsulate many new architectures. Reservoir’s compiler team can also provide customizations of R-Stream for new domains and targets.

If you are interested in obtaining a license for R-Stream, please contact us. For developers, Reservoir provides licenses on a per-user basis. For government users, versions of R-Stream can be provided under special arrangements. We can arrange for site and academic licenses. We would be happy to provide examples of the R-Stream User Guide as well as evaluation versions for your review.

A set of papers describing the technology in R-Stream is available on our Publications page.