rose  0.9.12.18
About: ROSE is a compiler infrastructure to build source-to-source program transformation and analysis tools for large-scale C (C89 and C98), C++ (C++98 and C++11), UPC, Fortran (77/95/2003), OpenMP, Java, Python and PHP applications.
  Fossies Dox: rose-0.9.12.18.tar.gz  ("unofficial" and yet experimental doxygen-generated source code documentation)  

Developed at Lawrence Livermore National Laboratory (LLNL), ROSE is an open source compiler infrastructure to build source-to-source program transformation and analysis tools for large-scale C (C89 and C98), C++ (C++98 and C++11), UPC, Fortran (77, 95, 2003), OpenMP, Java, Python, PHP, and Binary applications. ROSE users range from experienced compiler researchers to library and tool developers who may have minimal compiler experience. ROSE is particularly well suited for building custom tools for static analysis, program optimization, arbitrary program transformation, domain-specific optimizations, complex loop optimizations, performance analysis, and cyber-security.

Goal

The primary goal of the ROSE project is to optimize applications within the U.S. Department of Energy (DOE).

ROSE aims to be:

  • A library (and set of associated tools) to quickly and easily apply compiler techniques to one's code in order to improve application performance and developer productivity.
  • A research and development compiler infrastructure for for writing custom source-to-source translators to perform source code transformations, analysis, and optimizations.

Approach

  • Cutting-edge research on source- and high-level compiler analysis and optimization algorithms.
  • Best-practice software development to incorporate existing compiler techniques to and develop new ones.
  • Pre-built ROSE tools to perform program transformation, analysis and optimization of source code.
  • An easy-to-use API to build customized, domain-specific compiler-based analysis, transformation, and optimization tools.

Resources

Current release

Other releases

The documentation you're currently viewing is for a specific version of ROSE. Documentation for other releases can be found here.

Contributors to this release

Authors
LLNL staff: Dan Quinlan and Chunhua Liao, Robb Matzke, Markus Schordan, Justin Too
LLNL post-docs: Thomas Panas, Jeremiah Willcock, Qing Yi, Rich Vuduc
LLNL student interns: Gergo Barany (Technical University of Vienna), Michael Byrd (University of California at Davis), Gabriel Coutinho (Imperial College London), Peter Collingbourne (Imperial College London), Valentin David (University of Bergen, Norway), Jochen Haerdtlein (University of Erlanger, Germany), Vera Hauge (University of Oslo, Norway), Christian Iwainsky (University of Erlanger, Germany), Lingxiao Jiang (University of California at Davis), Alin Jula (Texas A&M), Han Kim (University of California at San Diego), Milind Kulkarni (Cornell University), Markus Kowarschik (University of Erlanger, Germany), Gary Lee (University of California at Berkeley and Purdue University), Chunhua Liao (University of Houston), Ghassan Misherghi. (University of California at Davis), Peter Pirkelbauer (Texas A&M), Bobby Philip (University of Colorado), Radu Popovici (Cornell University), Robert Preissl (Austria), Andreas Saebjornsen (University of Oslo, Norway), Sunjeev Sikand (University of California at San Diego), Andy Stone (Colorado State University at Fort Collins), Danny Thorne (University of Kentucky), Nils Thuerey (University of Erlanger, Germany), Ramakrishna Upadrasta (Colorado State University at Fort Collins), Christian Wiess(Munich University of Technology, Germany), Jeremiah Willcock (Indiana University), Brian White (Cornell University), Gary Yuan (University of California at Davis), and Yuan Zhao (Rice University).

Next steps

ROSE is an open source project that can be installed from source code. See Download and installation

Todo:
The links to the "ROSE tutorial" (at least the source code part) and the "ROSE user manual" are to versions served from http://rosecompiler.org, which might not match this release of ROSE. A better approach might be to use relative linking: it would point to a version consistent with the documentation you're now reading, including the case when a user generates their own local copies and has no Internet connection. These documents may move into doxygen, in which case this is no longer an issue. [Robb P. Matzke 2015-09-25]