ABSTRACT

Parallel processing is still a relatively new facet of computing, with a signiÞcant history in computational mechanics of less than two decades. However, the technology is a certainty and will continue to have a major impact on computational mechanics for the foreseeable future. Many of the currently popular computing systems are based on the sequential processing, von Neumann architecture, in which instructions are executed in sequence, one at a time, on a single data element. For computational algorithms that have a sequential character, this type of processing is optimal. However, most computational problems are not strictly sequential, but have processes that are independent of each other (e.g., element matrices), and could therefore be executed simultaneously. For these parallel tasks or algorithms, sequential processing is obviously not optimal. In the past, increases in computer performance have been primarily achieved through increases in speed of the central processing unit (CPU). However, as the rate of increase in CPU speed slows down, and costs for complex CPUs increase, computer developers have turned to alternative architectures to achieve high computing performance. A logical choice is to use multiple processors and exploit the parallelism inherent in most computational algorithms. This hardware development has led to the rapidly growing Þeld of parallel computing. This chapter provides a brief introduction to the topic of parallel processing

and its relation to Þnite element algorithms. In previous chapters we have mostly avoided discussions of Þnite element implementation since there are many ways to achieve the required algorithmic result. Some texts [1—4] have illustrated the Þnite element implementation process by providing detailed descriptions and listings of source codes for a variety of applications. Appendix A provides a minimal introduction of this type for some two-dimensional problems of interest in this text. The implementation of Þnite element procedures in a parallel computing environment involves a substantial increase in complexity with many algorithms requiring a heavy dependence on areas in computer science. A good introduction to parallel computing is found in [5]. In the next section an introductory description of parallel systems is provided.

We will then outline some of the major algorithmic areas that must be addressed if a Þnite element procedure is going to be adapted to or designed for a parallel computer. It is not our intention to be extremely detailed in this chapter but it is important to call attention to methods and code structures that have been tested and put into use in engineering simulations. Likewise, it is important to point out where Þnite element methods and parallel processing are the most conßicted and a substantial code development effort may be required.