Introduccin Motivacin y Historia Programacin paralela Consiste de

  • Slides: 19
Download presentation
Introducción (Motivación y Historia)

Introducción (Motivación y Historia)

Programación paralela • Consiste de programar en un lenguaje que permite al usuario a

Programación paralela • Consiste de programar en un lenguaje que permite al usuario a indicar la manera en que partes difenentes de una computación se pueden ejecutar concurrentemente mediante procesadores distintos.

Una computadora paralela • Es un sistema de computadora(s) con multiplos procesadores en lo

Una computadora paralela • Es un sistema de computadora(s) con multiplos procesadores en lo cual se puede llevar a cabo programmación paralela.

Computación en paralelo • Es el uso de una computadora paralela para llevar a

Computación en paralelo • Es el uso de una computadora paralela para llevar a cabo programación paralela.

Computación Científica • Las ciencias clasicas se caracterizan por experimentos y modelos. • Las

Computación Científica • Las ciencias clasicas se caracterizan por experimentos y modelos. • Las ciencias modernas se caracterizan por observaciones, teoría, experimentos y simulaciones numericas. Simulaciones numericas se usan en lugar de experimentos para economizar dinero y tiempo y, a veces, para circumvenir cuestiones éticas.

Grand Challenges • Muchos problemas científicos importantes son tan complejos que las simulaciones numericas

Grand Challenges • Muchos problemas científicos importantes son tan complejos que las simulaciones numericas pueden requerer mucho tiempo y recursos computacionales. Se llaman estos problemas “grand challenges”.

Supercomputadoras • Se usó este término por primera vez en 1976 para describir la

Supercomputadoras • Se usó este término por primera vez en 1976 para describir la Cray 1. Tenia un procesador • Hoy en dia una supercomputadora quiere decir una “computadora paralela” con varios procesadores

La rápidez de supercomputadoras • Se mide en “flops” (floating point operations per second)

La rápidez de supercomputadoras • Se mide en “flops” (floating point operations per second) • 1 megaflop = un millón flops • 1 gigaflop = 1000 megaflops • 1 teraflop = 1000 gigaflops • 1 petaflop = 1000 teraflops

La supercomputadora mas rápida • La Tianhe – 1 A en el Centro Nacional

La supercomputadora mas rápida • La Tianhe – 1 A en el Centro Nacional de Supercomputadora en Tianhe, China logra a 2. 57 petaflops • http: //www. top 500. org

Computadoras Paralelas Modernas • Consiste de microprocesadores • La tecnologia VLSI (“very large scale

Computadoras Paralelas Modernas • Consiste de microprocesadores • La tecnologia VLSI (“very large scale integration”) ha reducido el número de chips y asi ha reducido el costo y ha aumentendo confiabilidad (“reliability”).

El Cubo Cósmico • La primera computadora construida de microprocesadores • Constuida por Cal

El Cubo Cósmico • La primera computadora construida de microprocesadores • Constuida por Cal Tech en 1983 • Consistía de 64 microprocesadores INTEL 8086 • Se ejecutaban programas con 5 hasta 10 megaflops

Computadoras Paralelas Comericials de las 80 s y 90 s • • n. CUBE

Computadoras Paralelas Comericials de las 80 s y 90 s • • n. CUBE Connection machine MASPAR etc

Beowulf (El primer cluster) • Construido por NASA en 1994 • Construido de hardware

Beowulf (El primer cluster) • Construido por NASA en 1994 • Construido de hardware disponible en el mercardo y de software gratis • Consistia de 16 procesadores INTEL PX 4 conectados por ethernet • Usaba LINUX y compiladores GNU

Grafos de Dependencias • Se usan para indentificar operaciones que se pueden llevar a

Grafos de Dependencias • Se usan para indentificar operaciones que se pueden llevar a cabo en paralelo. • Es un grafo en lo cual cada vértice representa una tarea y hay una flecha de un vértice a otro si el segundo depende del resultado del primero

Tipos de Paralelismo • Paralelismo de datos: Tareas independientes aplican la misma operación a

Tipos de Paralelismo • Paralelismo de datos: Tareas independientes aplican la misma operación a elementos distintos de un conjunto de datos Ejemplo: for (i=0; i<100; i++) a[i]=b[i]+c[i];

Paralelismo Funcional • Tareas independientes aplican operaciones distintas a elementos de datos distintos. •

Paralelismo Funcional • Tareas independientes aplican operaciones distintas a elementos de datos distintos. • Ejemplo: a=2; b=3; m=(a+b)/2; s=(a 2+b 2)/2; v=s-m 2

Pipelining • Una computación “pipelined” es una computación que se divide en etapas. En

Pipelining • Una computación “pipelined” es una computación que se divide en etapas. En todo momento cada etapa está trabajando en una parte de la computación. La salida de una etapa es la entrada a la próxima.

¿Como se programa una computadora paralela? • Se puede extender un compilador para que

¿Como se programa una computadora paralela? • Se puede extender un compilador para que se pueda detectar paralelismo en un programa secuencial. (e. g. , funcional) • Añadir una capa de lenguaje paralelo a un lenguaje secuencial existente. • Crear un lenguaje paralelo nuevo(e. g. OCCAM) • Extender un lenguaje existente para que el usuario pueda expresar paralelismo

Ejemplos de Lenguajes Extendidos • High Performance FORTRAN, una extensión de FORTRAN 90. Contiene

Ejemplos de Lenguajes Extendidos • High Performance FORTRAN, una extensión de FORTRAN 90. Contiene nuevos enunciados y directivas. • C*, una extensión de C. Contiene nuevos tipos de datos • MPI es una biblioteca de funciones que se puede usar con C, C++, o JAVA • Open. MP