EVALUATION OF PARALLEL ALGORITHMS
In order to solve computational problems by appropriate algorithms, we need to carry out their analysis. The goal of analysis is to demonstrate correctness of the algorithms (see Section 1.3) and to examine their properties that are crucial in terms of suitability for solving a problem at hand, as well as to compare performance of the algorithms and select the best one. Another aspect of analysis may be to determine whether the best algorithm we have is optimal, or in other words, no better algorithm exists.
A sequential algorithm is a sequence of precisely defined steps solving a problem, that is computing the output data based on the input data. The precision in describing the steps is necessary to be able to transform the algorithm into a computer program that is the implementation of the algorithm. The computation of a sequential algorithm is performed by one processor.
If we want to solve a problem by using multiple processors, then the problem should be decomposed into subproblems that can be solved in parallel. Each of the subproblems is solved by a separate algorithm, which is a component of a parallel algorithm. So the parallel algorithm consists of a certain number of separate algorithms that can be executed simultaneously. The parallel algorithm also specifies how its components use intermediate results of computation and how they synchronize their work.
The basic criteria for evaluating sequential algorithms include the running time and memory requirement. The running time—or more precisely, the compute time of a processor—and the occupied memory are the amounts of resources necessary to execute an algorithm. Other evaluation criteria of sequential algorithms include universality, understood as possibility of applying an algorithm to solve a class of problems, simplicity, ease of implementation, and modification.
Evaluating a parallel algorithm is more difficult than a sequential one, because an additional factor (except the size of input data) is to be considered, which is the number of processors of a parallel computer where the algorithm is implemented. A number of evaluation criteria is also greater.