La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

El Paralelismo en la informática. Introducción El paralelismo es una técnica de computación basada en principios aparentemente simples: "Divida un gran.

Presentaciones similares


Presentación del tema: "El Paralelismo en la informática. Introducción El paralelismo es una técnica de computación basada en principios aparentemente simples: "Divida un gran."— Transcripción de la presentación:

1 El Paralelismo en la informática

2 Introducción El paralelismo es una técnica de computación basada en principios aparentemente simples: "Divida un gran problema en varios pequeños y resuélvalos al mismo tiempo" Esto permite ejecutar más instrucciones en menos tiempo. Pero cuando se pone en práctica, se trata de un tema muy complejo y varios grupos científicos de todo el mundo lo están investigando. La computación paralela es el uso de múltiples recursos computacionales para resolver un problema. Se distingue de la computación secuencial en que varias operaciones pueden ocurrir simultáneamente. El paralelismo clásico, o puesto de otra manera, el clásico uso del paralelismo es el de diseño de programas eficientes en el ámbito científico. La simulación de problemas científicos es un área de gran importancia, los cuales requieren de una gran capacidad de procesamiento y de espacio de memoria, debido a las complejas operaciones que se deben realizar. Otro uso clásico es el de las gráficas generadas por computadora. La generación de fotogramas requiere de una gran cantidad de cálculos matemáticos. Esto supone una tarea muy compleja para un solo procesador, luego es necesario que haya algún tipo de paralelismo, para distribuir la tarea para que esta sea realizada eficiente y eficazmente. h

3 EL PARALELISMO es una función que realiza el procesador para ejecutar varias tareas al mismo tiempo. Es decir, puede realizar varios cálculos simultáneamente, basado en el principio de dividir los problemas grandes para obtener varios problemas pequeños, que son posteriormente solucionados en paralelo. En un sistema mono-procesador, la existencia de multi- programación es condición necesaria, pero no suficiente para que exista concurrencia, ya que los procesos pueden ejecutarse de forma totalmente independiente. Por ejemplo, un editor y un compilador pueden estar ejecutándose simultáneamente en una computadora sin que exista concurrencia entre ellos. Por otro lado, si un programa también en ejecución está leyendo datos de ese mismo archivo, sí existe concurrencia entre ellos, pues el funcionamiento de uno interfiere en el otro. Si un sistema es multi-procesador, también pueden presentarse situaciones de concurrencia siempre y cuando las actividades necesiten actuar entre sí, bien por utilizar información común, o por cualquier otra causa.

4 Tipos de paralelismo informática Nivel de bit. Nivel de instrucción. Nivel de datos. Nivel de tarea. El paralelismo o procesamiento paralelo ha sido empleado durante muchos años, sobre todo para la computación de alto rendimiento, teniendo en cuenta las generaciones de procesadores y sus características.

5 Desventajas Requieren de un gran número de ciclos de procesamiento o acceso a una gran cantidad de datos. Encontrar un hardware y un software que permitan brindar estas utilidades comúnmente proporciona inconvenientes de costos, seguridad y disponibilidad. Ventajas Brinda a las empresas, instituciones y usuarios en general el beneficio de la velocidad. Ventaja competitiva, provee una mejora de los tiempos para la producción de nuevos productos y servicios. Colaboración y flexibilidad operacional.

6 Filosofía ¿Qué es computación paralela? En el sentido más simple, la computación paralela es el uso simultáneo de múltiples recursos computacionales para resolver un problema computacional: Un problema se divide en partes discretas que se pueden resolver simultáneamente Cada parte se descompone en una serie de instrucciones Las instrucciones de cada parte se ejecutan simultáneamente en diferentes procesadores Se emplea un mecanismo global de control/coordinación

7 ¿Por qué se hace programación paralela?

8 Paradigma Programación Paralela El hecho de que la programación paralela sea un paradigma da cuenta de que existe una razón por la cual no ha dejado de ser necesaria o no ha sido totalmente automatizable, igualmente hay otras razones interesantes detrás para entender la existencia, actualidad y contemporaneidad de la programación paralela:

9 Programación Paralela  Overclocking infinito: El overclokcing tiene un límite a pesar de que existiera una refrigeración perpetúa y adecuada del procesador. Esto es debido a las corrientes parásitas que impiden una velocidad teóricamente infinita a la cual los circuitos pueden cambiar entre estados, o de hecho sus transistores.  Automatización del paralelismo: Se dice en este paradigma que el éxito es inversamente proporcional al número de Cores precisamente porque existen complejidades en el corazón del paralelismo que implican cosas que todavía no se pueden predecir ni con inteligencia artificial, en este mismo artículo de hecho se menciona cuáles son las posibles estrategias para atacar un problema de forma paralela, esto da cuenta de que existe una forma prácticamente determinada de abordarlos pero no se automatizarlos, a pesar de que sí existan algunas partes que son automatizables en el proceso.  Solución en el hardware: Un diseño adecuado del hardware permitiría que la paralelización siempre estuviera presente con respecto a los procesadores que se están usando de tal modo que alguno los problemas que son inherentes al paradigma pudieran evitarse. Esto ha resultado imposible hasta la fecha, de hecho, solo diseñar solamente algo tan efectivo y tradicional como se ha hecho en programación secuencial es algo que no existe hasta ahora. Existen algunas aproximaciones como OpenMP de las que hablaremos más adelante

10 Historia En 1837 el profesor británico Charles Babbage hace la primera descripción de la máquina analítica. Con la idea de la máquina analítica posteriormente se daría origen a teorías de paralelismo. En 1842 el profesor Babbage y el matemático italiano Luigi Menabrea, se encontraron durante un viaje por el este de Italia, que daría como resultado la primera publicación en francés de la máquina analítica. Al año siguiente en 1843, la publicación del matemático Menabrea es traducida del francés al inglés por Ada Lovelace. Lovelace daría su aporte a esta publicación con el primer algoritmo para ser procesado por una máquina. Por este aporte es conocida como la primera programadora de ordenadores. 1954 IBM introduce al mercado el IBM 704. En 1958 S. Gill Ferranti habló sobre programación paralela y la necesidad de “branching” y “waiting”. También en 1958, Investigadores de IBM, Cocke y Slotnick, discutieron el uso de paralelismo en cálculos numéricos por primera vez. Este último propone SOLOMON, el cual fue un proyecto para hacer un super computador que nunca se llevo a cabo, pero su diseño sirvió como base para el desarrollo de proyectos futuros. En 1962 Burroughs Corporation creó un computador de 4 procesadores que accedía a 16 módulos de memoria. Ese mismo año se computador ATLAS entra en operación, es la primera máquina en implementar los conceptos de memoria virtual y paginación. Luego en 1964 La fuerza aérea estadounidense, USAF, financió el diseño del primer computador paralelo masivo ILLIAC IV. (256 procesadores). Slotnick es contratado para empezar el proyecto (usando como contratatistas, por ejemplo, a Texas Instruments) En 1965 Dijkstra describe y da nombre el problema de las secciones críticas.

11 Historia Ese mismo año, Cooley y Tukey, desarrollan el algoritmo de la transformada rápida de Fourier, el cual sería una de los algoritmos que más ciclos de operaciones de punto flotante demandan Amdahl y Slotnick debatieron sobre la viabilidad del procesamiento en paralelo en 1967. De estos debates surgió la ley de Amdahl. En 1968 Dijkstra describe los semáforos como posible solución al problema de las secciones críticas. Desde 1968 hasta 1976 se desarrollan diferentes proyectos en EEUU, Rusia, Japón y algunos paises europeos. La industria tecnológica y las universidades son los sectores que más invierten en investigación sobre paralelismo. Primera aplicación corriendo en ILLIAC IV (1976). Por esta razón este computador fue llamado “the most infamous of the supercomputers”, ya que solo fue completado en un 25%, tomó 11 años y 4 veces más al costo estimado. Finalmente, en 1981 es desmantelado el proyecto ILLIAC IV por la NASA. Aunque se afirma que fue un fracaso en términos económicos, llego a ser el computador más rápido de la época y varios conceptos importantes usados en la construcción del ILLIAC IV se terminan implementando de futuros proyectos de manera exitosa.

12 Historia A mediados de los 80, un nuevo tipo de computador paralelo fue creado cuando el proyecto “Concurrent Computation” de Caltech construyó un supercomputador para aplicaciones científicas. El sistema mostró que se podría lograr un rendimiento extremo usando microprocesadores regulares, disponibles en el mercado. Empezando a los finales de los 80, los clusters surgieron para competir y con los MPP. Un cluster es un tipo de computador paralelo, construido usando múltiples computadores “off-the-shelf”, conectados usando una red “off-the-shelf”. Hoy en día, los clusters son la arquitectura dominante en los datacenters. Para los MPP (Massively Parallel Processor) y clusters surgió el estándar MPI (Interfaz de Paso de Mensajes) a mediados de los 90, que convergió de otras API. Para los multiprocesadores con memoria compartida, un proceso de convergencia similar se observó a finales de los 90, con el surgimiento de pthreads y OpenMP. En la actualidad, la computación paralela se encuentra en la cotidianidad, con la llegada de los procesadores de varios núcleos físicos casi por defecto en la mayoría de dispositivos computacionales. El software ha sido una parte activa en la evolución de la programación paralela. Los programas paralelos son más difíciles de escribir que los programas secuenciales, ya que se requiere que haya una comunicación y sincronización entre las tareas que se han paralelizado.

13 Ventajas Resuelve problemas que no se podrían realizar en una sola CPU Resuelve problemas que no se pueden resolver en un tiempo razonable Permite ejecutar problemas de un orden y complejidad mayor Permite ejecutar código de manera más rápida (aceleración) Permite ejecutar en general más problemas Obtención de resultados en menos tiempo Permite la ejecución de varias instrucciones en simultáneo Permite dividir una tarea en partes independientes Ofrece mejor balance entre rendimiento y costo que la computación secuencial Gran expansión y escalabilidad

14 Desventajas Mayor consumo de energía Mayor dificultad a la hora de escribir programas Dificultad para lograr una buena sincronización y comunicación entre las tareas Retardos ocasionados por comunicación ente tareas Número de componentes usados es directamente proporcional a los fallos potenciales Altos costos por producción y mantenimiento Condiciones de carrera Múltiples procesos se encuentran en condición de carrera si el resultado de los mismos depende del orden de su llegada Si los procesos que están en condición de carrera no son correctamente sincronizados, puede producirse una corrupción de datos


Descargar ppt "El Paralelismo en la informática. Introducción El paralelismo es una técnica de computación basada en principios aparentemente simples: "Divida un gran."

Presentaciones similares


Anuncios Google