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