The shared memory multiprocessor architecture provides a higher-level parallelism than the vector and superscalar architecture via multiple parallel streams of instructions. However, the SMP architecture is not scalable. The speedup provided by this architecture is limited by the bandwidth of the memory bus.
Multithreading is the primary programming model for the SMP architecture. Serial languages, such as C and Fortran 77, may be used in concert with optimizing compilers to write efficient programs for SMP computers. Unfortunately, only a limited and simple class of multithreaded algorithms can be implemented in an efficient and portable way by that approach.
Thread libraries directly implement the multithreading paradigm and allow the programmers to write efficient MT programs that do not rely on optimizing compilers. For Unix platforms Pthreads are standard and efficiently support portable parallel programming Unix SMP computers.
Thread libraries are powerful tools that support both parallel and distributed computing. The general programming model underlying the thread libraries is universal and considered too powerful, complicated, and error-prone for just the goals of parallel programming. OpenMP is a high-level parallel extension of Fortran, C, and C+ providing a simplified multithreaded programming model based on the master/slave design strategy and aimed specifically at parallel computing on SMP architectures. OpenMP significantly facilitates writing parallel MT applications and efficiently supports portable programming for all the range of SMP computers including NT computers and Unix computers, among others.