Parallel programming model

Parallel programming model

A parallel programming model is a set of software technologies to express parallel algorithms and match applications with the underlying parallel systems. It encloses the areas of applications, programming languages, compilers, libraries, communications systems, and parallel I/O. Due to the difficulties in automatic parallelization today, people have to choose a proper parallel programming model or a form of mixture of them to develop their parallel applications on a particular platform.

Parallel models are implemented in several ways: as libraries invoked from traditional sequential languages, as language extensions, or complete new execution models. They are also roughly categorized for two kinds of systems: shared-memory system and distributed-memory system, though the lines between them are largely blurred nowadays.

A programming model is usually judged by its expressibility and simplicity, which are by all means conflicting factors. The ultimate goal is to improve productivity of programming.

Example parallel programming models

Libraries
* POSIX Threads
* MPI
* SHMEM
* PVM
* TBBLanguages
* Ada
* Cilk
* Charm++
* Partitioned global address space languages:
** UPC,
** Co-array Fortran,
** Titanium
* HPF
* Occam
* Ease
* Erlang
* Linda coordination language
* Oz
* CUDA
* OpenCL

Unsorted

* OpenMP
* Global Arrays
* Intel Ct
* Pervasive DataRush
* ProActive
* Parallel Random Access Machine
* Stream processing
* Structural Object Programming Model (SOPM)
* Pipelining
* ZPL

Other research-level models are:
* Cray's Chapel,
* Sun’s Fortress
* IBM’s X10

References

* H. Shan and J. Pal Singh. A comparison of MPI, SHMEM, and Cache-Coherent Shared Address Space Programming Models on a Tightly-Coupled Multiprocessor. International Journal of Parallel Programming, 29(3), 2001.
* H. Shan and J. Pal Singh. Comparison of Three Programming Models for Adaptive Applications on the Origin 2000. Journal of Parallel and Distributed Computing, 62:241–266, 2002.
* About structured parallel programming: Davide Pasetto and Marco Vanneschi. " [http://portal.acm.org/citation.cfm?id=898142&coll=&dl=GUIDE&CFID=15151515&CFTOKEN=6184618 Machine independent Analytical models for cost evaluation of template--based programs] ", University of Pisa, 1996

ee also

Automatic parallelization


Wikimedia Foundation. 2010.

Игры ⚽ Поможем решить контрольную работу

Look at other dictionaries:

  • Parallel computing — Programming paradigms Agent oriented Automata based Component based Flow based Pipelined Concatenative Concurrent computing …   Wikipedia

  • Programming paradigm — Programming paradigms Agent oriented Automata based Component based Flow based Pipelined Concatenative Concu …   Wikipedia

  • Unified Parallel C — (UPC) is an extension of the C programming language designed for high performance computing on large scale parallel machines, including those with a common global address space (SMP and NUMA) and those with distributed memory (eg. clusters). The… …   Wikipedia

  • Programming language — lists Alphabetical Categorical Chronological Generational A programming language is an artificial language designed to communicate instructions to a machine, particularly a computer. Programming languages can be used to create programs that… …   Wikipedia

  • Massively parallel processor array — A Massively Parallel Processor Array (MPPA) is a type of integrated circuit which has a massively parallel array of hundreds or thousands of CPUs and RAM memories. These processors pass work to one another through a reconfigurable interconnect of …   Wikipedia

  • Model-based testing — is the application of Model based design for designing and optionally executing the necessary artifacts to perform software testing. Models can be used to represent the desired behavior of the System Under Test (SUT), or to represent the desired… …   Wikipedia

  • Chapel (programming language) — Chapel is a new parallel programming language developed by Cray.[1] It is being developed as part of the Cray Cascade project, a participant in DARPA s High Productivity Computing Systems (HPCS) program, which has the goal of increasing… …   Wikipedia

  • Parallel C — may refer to: * Unified Parallel C, an extension of the C programming language designed for high performance computing on large scale parallel machines * an unimplemented programming language that influenced the design of C* * C for the… …   Wikipedia

  • Parallel ATA — ATA connector on the right, with two motherboard ATA sockets on the left. Type …   Wikipedia

  • Unified Parallel C — (UPC) Класс языка: параллельный, императивный (процедурный), структурный Автор(ы): UPC Consortium Релиз: 2.12.2/2011 5 18 Типизация данных: статическая Основные реализации …   Википедия

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”