Definition
R-Stream (R-Stream is a registered trademark of Reservoir Labs, Inc.) is a source-to-source, auto-parallelizing compiler developed by Reservoir Labs, Inc. R-Stream compiles programs in the domains of high-performance scientific (HPC) and high-performance embedded computing (HPEC), where loop nests, dense matrices, and arrays are the common idioms. It generates mapped programs, i.e., optimized programs for parallel execution on the target architecture. R-Stream targets modern, heterogeneous, multi-core architectures, including multiprocessors with caches, systems with accelerators, and distributed memory architectures that require explicit memory management and data movement. The compiler accepts the C language as input. Depending on the target platform, the compiled output program can be in C with the appropriate target APIs or annotations for parallel execution, other data parallel languages such as CUDA for GPUs, or dataflow assembly for FPGA targets.
History
DARPA funded...
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Bibliography
nVidia CUDA Compute Unified Device Architecture Programming Guide (Version 2.0), June 2008
Ahmed N, Mateev N, Pingali K (2000) Tiling imperfectly-nested loop nests. In: Supercomputing ’00: proceedings of the 2000 ACM/IEEE conference on supercomputing (CDROM), IEEE Computer Society, Washington, DC, pp 60–90
Allen JR, Kennedy K, Porterfield C, Warren J (1983) Conversion of control dependence to data dependence. In: Proceedings of the 10th ACM SIGACT-SIGPLAN symposium on principles of programming languages, New York, pp 177–189
Ancourt C, Irigoin F (1991) Scanning polyhedra with DO loops. In: Proceedings of the 3rd ACM SIGPLAN symposium on principles and practice of parallel programming, Williamsburg, VA, pp 39–50, Apr 1991
Barthou D, Cohen A, Collard JF (1998) Maximal static expansion. In: Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on principles of programming languages, New York, pp 98–106
Bastoul C (2003) Efficient code generation for automatic parallelization and optimization. In: Proceedings of the international symposium on parallel and distributed computing, Ljubjana, pp 23–30, Oct 2003
Bastoul C, Vasilache N, Leung A, Meister B, Wohlford D, Lethin R (2009) Extended static control programs as a programming model for accelerators: a case study: targetting Clearspeed CSX700 with the R-Stream compiler. In: First workshop on Programming Models for Emerging Architectures (PMEA)
Bondhugula U, Hartono A, Ramanujan J, Sadayappan P (2008) A practical automatic polyhedral parallelizer and locality optimizer. In: ACM SIGPLAN Programming Languages Design and Implementation (PLDI ’08), Tucson, Arizona, June 2008
Buck I (2003) Brook v0.2 specification. Technical report, Stanford University, Oct 2003
Cifuentes C (1993) A structuring algorithm for decompilation. In: Proceedings of the XIX Conferencia Latinoamericana de Informatica, Buenos Aires, Argentina, pp 267–276
Cifuentes C (1994) Structuring decompiled graphs. Technical Report FIT-TR- 1994–05, Department of Computer Science, University of Tasmania, Australia, 19. Also in Proceedings of the 6th international conference on compiler construction, 1996, pp 91–105
Clauss P, Loechner V (1996) Parametric analysis of polyhedral iteration spaces. In: IEEE international conference on application specific array processors, ASAP’96. IEEE Computer Society, Los Alamitos, Calif, Aug 1996
Click C, Paleczny M (1995) A simple graph-based intermediate representation. ACM SIGPLAN Notices, San Francisco, CA
Cytron R, Ferrante J, Rosen BK, Zadeck FK (1991) Efficiently computing static single assignment form and the control dependence graph. ACM Trans Program Lang Syst 13(4):451–490
Darte A, Schreiber R, Villard G (2005) Lattice-based memory allocation. IEEE Trans Comput 54(10):1242–1257
Feautrier P (1988) Array expansion. In: Proceedings of the 2nd international conference on supercomputing, St. Malo, France
Feautrier P (1988) Parametric integer programming. RAIRO-Recherche Opérationnelle, 22(3):243–268
Feautrier P (1991) Dataflow analysis of array and scalar references. Int J Parallel Prog 20(1):23–52
Feautrier P (1992) Some efficient solutions to the affine scheduling problem. Part I. One-dimensional time. Int J Parallel Prog 21(5):313–348
Feautrier P (1992) Some efficient solutions to the affine scheduling problem. Part II. Multidimensional time. Int J Parallel Prog 21(6):389–420
StreamIt Group (2003) Streamit language specification, version 2.0. Technical report, Massachusetts Institue of Technology, Oct 2003
Lethin R, Leung A, Meister B, Szilagyi P, Vasilache N, Wohlford D (2008) Final report on the R-Stream 3.0 compiler DARPA/AFRL Contract # F03602-03-C-0033, DTIC AFRL-RI-RS-TR-2008-160. Technical report, Reservoir Labs, Inc., May 2008
Leung A, Meister B, Vasilache N, Baskaran M, Wohlford D, Bastoul C, Lethin R (2010) A mapping path for multi-GPGPU accelerated computers from a portable high level programming abstraction. In: Third Workshop on General-Purpose Computation on Graphics Processing Units, GPGPU-3, Mar 2010
Lim AW, Lam MS (1997) Maximizing parallelism and minimizing synchronization with affine transforms. In: Proceedings of the 24th annual ACM SIGPLAN-SIGACT symposium on principles of programming languages, Paris, France, pp 201–214
Loechner V (1999) Polylib: a library for manipulating parametrized polyhedra. Technical report, University of Louis Pasteur, Strasbourg, France, Mar 1999
Mai K, Paaske T, Jayasena N, Ho R, Dally W, Horowitz M (2000) Smart memories: a modular reconfigurable architecture. In: Proceedings of the international symposium on Comuter architecture, pp 161–171, June 2000
Meister B, Leung A, Vasilache N, Wohlford D, Bastoul C, Lethin R (2009) Productivity via automatic code generation for PGAS platforms with the R-Stream compiler. In: Workshop on asynchrony in the PGAS programming model, June 2009
Meister B, Verdoolaege S (2008) Polynomial approximations in the polytope model: bringing the power of quasi-polynomials to the masses. In: ODES-6: 6th workshop on optimizations for DSP and embedded systems, Apr 2008
Offner C, Knobe K (2003) Weak dynamic single assignment form. Technical Report HPL-2003-169, HP Labs
Pop S, Cohen A, Silber G (2005) Induction variable analysis with delayed abstractions. In: Proceedings of the 2005 international conference on high performance embedded architectures and compilers, Barcelona, Spain
Quilleré F, Rajopadhye S, Wilde D (2000) Generation of efficient nested loops from polyhedra. Int J Parallel Prog 28(5): 469–498
Rettberg RD, Crowther WR, Carvey PP, Tomlinson RS (1990) The Monarch parallel processor hardware design. Computer 23:18–30
Richards MA (2005) Fundamentals of radar signal processing. McGraw-Hill, New York
Sankaralingam K, Nagarajan R, Gratz P, Desikan R, Gulati D, Hanson H, Kim C, Liu H, Ranganathan N, Sethumadhavan S, Sharif S, Shivakumar P, Yoder W, McDonald R, Keckler SW, Burger DC (2006) The distributed microarchitecture of the TRIPS prototype processor. In: 39th international symposium on microarchitecture (MICRO), Los Alamitos, Calif, Dec 2006
Schreiber R, Cronquist DC (2004) Near-optimal allocation of local memory arrays. Technical Report HPL-2004-24, Hewlett-Packard Laboratories, Feb 2004
Taylor MB, Kim J, Miller J, Wentzlaff D, Ghodrat F, Greenwald B, Hoffmann H, Johnson P, Lee JW, Lee W, Ma A, Saraf A, Seneski M, Shnidman N, Strumpen V, Frank M, Amarasinghe S, Agarwal A (2002) The raw microprocessor: a computational fabric for software circuits and general purpose programs. Micro, Mar 2002
Vasilache N, Bastoul C, Cohen A, Girbal S (2006) Violated dependence analysis. In: Proceedings of the 20th international conference on supercomputing (ICS’06), Cairns, Queensland, Australia. ACM, New York, NY, USA, pp 335–344
Vasilache N, Cohen A, Pouchet LN (2007) Automatic correction of loop transformations. In: 16th international conference on parallel architecture and compilation techniques (PACT’07), IEEE Computer Society Press, Brasov, Romania, pp 292–304, Sept 2007
Vasilache NT (2007) Scalable program optimization techniques in the polyhedral model. PhD thesis, Université Paris Sud XI, Orsay, Sept 2007
Verdoolaege S, Seghir R, Beyls K, Loechner V, Bruynooghe M (2004) Analytical computation of Ehrhart polynomials: enabling more compiler analyses and optimizations. In: Proceedings of the 2004 international conference on compilers, architecture, and synthesis for embedded systems, ACM Press, New York, pp 248–258
Weise D, Crew R, Ernst M, Steensgaard B (1994) Value dependence graph: representation without taxation. In: ACM symposium on principles of programming languages, New York, pp 297–310
Xue J (1997) On tiling as a loop transformation. Parallel Process Lett 7(4):409–424
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2011 Springer Science+Business Media, LLC
About this entry
Cite this entry
Meister, B., Vasilache, N., Wohlford, D., Baskaran, M.M., Leung, A., Lethin, R. (2011). R-Stream Compiler. In: Padua, D. (eds) Encyclopedia of Parallel Computing. Springer, Boston, MA. https://doi.org/10.1007/978-0-387-09766-4_515
Download citation
DOI: https://doi.org/10.1007/978-0-387-09766-4_515
Publisher Name: Springer, Boston, MA
Print ISBN: 978-0-387-09765-7
Online ISBN: 978-0-387-09766-4
eBook Packages: Computer ScienceReference Module Computer Science and Engineering