One of the many ways that the Office of Advanced Scientific Computing Research (ASCR) supports the Department of Energy Office of Science facilities is by championing the research that powers computational science. A recent ASCR Discovery feature takes a look at how the DOE science community is preparing for extreme-scale programming. As supercomputers reach exascale speeds, likely in the mid-2020s, they will be capable of billion-way parallelism. To facilitate the difficult programming challenge of exploiting all those cores, computer scientists at Lawrence Livermore National Laboratory (LLNL) are working to automate the generation, analysis, debugging and optimization of complex application source. The compiler infrastructure effort is part of the ROSE project based at the LLNL’s Center for Applied Scientific Computing.
As code becomes more complex, human ability to interact with it directly becomes limited. Programmers start with user-friendly source code, which gets fed to ROSE, and transformed into source code for vendor-provided compilers to help create executable machine instructions. Then the code is analyzed, debugged and further optimized using various tools. Now improved, ROSE translates the program back into source code. “This source-to-source feature enables even novice programmers to take advantage of ROSE’s open-source tools,” notes the feature piece.
The ROSE framework originated in the early 2000s with support from DOE’s Advanced Scientific Computing Research program (ASCR) and the National Nuclear Security Administration, and has since been used to write, rewrite, analyze or optimize hundreds of millions of lines of code.
The lead LLNL researcher on the ROSE project Dan Quinlan recalls how the name originated as a reference to Shakespeare’s Romeo and Juliet. It came about as he was trying to assure team members that the tool was to help their code achieve its full potential not to change anything. His motto “Your program under any semantics-preserving transformation is equivalent” was an allusion to Shakespeare’s famous line, “a rose by any other name would smell as sweet.”
Livermore’s lab-directed research program has since received additional funds to use ROSE for new research activities. The focus now is on supporting the DOE’s push into exascale computing. To this end, the team is working with ASCR’s X-Stack Software Project. The name X-Stack calls up both “exascale” and the “stack” of software tools developers need to create computer software.
The X-Stack program team is aligned with another project called D-TEC, which is short for DSL Technology for Exascale Computing. The focus here is writing and doing test-runs on large, complex, but narrow-purpose software for anticipated supercomputer architectures. The ROSE group has contributed to nine DSLs that are in various stages of development.
A main challenge of exascale programming is the need to manage data strategically and to rely less on hardware-managed caching due to its associated data, time and energy challenges. The workaround is to employ software-managed caching and selective use of hardware-managed caching on small, fast memory levels. Experts anticipate that exascale architectures will use many levels of memory, ranging from large and slow to small and fast.
“In specific exascale architectures, you are using many levels of memory, and you need to use software-managed caching to copy data from the larger and slower memory levels to the smaller but faster levels of memory to get good performance,” Quinlan says. “You can put just what you need where you want it, but the code needed to support software-managed caches is extremely tedious to write and debug. The fact that the code can be automatically generated (using ROSE) is one of the more useful things we’re doing for exascale.”