ROSE is a compiler infrastructure with robust analysis, debugging, and optimization tool development capabilities that was developed by a group of LLNL computer scientists and external collaborators. Traditional compilers take source code written by humans and translate it to code that can be executed by machines.
As a source-to-source compiler infrastructure, ROSE instead helps build automated tools that can read and write source code in any of today’s most common programming languages. ROSE generates human-readable source code that a vendor compiler can then use to create the machine code. This approach makes ROSE portable across an expanding range of operating systems and hardware architectures. Since its inception more than 14 years ago, ROSE has steadily gained popularity, and research groups in the Department of Energy (DOE) and in laboratories and universities worldwide are still finding new ways to use it to meet their program analysis and optimization needs.
The ROSE project team has been working with collaborators to expand the use of ROSE to address a wider range of source-code analysis and optimization problems. For instance, team members, in conjunction with researchers from the DOE’s Institute for Sustained Performance, Energy, and Resiliency (SUPER), have dedicated significant effort to optimizing performance using a technique called auto-tuning to support large-scale DOE applications.
In auto-tuning, many different versions of parameterized optimizations are implemented and tested offline, and the best version of the optimization is selected for the final compilation of an application. This technique is especially useful when the architecture is complex and not easily modeled within the compiler. Exascale HPC architectures could be routinely optimized using this technology if researchers can make it more efficient for large-scale applications.
Many laboratories and universities are using ROSE to prepare for and analyze evolving computing requirements. For example, exascale architecture design teams at Argonne National Laboratory and LLNL used ROSE to characterize the behavior of their laboratory codes on their planned exascale systems. This approach to building new computing architectures, where both the hardware and the software are studied iteratively to understand how to build improved software and hardware, is called co-design. Lawrence Berkeley and Sandia national laboratories, University of Illinois at Urbana–Champaign, and UC San Diego have used ROSE as part of their co-design process to define custom analyses and transformations and exploit novel exascale architecture designs.