Wednesday, 14 December 2011

Parallel programming model

A alongside programming archetypal is a abstraction that enables the announcement of alongside programs which can be aggregate and executed. The amount of a programming archetypal is usually advised on its generality: how able-bodied a ambit of altered problems can be bidding and how able-bodied they assassinate on a ambit of altered architectures. The accomplishing of a programming archetypal can booty several forms such as libraries invoked from acceptable consecutive languages, accent extensions, or complete fresh beheading models.

Consensus on a accurate programming archetypal is important as it enablescomputer application bidding aural it to be carriageable amid altered architectures. The von Neumann archetypal has facilitated this with consecutive architectures as it provides an able arch amid accouterments and software, acceptation that high-level languages can be calmly aggregate to it and it can be calmly implemented in hardware1.

Main classifications and paradigms

Main Classifications of alongside programming models can be disconnected broadly into two areas: action alternation and botheration decomposition.

edit Action interaction

Process alternation relates to the mechanisms by which alongside processes are able to acquaint with anniversary other. The best accepted forms of alternation are aggregate anamnesis and bulletin passing, but it can additionally be implicit.

edit Aggregate memory

Main article: Aggregate memory

In a aggregate anamnesis model, alongside tasks allotment a all-around abode amplitude which they apprehend and address to asynchronously. This requires aegis mechanisms such as locks and semaphores to ascendancy circumstantial access. Aggregate anamnesis can be emulated on distributed-memory systems but non-uniform anamnesis admission (NUMA) times can appear in to play.

edit Bulletin passing

Main article: Bulletin passing

In a bulletin casual model, alongside tasks barter abstracts through casual letters to one another. These communications can be asynchronous or synchronous. The Communicating Sequential Processes (CSP) formalisation of message-passing active advice channels to 'connect' processes, and led to a cardinal of important languages such as Joyce, occam and Erlang.

Implicit

Main article: Absolute parallelism

In an absolute model, no action alternation is arresting to the programmer, instead the compiler and/or runtime is amenable for assuming it. This is best accepted with domain-specific languages area the accommodation aural a botheration can be added prescribed.

edit Botheration decomposition

Any alongside affairs is composed of accompanying active processes, botheration atomization relates to the way in which these processes are formulated. This allocation may additionally be referred to as algebraic skeletons or alongside programming paradigms.

edit Task parallelism

Main article: Task parallelism

A task-parallel archetypal focuses on processes, or accoutrement of execution. These processes will generally be behaviourally distinct, which emphasises the charge for communication. Task accompaniment is a accustomed way to accurate message-passing communication. It is usually classified as MIMD/MPMD or MISD.

edit Abstracts parallelism

Main article: Abstracts parallelism

A data-parallel archetypal focuses on assuming operations on a abstracts set which is usually consistently structured in an array. A set of tasks will accomplish on this data, but apart on abstracted partitions. In a aggregate anamnesis system, the abstracts will be attainable to all, but in a distributed-memory arrangement it will disconnected amid memories and formed on locally. Abstracts accompaniment is usually classified as SIMD/SPMP.

edit Implicit

Main article: Absolute parallelism

As with absolute action interaction, an absolute archetypal of accompaniment reveals annihilation to the programmer as the compiler and/or the runtime is responsible

Example parallel programming models

Algorithmic Skeletons

Components

Distributed Objects

Remote Method Invocation

Workflows

Parallel Random Access Machine

Stream processing

Bulk ancillary parallelism