3.13 Computación paralela y distribuída (PD)

La última década ha traído un crecimiento explosivo en multiprocesador computación, incluyendo los procesadores de varios núcleos y centros de datos distribuidos. Como resultado, la computación paralela y distribuida se ha movido de un tema ampliamente electiva a ser más de un componente central de los planes de estudios de computación de pregrado. Tanto la computación paralela y distribuida implica la ejecución lógicamente simultánea de múltiples procesos, cuyas operaciones tienen el potencial para intercalar de manera compleja. La computación paralela y distribuida construye sobre cimientos en muchas áreas, incluyendo la comprensión de los conceptos fundamentales de los sistemas, tales como la concurrencia y la ejecución en paralelo, la consistencia en el estado / manipulación de la memoria, y la latencia. La comunicación y la coordinación entre los procesos tiene sus raíces en el paso de mensajes y modelos de memoria compartida de la computación y conceptos algorítmicos como atomicidad, el consenso y espera condicional. El logro de aceleración en la práctica requiere una comprensión de algoritmos paralelos, estrategias para la descomposición problema, arquitectura de sistemas, estrategias de implementación detallados y análisis de rendimiento y el ajuste. Los sistemas distribuidos destacan los problemas de la seguridad y tolerancia a fallos, hacen hincapié en el mantenimiento del estado replicado, e introducen problemas adicionales que el puente a las redes de computadoras.

Debido paralelismo interactúa con tantas áreas de la computación, incluyendo al menos algoritmos, lenguajes, sistemas, redes y hardware, muchos planes de estudio pondrán diferentes partes del área de conocimiento en diferentes cursos, en lugar de en un curso dedicado. Si bien reconocemos que la informática se está moviendo en esa dirección y puede llegar a ese punto, en 2013 este proceso se encuentra aún en proceso de cambio y creemos que ofrece una guía más útil para diseñadores curriculares para agregar los temas fundamentales de paralelismo en un solo lugar. Tenga en cuenta, sin embargo, que los fundamentos de la concurrencia y la exclusión mutua aparecen en el área de conocimiento Fundamentos de Sistemas (SF) . Muchos planes de estudios pueden optar por introducir el paralelismo y la concurrencia en el mismo curso (ver más abajo para la distinción prevista por estos términos). Además, observamos que los temas y resultados de aprendizaje que figuran a continuación incluyen sólo breves menciones de cobertura puramente electiva. En la actualidad, hay demasiada diversidad en temas que comparten poco en común (incluyendo por ejemplo, la computación científica paralela, cálculos de procesos y estructuras de datos no-bloqueo) para recomendar determinados temas se tratarán en cursos electivos.

Debido a la terminología de la computación paralela y distribuida varía entre las comunidades, ofrecemos aquí una breve descripción de los sentidos previstos de algunos términos. Esta lista no es exhaustiva ni definitiva, pero se proporciona para mayor claridad.

  1. Paralelismo: El uso de los recursos computacionales adicionales simultáneamente, por lo general durante la aceleración.
  2. Concurrencia: gestionar de manera eficiente y correcta el acceso simultáneo a los recursos.
  3. Actividad: Un cálculo que pueden ejecutarse simultáneamente con los demás; por ejemplo, un programa, proceso, hilo, o activa componente de hardware paralelo.
  4. Atomicity: Normas y propiedades de legalidad de una acción es observacional indivisible; por ejemplo, el establecimiento de todos los bits en una palabra, la transmisión de un único paquete, o completar una transacción.
  5. Consenso artículo: Acuerdo entre dos o más actividades alrededor de un predicado dado; por ejemplo, el valor de un contador, el propietario de una cerradura, o la terminación de un hilo.
  6. Consistencia: Las reglas y propiedades que rigen el acuerdo sobre los valores de las variables escritos o mensajes producidos, por algunas actividades y usados por otros (así posiblemente exhibiendo una raza de datos); por ejemplo, la consistencia secuencial, indicando que los valores de todas las variables de un programa paralelo de memoria compartida son equivalentes a la de un único programa de la realización de algún intercalado de la memoria de accesos de estas actividades.

  7. Multicast: Un mensaje enviado a varios destinatarios, posiblemente, en general sin restricciones acerca de si algunos destinatarios reciban el mensaje antes que otros. Un evento es un mensaje de multidifusión enviado a un conjunto designado de oyentes o suscriptores.

Como multi-procesador de computación continúa creciendo en los próximos años, también lo hará el papel de la computación paralela y distribuida en los programas informáticos de pregrado. Además de las directrices que se presentan aquí, también nos dirigimos al lector interesado al documento titulado “NSF/TCPP Curriculum Initiative on Parallel and Distributed Computing - Core Topics for Undergraduates"", disponible en el sitio web: http://www.cs.gsu.edu/ tcpp/curriculum/.

Nota general de referencias cruzadas: Fundamentos de Sistemas también contiene una introducción al paralelismo (Paradigmas computacionales , Paralelismo , Desempeño en paralelo ).

La introducción al paralelismo en SF complementa el uno aquí y no hay restricción de pedido entre ellos. En San Francisco, la idea es proporcionar una visión unificada del apoyo del sistema para su ejecución simultánea en varios niveles de abstracción (el paralelismo es inherente a las puertas, procesadores, sistemas operativos y servidores), mientras que aquí la atención se centra en una comprensión preliminar de paralelismo como la computación primitivo y las complicaciones que surgen en paralelo y la programación concurrente. Teniendo en cuenta estas diferentes perspectivas, las horas asignadas a cada uno no son redundantes: ver los sistemas de capas y los conceptos computacionales de alto nivel se contabilizan por separado en termsof las horas centrales. 

KA Core Tier1 Core Tier2 Electivo
3.13.1 Fundamentos de paralelismo 2   No
3.13.2 Descomposición en paralelo 1 2 No
3.13.3 Comunicación y coordinación 1 3 No
3.13.4 Análisis y programación de algoritmos paralelos   3 No
3.13.5 Arquitecturas paralelas 1 2 No
3.13.6 Desempeño en paralelo     No
3.13.7 Sistemas distribuídos     No
3.13.8 Cloud Computing     No
3.13.9 Modelos y semántica formal     No



Subsecciones
Generado por Ernesto Cuadros-Vargas , Sociedad Peruana de Computación-Peru, basado en el modelo de la Computing Curricula de IEEE-CS/ACM