Content deleted Content added
←Created page with '{{single source}} '''Map''' is a design pattern in parallel computing where a simple operation is applied to all elements of a sequence, potentially in p...' |
No edit summary Tags: Mobile edit Mobile web edit Advanced mobile edit |
||
(14 intermediate revisions by 5 users not shown) | |||
Line 1:
'''Map''' is
▲'''Map''' is a [[design pattern]] in [[parallel computing]] where a simple operation is applied to all elements of a sequence, potentially in parallel. It is used to solve '''embarrasingly parallel''' problems: those problems that can be decomposed into independent subtasks, requiring no communication/synchronization between the subtasks except a [[Fork–join model|join]] or [[Barrier (computer science)|barrier]] at the end.
When applying the map pattern, one formulates an ''elemental function'' that captures the operation to be performed on a data item that represents a part of the problem, then applies this elemental function in one or more [[Thread (computing)|threads of execution]], [[hyperthread]]s, [[SIMD
Some parallel programming systems, such as [[OpenMP]] and [[Cilk]], have language support for the map pattern in the form of a '''parallel for loop''';<ref>{{cite web |title=Compilers and More: The Past, Present and Future of Parallel Loops |first=Michael |last=Wolfe |date=6 April 2015 |website=HPCwire |url=http://www.hpcwire.com/2015/04/06/compilers-and-more-the-past-present-and-future-of-parallel-loops/}}</ref> languages such as [[OpenCL]] and [[CUDA]] support elemental functions (as "[[
==See also==
* [[Map (higher-order function)]]
* [[Functional programming]]
* [[Algorithmic skeleton]]
==References==
{{reflist}}
[[Category:Parallel computing]]
[[Category:Software design patterns]]
|