Tuning Up Applications
2/3/2011 6:00:00 AM
An Illinois team headed by computer science professor Laxmikant Kale is helping scientists tune their applications for Blue Waters, even before the hardware exists. He chatted with NCSA Access' Trish Barker about that process.
Q. You've been involved with the Blue Waters project since the beginning, stretching all the way back to the proposal process. Tell me about the aspects of the project you're working on.
A. There are three projects that I'm involved with, and they are all related. The first one has to do with deploying a programming model that the Parallel Programming Laboratory has developed over the years, which is embodied in Charm++ and Adaptive MPI. We are working to efficiently implement this model on Blue Waters.
The second project has to do with the fact that you have a huge machine and people need to tune their applications to that machine, but we don't have access to that machine now, obviously. Usually tuning can't begin until the machine is deployed, so in the early months of deployment applications are running at lower efficiency. To avoid that we are providing a performance-tuning environment based on the programming model we've developed. Using this environment, you can run a program as if it is running on the full machine, even though you may be using just one-tenth the number of processors. This infrastructure is called BigSim. It was developed with support from the National Science Foundation, and our object here is to deploy it for Blue Waters users.
BigSim is not so much a performance prediction system as it is a way to identify performance bottlenecks. We can give predictions of how quickly a simulation can be performed but it's really more useful to see what the potential issues are and how we can work around them.
The molecular dynamics application NAMD is already using BigSim in the process of tuning to the full-scale Blue Waters machine, and several other applications are exploring the use of it. NAMD is special because my group is a co-developer of NAMD. We've been working on it since the 1990s, and it was one of the first applications to use Charm++, and now it's also one of the earliest applications to use BigSim.
The third thing that I'm involved with is support for scaling NAMD to the full machine, especially for large molecular simulations involving tens of millions to hundreds of millions of atoms.
All of this is a good example of how the computer science department and NCSA can work together. My team is able to provide valuable tools and expertise, and Blue Waters gives us an ideal platform to further develop and demonstrate those tools.
Q. Let's talk about the first project, the programming model. What is a programming model?
A. A programming model defines how programmers should think about the machine. It defines an abstraction for the programmer to write to. It also specifies the way in which a computation is divided into its component entities and how they interact with each other. The distinguishing feature of Charm++ and Adaptive MPI is that the programmer does not have to worry about the number of processors, the programmer doesn't write to the processors. Instead they break the simulation into data and work units, and then the runtime system assigns those to the processors. This gives the system flexibility to deal with issues like dynamic load balancing and automatic fault tolerance, without the programmer having to do anything about it.
Charm++ provides a good division of work between the programmer and the system. The programmer should decide how to parallelize, but the system should decide who does what when. This is a contrast to MPI, in which a programmer decides what every processor is doing.
To read more of the interview, please visit NCSA's Access magazine article.