Карта (параллельный рисунок)

Map — это идиома в параллельных вычислениях , где простая операция применяется ко всем элементам последовательности, потенциально параллельно. [1] Она используется для решения ошеломляюще параллельных задач: тех задач, которые можно разложить на независимые подзадачи, не требующие никакой связи/синхронизации между подзадачами, за исключением соединения или барьера в конце.

При применении шаблона карты формулируется элементарная функция , которая фиксирует операцию, которую необходимо выполнить над элементом данных, представляющим часть проблемы, а затем эта элементарная функция применяется в одном или нескольких потоках выполнения , гиперпотоках , полосах SIMD или на нескольких компьютерах .

Некоторые параллельные системы программирования, такие как OpenMP и Cilk , имеют языковую поддержку шаблона map в форме параллельного цикла for ; [2] такие языки, как OpenCL и CUDA, поддерживают элементарные функции (как « ядра ») на уровне языка. Шаблон map обычно сочетается с другими шаблонами параллельного проектирования. Например, map в сочетании с сокращением категорий дает шаблон MapReduce . [3] : 106–107 

Смотрите также

Ссылки

  1. ^ Samadi, Mehrzad; Jamshidi, Davoud Anoushe; Lee, Janghaeng; Mahlke, Scott (2014). Paraprox: основанная на шаблонах аппроксимация для приложений с параллельными данными (PDF) . Proc. 19th Int'l Conf. on Architectural support for programming languages ​​and Operating Systems. doi :10.1145/2541940.2541948.
  2. ^ Вулф, Майкл (6 апреля 2015 г.). «Компиляторы и многое другое: прошлое, настоящее и будущее параллельных циклов». HPCwire .
  3. ^ Майкл МакКул; Джеймс Рейндерс; Арч Робинсон (2013). Структурированное параллельное программирование: шаблоны для эффективных вычислений . Elsevier. ISBN 978-0124159938.
Взято с "https://en.wikipedia.org/w/index.php?title=Карта_(параллельный_шаблон)&oldid=1138886435"