En computación paralela , una carga de trabajo o problema fácilmente paralelizable (también llamado fácilmente paralelizable , perfectamente paralelizable , deliciosamente paralelizable o agradablemente paralelizable ) es aquel en el que se necesita poco o ningún esfuerzo para dividir el problema en varias tareas paralelas. [ 1 ] Esto se debe a la mínima o nula dependencia de la comunicación entre las tareas paralelas, o de los resultados entre ellas. [ 2 ]
Estos problemas difieren de los problemas de computación distribuida , que requieren comunicación entre tareas, especialmente la comunicación de resultados intermedios. Son más fáciles de resolver en granjas de servidores que carecen de la infraestructura especializada utilizada en un verdadero clúster de supercomputadoras . Se adaptan bien a grandes plataformas de computación distribuida basadas en Internet , como BOINC , y sufren menos ralentización por paralelismo . Lo opuesto a los problemas fácilmente paralelizable son los problemas inherentemente seriales , que no pueden paralelizarse en absoluto.
Un ejemplo común de un problema fácilmente paralelizable es la renderización de video 3D manejada por una unidad de procesamiento gráfico , donde cada fotograma (método directo) o píxel ( método de trazado de rayos ) puede manejarse sin interdependencia. [ 3 ] Algunas formas de descifrado de contraseñas son otra tarea fácilmente paralelizable que se distribuye fácilmente en unidades centrales de procesamiento , núcleos de CPU o clústeres.
Etimología
Aquí, "vergonzosamente" se usa para referirse a problemas de paralelización que son "vergonzosamente fáciles". [ 4 ] El término puede implicar vergüenza por parte de los desarrolladores o compiladores: "Debido a que muchos problemas importantes permanecen sin resolver, principalmente debido a su complejidad computacional intrínseca, sería vergonzoso no desarrollar implementaciones paralelas de métodos de continuación de homotopía polinomial ". [ 5 ] El término aparece por primera vez en la literatura en un libro de 1986 sobre multiprocesadores del creador de MATLAB , Cleve Moler , [ 6 ] quien afirma haberlo inventado. [ 7 ]
Un término alternativo, agradablemente paralelo , ha ganado cierto uso, tal vez para evitar las connotaciones negativas de vergüenza en favor de una reflexión positiva sobre la paralelización de los problemas: "Por supuesto, no hay nada vergonzoso en estos programas en absoluto". [ 8 ]
Ejemplos
Un ejemplo sencillo consiste en servir datos estáticos. Bastaría con que varias unidades de procesamiento produjeran el mismo conjunto de bits. De hecho, el famoso problema de «Hola Mundo» podría paralelizarse fácilmente con pocas consideraciones de programación y escaso coste computacional.
Algunos ejemplos de problemas sorprendentemente similares incluyen:
- Método de Monte Carlo [ 9 ]
- Consultas a bases de datos relacionales distribuidas mediante procesamiento de conjuntos distribuidos .
- Integración numérica [ 10 ]
- Procesamiento masivo de archivos no relacionados entre sí, pero de naturaleza similar, como el redimensionamiento y la conversión de galerías de fotos.
- El conjunto de Mandelbrot , el ruido de Perlin e imágenes similares, donde cada punto se calcula de forma independiente.
- Renderizado de gráficos por computadora . En la animación por computadora , cada fotograma o píxel puede renderizarse de forma independiente.
- Algunas búsquedas de fuerza bruta en criptografía . [ 11 ] Ejemplos notables del mundo real incluyen distributed.net y sistemas de prueba de trabajo utilizados en criptomonedas .
- Búsquedas BLAST en bioinformática con bases de datos divididas. [ 12 ]
- Sistemas de reconocimiento facial a gran escala que comparan miles de rostros adquiridos arbitrariamente (por ejemplo, un video de seguridad o vigilancia a través de circuito cerrado de televisión ) con un número igualmente grande de rostros previamente almacenados (por ejemplo, una galería de delincuentes o una lista de vigilancia similar ). [ 13 ]
- Simulaciones informáticas que comparan muchos escenarios independientes.
- Algoritmos genéticos . [ 14 ]
- Cálculos de conjunto para la predicción numérica del tiempo .
- Simulación y reconstrucción de eventos en física de partículas .
- El algoritmo de los cuadrados marchantes .
- Paso de tamizado del tamiz cuadrático y del tamiz de campo numérico .
- Paso de crecimiento del árbol en la técnica de aprendizaje automático de bosques aleatorios .
- Transformada discreta de Fourier, donde cada armónico se calcula de forma independiente.
- Redes neuronales convolucionales ejecutándose en GPU .
- Búsqueda paralela en programación con restricciones [ 15 ]
Implementaciones
- En R (lenguaje de programación) , el paquete Simple Network of Workstations (SNOW) implementa un mecanismo sencillo para utilizar un conjunto de estaciones de trabajo o un clúster Beowulf para realizar cálculos fácilmente paralelos. [ 16 ] Otros paquetes similares de R incluyen "future", "parallel" y otros.
Véase también
- La ley de Amdahl define el valor P , que sería casi o exactamente igual a 1 para problemas fácilmente paralelizados.
- Autómata celular
- Máquina de conexión
- Marco de trabajo CUDA
- procesador multinúcleo
- Mapa (patrón paralelo)
- Masivamente paralelo
- Multiprocesamiento
- Computación paralela
- Programación orientada a procesos
- Arquitectura sin recursos compartidos (SN)
- Multiprocesamiento simétrico (SMP)
- Procesador vectorial
Referencias
- ↑ Herlihy, Maurice; Shavit, Nir (2012). El arte de la programación multiprocesador, reimpresión revisada ( ed. revisada). Elsevier. pág. 14. ISBN 9780123977953. Consultado el 28 de febrero de 2016 .
Algunos problemas computacionales son "paralelos de forma vergonzosa": se pueden dividir fácilmente en componentes que se pueden ejecutar simultáneamente.
- ↑ Sección 1.4.4 de: Foster, Ian (1995). Diseño y construcción de programas paralelos . Addison–Wesley. ISBN 9780201575941Archivado del original el 1 de marzo de 2011.
- ↑ Alan Chalmers; Erik Reinhard; Tim Davis (21 de marzo de 2011). Renderizado paralelo práctico . CRC Press. ISBN 978-1-4398-6380-0.
- ↑ Matloff, Norman (2011). El arte de la programación en R: Un recorrido por el diseño de software estadístico , pág. 347. No Starch. ISBN 9781593274108.
- ↑ Leykin, Anton; Verschelde, Jan; Zhuang, Yan (2006). "Algoritmos de homotopía paralela para resolver sistemas polinomiales". Mathematical Software - ICMS 2006. Lecture Notes in Computer Science. Vol. 4151. pp. 225–234 . doi : 10.1007/11832225_22 . ISBN 978-3-540-38084-9.
- ↑ Moler, Cleve (1986). «Cálculo matricial en multiprocesadores de memoria distribuida». En Heath, Michael T. (ed.). Multiprocesadores hipercubo . Society for Industrial and Applied Mathematics, Filadelfia. ISBN 978-0898712094.
- ↑ La segunda parte del hipercubo de Intel se republicó en el blog Cleve's Corner del sitio web de MathWorks.
- ↑ Kepner, Jeremy (2009). MATLAB paralelo para computadoras multinúcleo y multinodo , pág. 12. SIAM. ISBN 9780898716733.
- ↑ Erricos John Kontoghiorghes (21 de diciembre de 2005). Manual de computación paralela y estadística . CRC Press. ISBN 978-1-4200-2868-3.
- ↑ Yuefan Deng (2013). Computación paralela aplicada . World Scientific. ISBN 978-981-4307-60-4.
- ↑ Josefsson, Simon; Percival, Colin (agosto de 2016). "La función de derivación de clave basada en contraseña de scrypt" . tools.ietf.org . doi : 10.17487/RFC7914 . Consultado el 12 de diciembre de 2016 .
- ↑ Mathog, DR (22 de septiembre de 2003). "BLAST paralelo en bases de datos divididas" . Bioinformática . 19 (14): 1865–6 . doi : 10.1093/bioinformatics/btg250 . PMID 14512366 .
- ↑ Cómo hicimos que nuestro reconocedor facial fuera 25 veces más rápido (publicación del blog del desarrollador)
- ↑ Shigeyoshi Tsutsui; Pierre Collet (5 de diciembre de 2013). Computación evolutiva masivamente paralela en GPGPU . Springer Science & Business Media. ISBN 978-3-642-37959-8.
- ↑ Youssef Hamadi; Lakhdar Sais (5 de abril de 2018). Manual de razonamiento con restricciones paralelas . Springer. ISBN 978-3-319-63516-3.
- ↑ Paquete Simple Network of Workstations (SNOW)
Enlaces externos
- Computaciones paralelas vergonzosamente complejas : Ingeniería de un clúster de computación al estilo Beowulf.
- " Star-P: Computación paralela de alta productividad "
- Aplicaciones de la computación distribuida
- Problemas de computación distribuida
- Computación paralela