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