Annotations accelerate
supercomputer programs
(page 4 of 4)
With Orio's annotations approach, the program keeps the original, straightforward code for comparison. "Orio gives you the possibility to check this simpler, easier-to-understand code that you saved with the Orio-generated code and the compiler code generated by the Orio optimization," Gropp says.
Expanding Orio's reach
Norris plans to build on Orio's capabilities.
For some computing challenges, programmers could use higher-level tools. For example, if a computation includes a string of matrix-vector operations &ndash such as multiplying data in a matrix, or rows and columns, by a vector, or just a single column of data &ndash "it is easier to express that in a higher language, like MATLAB," says Norris. So she and her colleagues are working on a language that lets a user write in MATLAB,which gets converted to C or Fortran and then optimized with Orio.
Orio also makes it possible for other developers to add capabilities. "We designed it to be extensible," she says. "It shouldn't be too difficult for someone to write simple parsers to extend support to a different language. The annotations do not have to be in a fixed syntax, so you should be able to play around with different languages."
Norris also has her own plans for adding more to Orio. It's "a very new tool, with a long list of planned features and improvements," she says "Some of the ongoing and future work includes making the empirical search more efficient."
She goes on: "That is, when we test the performance of the generated code, we need to check many different inputs and other parameters, resulting in having to do a lot of runs. This process could be improved by using optimization methods that lead us to the best-performing version without requiring a huge number of test runs."
No matter how Orio advances, Norris always wants to maintain its original purpose: Making computing more efficient. "While we want Orio to interoperate with other tools when they are available, we will always maintain a standalone, portable version that does not require a user to install a lot of complicated extra packages before they can use it."
In that way, Orio will bring more-optimized code to more programmers.

