Map es un modismo en computación paralela donde se aplica una operación simple a todos los elementos de una secuencia, potencialmente en paralelo. [1] Se utiliza para resolver problemas embarazosamente paralelos : aquellos problemas que pueden descomponerse en subtareas independientes, que no requieren comunicación / sincronización entre las subtareas excepto una unión o barrera al final.
Al aplicar el patrón de mapa, se formula una función elemental que captura la operación a realizar en un elemento de datos que representa una parte del problema, luego se aplica esta función elemental en uno o más subprocesos de ejecución , hyperthreads , carriles SIMD o en múltiples computadoras .
Algunos sistemas de programación paralela, como OpenMP y Cilk , tienen soporte de lenguaje para el patrón de mapa en forma de bucle for paralelo ; [2] lenguajes como OpenCL y CUDA soportan funciones elementales (como " núcleos ") a nivel de lenguaje. El patrón de mapa generalmente se combina con otros patrones de diseño paralelos. Por ejemplo, el mapa combinado con la reducción de categorías da el patrón MapReduce . [3] : 106–107
Ver también
Referencias
- ^ Samadi, Mehrzad; Jamshidi, Davoud Anoushe; Lee, Janghaeng; Mahlke, Scott (2014). Paraprox: Aproximación basada en patrones para aplicaciones paralelas de datos (PDF) . Proc. XIX Conf. 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: el 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.