Parallel programming is designed for the use of parallel computer systems for solving time-consuming problems that cannot be solved on a sequential computer in a reasonable time.

These problems can be divided into two classes:1. Processing large data arrays (including processing images and signals in real time).2. Simulation of complex physical processes and chemical reactions.

For each of these classes prospective methods are designed for solving problems. For data processing one of the most promising technologies is the use of artificial neural networks. Method of particles-in-cell and cellular automata are very useful for simulation.

Problems of scalability of parallel algorithms and the transfer of existing parallel programs to future parallel computers are very acute now. An important task is to optimize the use of the equipment (including the CPU cache) of parallel computer. Along with parallelizing information processing it is essential to ensure the processing reliability by the relevant organization of systems of concurrent interacting processes. From the perspective of creating qualitative parallel programs it is important to develop advanced methods of teaching parallel programming.

The above reasons are the basis for the creation of this book, chapters of which are devoted to solving these problems.