OpenMP Summary
OpenMP parallelization paradigm:
- small number of compiler directives to set up parallel execution of computer code and run time library system for locking functions
- the directives are portable (supported by many different vendors in the same way)
- the parallelization is for SMP programming paradigm, i.e. the machine should have a global address space
- the number of execution threads can be controlled outside of the program
- a correct OpenMP program should not depend on the exact number of execution threads, nor on the scheduling mechanism for work distribution
- more over, a correct OpenMP program should be (weakly) serially equivalent, I.e. the results of the computation should be within rounding accuracy similar to the sequentially executing program
- on SGI, the OpenMP parallel programming can be mixed with the Message Passing Interface (MPI) library, providing for “Hierarchical Parallelism”
- OpenMP parallelism in a single node (Global Address Space)
- MPI parallelism between the nodes in a cluster (Connected by Network)