Linux Parallel Processing HOWTO
Linux Parallel Processing HOWTO
Hank Dietz, pplinux@ecn.purdue.eduv980105, 5 January 1998Parallel Processing refers to the concept of speeding-up the
execution of a program by dividing the program into multiple fragments
that can execute simultaneously, each on its own processor. A program
being executed across N processors might execute N
times faster than it would using a single processor. This document
discusses the four basic approaches to parallel processing that are
available to Linux users: SMP Linux systems, clusters of networked
Linux systems, parallel execution using multimedia instructions (i.e.,
MMX), and attached (parallel) processors hosted by a Linux system.1. Introduction1.1 Is Parallel Processing What I Want?1.2 Terminology1.3 Example Algorithm1.4 Organization Of This Document2. SMP Linux2.1 SMP Hardware2.2 Introduction To Shared Memory Programming2.3 bb_threads2.4 LinuxThreads2.5 System V Shared Memory2.6 Memory Map Call3. Clusters Of Linux Systems3.1 Why A Cluster?3.2 Network Hardware3.3 Network Software Interface3.4 PVM (Parallel Virtual Machine)3.5 MPI (Message Passing Interface)3.6 AFAPI (Aggregate Function API)3.7 Other Cluster Support Libraries3.8 General Cluster References4. SIMD Within A Register (e.g., using MMX)4.1 SWAR: What Is It Good For?4.2 Introduction To SWAR Programming4.3 MMX SWAR Under Linux5. Linux-Hosted Attached Processors5.1 A Linux PC Is A Good Host5.2 Did You DSP That?5.3 FPGAs And Reconfigurable Logic Computing6. Of General Interest6.1 Programming Languages And Compilers6.2 Performance Issues6.3 Conclusion - It's Out There