Paradigmas de programación en paralelo : paralelismo explícito y paralelismo implícito - Weinbach, Natalia Luz (2009)
Esta Tesis se centra en el estudio, análisis y comparacion de un conjunto de lenguajes y librerías que permiten programar sistemas utilizando paralelismo. Su investigacion está motivada por el impetuoso ritmo de avance que posee actualmente el hardware y las herramientas de programación en paralelo. Tal situación es visible, por ejemplo, al observar que los fabricantes de chips ya no derivan la capacidad de cómputo escalando la velocidad de reloj de los procesadores, sino que han comenzado a incrementar el potencial agregando CPUs o núcleos adicionales. El impulso al estudio del paralelismo es clave, ya que el paralelismo deja de ser algo únicamente centrado en el ámbito académico o en grandes laboratorios de investigació de computación de alta performance. A su vez, hoy en día, en la mayoría de los ámbitos cientícos deben resolverse problemas computacionales muy complejos y con altos requerimientos en tiempo y recursos. Para resolver este tipo de problemas, el paralelismo se ha convertido en una de las herramientas computacionales de mayor relevancia. Para esto, no solo es necesario contar con hardware que permita realizar computo paralelo, sino también con lenguajes de programación para el desarrollo de aplicaciones con paralelismo. Como se muestra a lo largo de la Tesis, en la literatura se reconoce que la escritura de programas destinados a una ejecución paralela no es una tarea trivial. La elección del lenguaje y el formalismo apropiado son un problema central. Es por este motivo que se ha estudiado un conjunto heterogéneo de lenguajes y librerías a fin de mostrar las distintas herramientas que se disponen en la actualidad para programar en paralelo. Entre los lenguajes estudiados se encuentran de alto y de bajo nivel, con paralelismo implícito y explícito, compilados e interpretados. Se analizan tanto lenguajes imperativos, como declarativos y de desarrollo de sistemas multi-agentes. Tambien se describen nuevas tendencias como la programación en Grid y los lenguajes de propósito general para la GPU (Graphic Processing Unit).