Map es un modismo en computación paralela donde una operación simple se aplica a todos los elementos de una secuencia, potencialmente en paralelo. [ 1 ] Se utiliza para resolver problemas fácilmente paralelizable : aquellos problemas que pueden descomponerse en subtareas independientes, sin necesidad de comunicación/sincronización entre ellas, excepto una unión o barrera al final.
Al aplicar el patrón de mapeo, se formula una función elemental que captura la operación que se debe realizar sobre un elemento de datos que representa una parte del problema, y luego se aplica esta función elemental en uno o más hilos de ejecución , hyperthreads , carriles SIMD o en varias computadoras .
Algunos sistemas de programación paralela, como OpenMP y Cilk , admiten el patrón map en forma de bucle for paralelo ; [ 2 ] lenguajes como OpenCL y CUDA admiten funciones elementales (como " kernels ") a nivel de lenguaje. El patrón map se suele combinar con otros patrones de diseño paralelo. Por ejemplo, la combinación de map con reducción de categorías da lugar al patrón MapReduce . [ 3 ] : 106–107
Véase también
Referencias
- ↑ Samadi, Mehrzad; Jamshidi, Davoud Anoushe; Lee, Janghaeng; Mahlke, Scott (2014). Paraprox: Aproximación basada en patrones para aplicaciones de paralelismo de datos (PDF) . Actas de la 19.ª Conferencia Internacional sobre soporte arquitectónico para lenguajes de programación y sistemas operativos. doi : 10.1145/2541940.2541948 .
- ↑ Wolfe, Michael (6 de abril de 2015). "Compiladores y más: pasado, presente y futuro de los bucles paralelos" . HPCwire .
- ↑ Michael McCool; James Reinders; Arch Robison (2013). Programación paralela estructurada: patrones para una computación eficiente . Elsevier. ISBN 978-0124159938.
- Computación paralela
- patrones de diseño de software