Proyecto Paralelismo en Clusters

Departamento de Matemáticas.
Facultad de Ciencias
UNAM

Subproyecto del Programa de Apoyo a Proyectos Institucionales para el Mejoramiento de la Enseñanza (PAPIME)
Clave EN101603


Antecedentes

La programación paralela define la división de una labor de procesamiento entre múltiples procesadores que operan simultáneamente. El resultado esperado es realizar tal procesamiento en forma más eficiente comparada con su ejecución en un sistema uniprocesador. Su principal ventaja es su habilidad de llevar a cabo tareas de una escala que no sería realista o costo-efectivo para otros sistemas. Sin embargo, en general la programación paralela representa una labor sumamente compleja.

El interés de las Ciencias de la Computación en programación paralela inicia en el área de sistemas operativos, donde los segmentos de programa se ejecutan independientemente en paralelismo real o simulado. Conforme evoluciona la tecnología paralela, se han desarrollado nuevos esfuerzos para estudiar los efectos de la concurrencia en sistemas de cómputo paralelo. Mucho de la investigación actual en programación paralela se refiere a técnicas para especificar y controlar la concurrencia. Desde el modelado de redes de conexión hasta el desarrollo de algoritmos paralelos, la concurrencia representa una característica integral al desarrollo de programas, y se considera desde los primeros pasos de diseño.

Por otro lado, es de notarse la diferente aproximación a la programación paralela que ha tomado gran parte de los usuarios del paralelismo. Aun cuando el mundo real que se modela es inherentemente paralelo, los programadores se han acostumbrado a usar técnicas de programación secuencial para su estudio. Su interés en paralelismo evoluciona del deseo de mejorar el desempeño de los algoritmos secuenciales, en general aplicados al cómputo numérico a gran escala. Desean tomar ventaja del poder computacional que proveen múltiples procesadores, y no de los efectos de la concurrencia. De hecho, los usuarios del paralelismo en realidad desean alto desempeño, no paralelismo. Es por esto que, en lugar de integrar paralelismo a su diseño de programas, tienden a incorporarlo después de probar y revisar sus aplicaciones de alto rendimiento en un ambiente secuencial.

En teoría, la programación paralela es simplemente aplicar múltiples procesadores a un solo problema. En la práctica, la programación paralela tiene un alto costo, no solo por el valor de la plataforma de hardware que involucra, sino que además requiere un mayor esfuerzo por parte del programador y diseñador, quien debe programar y entender el problema y su solución en forma paralela para la creación del software necesario. Las técnicas tradicionales utilizadas para revisar y corregir defectos de la programación y mejorar el desempeño en sistemas secuenciales (de un solo procesador) no son directamente portables o aplicables a la programación paralela. Más aun, es necesario considerar que el ambiente de ejecución paralelo es inherentemente inestable e impredecible. Tal ambiente de ejecución puede tratarse de un grupo de computadoras personales, estaciones de trabajo, o un sofisticado sistema de cómputo de alto rendimiento. Resulta común que, tras meses de labor para programar una aplicación paralela, se encuentre que ésta arroja resultados incorrectos, o se ejecuta en forma mas lenta que su contraparte secuencial. Se hace necesario, entonces, el estudio y el análisis más profundo de las técnicas y experiencias en programación paralela, así como de su enseñanza.

[Datos Generales] [Grupos Participantes ] [Protocolo] [Balance ]

Ultima Modificación:  31 de octubre, 2003 por Jorge Ortega