ABSTRACT

Increasing availability of more powerful and cost-effective hardware in terms of both processing as well as networking elements has allowed us to harness the power of large parallel computers to numerically solve larger and larger problems in a wide variety of scientific areas like electromagnetics, fluid dynamics, molecular dynamics, and quantum chromodynamics, to mention only a few. In most cases, a given problem is usually defined over a domain that can either be a predefined interval of space-time coordinates or an interval in some other abstract space. In the context of scientific computing, the term domain decomposition is often used to refer to the process of partitioning the underlying domain of the governing equation(s) such that it provides a more accurate result and/or takes fewer numerical steps to achieve a

#2 ✐

predetermined degree of accuracy of the result. In parallel scientific computing, the same term is used to refer to the process of partitioning the underlying domain of the problem across processors in a manner that attempts to balance the work performed by each processor while minimizing the number and sizes of communications between them. In this chapter, we adopt the latter definition. As such, the techniques that are described in this chapter do not attempt to improve the accuracy or efficiency (in terms of number of steps) of numerical techniques that are employed to solve the governing equations of the scientific application. Instead, we will focus on those techniques and algorithms that are widely used in scientific computing to partition the problem domain across multiple processors with the objective of optimizing certain metrics that will be introduced shortly.