Parallel programming model: Difference between revisions

Content deleted Content added
copyedit, wikify
Line 1:
In computer software, a '''parallel programming model''' is a model for writing [[parallel program]]s which can be compiled and executed. The value of a programming model iscan usuallybe judged on its generality: how well a range of different problems can be expressed andfor howa wellvariety theyof executedifferent onarchitectures, aand rangeits ofperformance: differenthow architecturesefficiently they execute. The implementation of a programming model can take several forms such as libraries invoked from traditional [[sequential programming|sequential]] languages, language extensions, or complete new execution models.
 
Consensus onaround a particulareach programming model is important as it enables software expressed within it to be transportable between different architectures. The For sequential programming architectures, the [[von Neumann model]] has facilitated this with sequential architectures, as it provides an efficient ''bridge'' between hardware and software, meaning that high-level languages can be efficiently compiled to it and it can be efficiently implemented in hardware.<ref name="Valiant1990">Leslie G. Valiant, A bridging model for parallel computation, Commun. ACM, volume 33, issue 8, August, 1990, pages 103--111</ref>
 
==Main classifications and paradigms==
Line 28:
 
===Problem decomposition===
{{clear}}
{{Flynn's Taxonomy}}
 
AnyA parallel program is composed of simultaneously executing processes,. problem Problem decomposition relates to the way in which these processes are formulated. This classification may also be referred to as [[algorithmic skeleton]]s or parallel programming paradigms.
 
====Task parallelism====
{{Main|Task parallelism}}
 
A task-parallel model focuses on processes, or threads of execution. These processes will often be behaviourally distinct, which emphasises the need for communication. Task parallelism is a natural way to express message-passing communication. It is usually classified as [[MIMD]]/[[Flynn's taxonomy#MPMD|MPMD]] or [[MISD]].
 
====Data parallelism====
{{Main|Data parallelism}}
 
A data-parallel model focuses on performing operations on a data set which is usually regularly structured in an array. A set of tasks will operate on this data, but independently on separate partitions. In a shared memory system, the data will be accessible to all, but in a distributed-memory system it will divided between memories and worked on locally. Data parallelism is usually classified as [[SIMD]]/[[SPMD]].
 
====Idealised Parallel Systems====