Карта (параллельный шаблон)
Карта — это идиома параллельных вычислений , где простая операция применяется ко всем элементам последовательности, возможно, параллельно. [1] Он используется для решения до невозможности параллельных задач: тех проблем, которые можно разложить на независимые подзадачи, не требующие никакой связи/синхронизации между подзадачами, кроме соединения или барьера в конце.
При применении шаблона карты формулируется элементарная функция , которая фиксирует операцию, которую необходимо выполнить над элементом данных, представляющим часть проблемы, а затем применяет эту элементарную функцию в одном или нескольких потоках выполнения , гиперпотоках , полосах SIMD или нескольких компьютеры .
Некоторые системы параллельного программирования, такие как OpenMP и Cilk , имеют языковую поддержку шаблона карты в форме параллельного цикла for ; [2] такие языки, как OpenCL и CUDA, поддерживают элементарные функции (как « ядра ») на уровне языка. Шаблон карты обычно комбинируется с другими шаблонами параллельного проектирования. Например, карта в сочетании с сокращением категорий дает шаблон MapReduce . [3] : 106–107
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Самади, Мехрзад; Джамшиди, Давуд Ануш; Ли, Чанхэн; Мальке, Скотт (2014). Paraprox: аппроксимация на основе шаблонов для приложений, работающих с параллельными данными (PDF) . Учеб. 19-я Международная конференция. по архитектурной поддержке языков программирования и операционных систем. дои : 10.1145/2541940.2541948 .
- ^ Вулф, Майкл (6 апреля 2015 г.). «Компиляторы и многое другое: прошлое, настоящее и будущее параллельных циклов» . HPCwire .
- ^ Майкл МакКул; Джеймс Рейндерс; Арч Робисон (2013). Структурированное параллельное программирование: шаблоны для эффективных вычислений . Эльзевир. ISBN 978-0124159938 .