Introduction

The major shifts in computing go through the Dawning Age of the 1950s; the Age of Mainframes in the 1960s; the Age of Minis in the 1970s; the Age of Personal Computers in the 1980s; and finally, the Age of Parallel Computers in the 1990s. Today and tomorrow, Experts predict that by the year 2000, parallel computing will be as mainstream as personal computers were in 1989 \cite{[LeEl92]}. Parallel/distributed computing is not only a new technique, but also a new thinking methodology. It requires and trains people to break the limitations of time and space, to cooperate multiple events all at once, to pursue highest efficiency and load balancing in a computing system. It will reinitialize the entire computer science and related fields.

Why parallel programming

There are two reasons to promote parallel programming--limitations due to the laws of physics and economic efficiency.

What is parallel programming

The new architectures of hardware support and require new software. The new programming methods are known as parallel programming.

Parallel programming is partitioning scheduling the execution of these smaller sub-programs (processes) onto multiple processors in parallel to solve the problem. The result of this procedure is a parallel algorithm.

We are going to separate parallel algorithm design into two steps. The first step, partitioning, can be done in a machine-independent manner. Only the second step, scheduling, must be related to a physical computing environment since we need to map the multiprocesses onto a multiprocessor or a multicomputer architecture.

Performance measurements

The purpose of parallel programming is to speed up the execution of a process. The partitioning provides the possibility and the scheduling realizes the speedup. Speedup will be affected by many factors and will be stated later.