spacer
ASCR Home Button ASCR Organization Button ASCR News Button Contact ASCR Button
DOE Homepage Science Homepage
ASCRlogo ASCR Discovery home page 

Annotations accelerate
supercomputer programs

Posted June 30, 2009

University of Illinois computer scientist William Gropp is an expert at making code run fast.

When it comes to tools that help programmers optimize code performance in today's increasingly complex software, there is a "really huge need," says Gropp, a Gordon Bell Prize-winner for high-performance computer applications.

"Whether for single- or multi-core processors, codes typically provide less – sometimes lots less – performance than they should when just using tools like optimizing compilers," which convert programs into executable code, says Gropp, deputy director for research at Illinois' Institute for Advanced Computing Applications and Technologies and the Paul and Cynthia Saylor Professor of Computer Science at the Urbana-Champaign campus. "Many papers demonstrate that you can get significantly better performance if you put in special effort."

Some of those studies suggest that most scientific applications attain only a small fraction of achievable performance. One hope for enlarging that fraction is Orio (Greek for "speed limit"), a program being developed by Boyana Norris, a computer scientist in the Mathematics and Computer Science Division at the Department of Energy's Argonne National Laboratory (ANL). Norris also is a senior fellow at the University of Chicago's Computation Institute.

Norris and Gropp started talking about ways to optimize code in 2005. Gropp knew a programmer could improve code performance by hand – going in and making optimizations manually – but that requires specific codes for specific machines.

"The machines change every few years," Gropp says, "and the two biggest machines within DOE have very different architectures."

Manual optimization also is time-consuming and can make code more difficult to read. For instance, a few lines of easy-to-read code could become hundreds of lines of optimized code. By contrast, libraries that optimize specific program tasks can be effective and easy to use, but they only work in limited cases. What programmers really need are general-purpose optimization tools, but few exist.

Even a general-purpose tool, however, cannot magically jump into a program and make it flawlessly fast. So instead of completely automating the process, Gropp sought an approach allowing a programmer to interact with an optimization tool. He worked on a prototype technique that lets a programmer direct the optimization tool, essentially telling it where to improve the code's efficiency.

As Norris explains: "Bill had been looking at performance tuning of important numerical kernels and was looking at automating this process without requiring one to write a full-blown compiler. To do this, he introduced comments – annotations – in the code that specify in a simplified way what is being computed as well as what transformations should be performed. He had a little prototype implemented that could generate C code" – a programming language originally developed for Unix systems &ndash "for simple computations."

1   |   2   |   3   |   4   |   Print       Next »

Web Policies Button No Fear Act Button Site Map Button Privacy Button Phone Book Button Employment Button
spacer