High Performance Computing

R-Stream

R-Stream is a source-to-source software tool for high performance computing that enables algorithm and application developers to focus on their algorithms and applications, not on 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.

Porting is achieved by changing the machine model of the target and compiler flags so that the same input source code can be re-generated for several target machines and parallel APIs, removing the need to write separate versions for each target. Productivity is achieved because the programmer can write simple source code, and R-Stream automatically takes care of managing complexities of the architecture for performance.

Core Capabilities

Output to standard parallel APIs.

R-Stream can automatically generate optimized code in a broad set of forms that includes standard OpenMP, MPI, CUDA, and OpenCL. The output programs are deeply optimized using structural idioms (loop tiling, etc.) that achieve good target specific performance.

Can take neural networks, in Tensorflow, directly as inputs.

A special input adapter to R-Stream can translate Tensorflow graphs into “chunks” of C source; R-Stream then generates optimized custom operators that can be substituted into the TF graph for high performance.

Portability

The same input source code can be targeted at multiple types of processors; substitute a new target processor machine model files to regenerate code across a diversity of targets.

Supports advanced exascale programming abstractions

From the same input source as used to generate standard parallel programming APIs, R-Stream can also generate optimized code in Legion and Kokkos.

Outputs data flow parallel programs

Dataflow execution models provide even more concurrency in parallel programs. R-Stream can generate dataflow programs, expressed within abstractions for different kinds of processors (CPU, GPU)

Range of transformations

Greatest range of parallelizing transformations compared to any other polyhedral compiler, in an integrated, well engineered form. Power tool at your desk

Scalability of compiler algorithms

Use of advanced ILP solvers, Gurobi, and propriety polyhedral algorithms allow optimization with greater scope and on larger programs than other tools

Management of accelerators

For parallelizing to accelerators, R-Stream accepts hierarchical machine descriptions and can generate both host code and accelerator code, as well as the controls from the host to the accelerator.

Compatibility/Interoperability

The output code for R-Stream preserves variable names and can be linked with other parts of the application that are not optimized with R-Stream.

Input is sequential code, output parallel

R-Stream is a source to source-to-source compiler. Input code is C, which can be sequential or parallel code, and the output is parallel source code.

Plugs in to LLVM (compatibility)

Enables use with a variety of languages, andflows based on cfront and other LLVM front ends