2. Parallel programming models and tools
–mpi–
MPI (Message passing Interface) is a messaging programming model that serves process communication. It is not specific to an implementation of it, but rather a standard and canonical representation, which is a library description, not a language, easy to use and highly portable. To be blunt is some programming interface.
–openmp–
The Open multi-processing is a portable parallel programming model for shared memory multiprocessor architectures, with an interface initiated by SGI. Contains the compilation guide, the Run function library and the environment variable three parts, has the serial equivalence (whether using one or more threads to run a program, all results in the same result, easier to maintain and understand) and incremental parallelism (the processor starts with a serial program, and then looks for those snippets that are worth parallelization). Openmpi's execution model adopts the Fork-join form, that is, the main thread, which reduces the difficulty and complexity of parallel programming.
Compiler guidance statements, supported by Visio Studio, enable OpenMP to be seen as a parallel program or as a serial program, or to make it easy for a user to rewrite a serial program as a parallel program while keeping the serial program part intact.
–mapreduce–
Google,pagerank the construction of the inverted table index. Map inputs input into the middle of the key/value pair, reduce the Key/value synthesis final output.
–hadoop–
Open source version of MapReduce. Hfds,namenode (Jobtracker), DataNode (tasktracker), cluster architecture.
–cuda–
The GPU Parallel computing tool developed by NVIDIA.
–cellbe–
The main goal of Cellbe is to increase the processor performance of PlayStation2 by 10 times times, and in 2006 IBM introduced the Cell Blade computer system.
Reference: Fundamentals of parallel computer Programming & CUDA Course
Lao Li share: Parallel Computing Fundamentals & programming models and Tools 2