ROSE has been used to facilitate a number of projects for:

  • exploring program analyses and optimizations
  • supporting new programming languages
  • building correctness and performance tools

Current Projects:

Past Projects:

  • Compass: a tool for the checking of source code. Compass is based on the ROSE compiler infrastructure and demonstrates the use of ROSE to build many simple pattern detectors for analysis of C, C++, and Fortran source code. See the current Compass Manual for details.
  • Loop optimizer: support for aggressive loop optimizations such as loop fusion, fission, unrolling and blocking. An extended dependence analysis algorithm has been implemented to support both perfectly nested loops and irregular loop nests.
  • OpenMP: a project to support OpenMP using ROSE. ROSE already has a lightweight parser for OpenMP C/C++ pragmas and a translator for OpenMP 2.5 constructs. We are extending it to support Fortran and the new OpenMP 3.0 specification.
  • Whole-program empirical optimization: participation in the PERI project. ROSE is a central component in the PERI project to enable performance portability of DOE applications through an empirical optimization system, which incorporates a set of external tools interacting with ROSE to support the entire life-cycle of automated empirical optimization. See the current draft autotuning tutorial for details.
  • UPC: ongoing work to support UPC using ROSE. We are leveraging the existing UPC support available in the EDG frontend to build an environment for program analysis and optimizations for UPC applications.
  • Haskellport: an interface to ROSE’s IR for the Haskell programming language. See the tutorial (a chapter of the ROSE Tutorial) and API documentation for details.
  • Windows support: We  worked to support ROSE under Windows using Visual Studio (via CMake generation of the MSVC Solutions file). The work was not completed.