Essentially all computers are parallel, with more than one core per processor chip, and the number of cores per chip will increase for several years. Further, many companies and universities have computer clusters with hundreds of processor boards, and the largest supercomputers now have over 200,000 processors. Thus there is a significant need for software that can exploit this parallelism. Support for parallelism needs to be provided in languages, compilers, operating systems, databases, middleware, and applications.
Some of the work is directed towards application support on parallel computers ranging from 10s to hundreds of thousands of processors. This includes building data structures and communication routines that are used within applications, and software frameworks that act as a glue to build complex simulations (such as a climate model) from component simulations (such as atmospheric, oceanic, and land models). One of the most challenging aspects of this is to provide support that scales to large numbers of processors without becoming a bottleneck.
Stout, Quentin F.
Related Labs, Centers, and Groups
Software Systems Laboratory