Many factors contribute to scalability, including the architecture of the parallel computer and the parallel implementation of the algorithm. Here, scalability is a description of how the total computational work requirements grow with problem size, which can be discussed independent of the computing platform. Many of the algorithms used in today's simulation codes are based on yesterday's unscalable technology. The use of scalable algorithms can decrease simulation times by several orders of magnitude, thus reducing a two-day run on an MPP to 30 minutes. Furthermore, the codes that use this technology are limited only by the size of the machine's memory because they are able to effectively exploit additional computer resources to solve huge problems.
Scalable algorithms enable the application scientist to both pose and answer new questions.
He or she also may be forced to narrow the scope of a parameter study because each run takes too long. By decreasing the execution time, a scalable algorithm allows the scientist to do more simulations at higher resolutions. In many large-scale scientific simulation codes, the majority of the run time is spent in a linear solver. For this reason, much of the scalable algorithms research and development is aimed at solving these large, sparse linear systems of equations on parallel computers. The scalable linear solver algorithms we develop are implemented and available as part of the hypre library Multigrid is an example of scalable linear solver technology.