Skip to main content

R-Stream Compiler

  • Reference work entry
Encyclopedia of Parallel Computing

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...

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 1,600.00
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Hardcover Book
USD 1,799.99
Price excludes VAT (USA)
  • Durable hardcover edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Bibliography

  1. nVidia CUDA Compute Unified Device Architecture Programming Guide (Version 2.0), June 2008

    Google Scholar 

  2. 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

    Google Scholar 

  3. 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

    Google Scholar 

  4. 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

    Google Scholar 

  5. 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

    Google Scholar 

  6. 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

    Google Scholar 

  7. 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)

    Google Scholar 

  8. 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

    Google Scholar 

  9. Buck I (2003) Brook v0.2 specification. Technical report, Stanford University, Oct 2003

    Google Scholar 

  10. Cifuentes C (1993) A structuring algorithm for decompilation. In: Proceedings of the XIX Conferencia Latinoamericana de Informatica, Buenos Aires, Argentina, pp 267–276

    Google Scholar 

  11. 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

    Google Scholar 

  12. 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

    Google Scholar 

  13. Click C, Paleczny M (1995) A simple graph-based intermediate representation. ACM SIGPLAN Notices, San Francisco, CA

    Google Scholar 

  14. 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

    Article  Google Scholar 

  15. Darte A, Schreiber R, Villard G (2005) Lattice-based memory allocation. IEEE Trans Comput 54(10):1242–1257

    Article  Google Scholar 

  16. Feautrier P (1988) Array expansion. In: Proceedings of the 2nd international conference on supercomputing, St. Malo, France

    Google Scholar 

  17. Feautrier P (1988) Parametric integer programming. RAIRO-Recherche Opérationnelle, 22(3):243–268

    MATH  MathSciNet  Google Scholar 

  18. Feautrier P (1991) Dataflow analysis of array and scalar references. Int J Parallel Prog 20(1):23–52

    Article  MATH  Google Scholar 

  19. Feautrier P (1992) Some efficient solutions to the affine scheduling problem. Part I. One-dimensional time. Int J Parallel Prog 21(5):313–348

    Article  MATH  MathSciNet  Google Scholar 

  20. Feautrier P (1992) Some efficient solutions to the affine scheduling problem. Part II. Multidimensional time. Int J Parallel Prog 21(6):389–420

    Article  MATH  MathSciNet  Google Scholar 

  21. StreamIt Group (2003) Streamit language specification, version 2.0. Technical report, Massachusetts Institue of Technology, Oct 2003

    Google Scholar 

  22. 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

    Google Scholar 

  23. 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

    Google Scholar 

  24. 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

    Google Scholar 

  25. Loechner V (1999) Polylib: a library for manipulating parametrized polyhedra. Technical report, University of Louis Pasteur, Strasbourg, France, Mar 1999

    Google Scholar 

  26. 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

    Google Scholar 

  27. 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

    Google Scholar 

  28. 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

    Google Scholar 

  29. Offner C, Knobe K (2003) Weak dynamic single assignment form. Technical Report HPL-2003-169, HP Labs

    Google Scholar 

  30. 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

    Google Scholar 

  31. Quilleré F, Rajopadhye S, Wilde D (2000) Generation of efficient nested loops from polyhedra. Int J Parallel Prog 28(5): 469–498

    Article  Google Scholar 

  32. Rettberg RD, Crowther WR, Carvey PP, Tomlinson RS (1990) The Monarch parallel processor hardware design. Computer 23:18–30

    Article  Google Scholar 

  33. Richards MA (2005) Fundamentals of radar signal processing. McGraw-Hill, New York

    Google Scholar 

  34. 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

    Google Scholar 

  35. Schreiber R, Cronquist DC (2004) Near-optimal allocation of local memory arrays. Technical Report HPL-2004-24, Hewlett-Packard Laboratories, Feb 2004

    Google Scholar 

  36. 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

    Google Scholar 

  37. 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

    Google Scholar 

  38. 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

    Google Scholar 

  39. Vasilache NT (2007) Scalable program optimization techniques in the polyhedral model. PhD thesis, Université Paris Sud XI, Orsay, Sept 2007

    Google Scholar 

  40. 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

    Google Scholar 

  41. 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

    Google Scholar 

  42. Xue J (1997) On tiling as a loop transformation. Parallel Process Lett 7(4):409–424

    Article  MathSciNet  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints 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

Publish with us

Policies and ethics