1
Computación Paralela
René Guamán-Quinche
Facultad de la Energía, las Industrias y los Recursos Naturales No Renovables
Carrera de Ingeniería en Sistemas/Computación
Mayo, 2021
Loja, Ecuador
3
1. Introducción
2. Ventajas y desventajas
3. Conceptos
4. Taxonomía de Flynn
5. Modelo basado en la organización de la Memoria
6. Medidas del paralelismo
Contenido
4
Introducción
¿Por qué recurrir a la computación paralela?
¿No es suficiente con un solo procesador para resolver cualquier
problema?
NO
Grandes problemas

Cambio global

Desastres económicos

Incendios forestales

Corrientes marinas

Visión Artificial

Servidores

Bases de datos

Gráficos online

etc
Se necesitan construir
aplicaciones relaes
5
Introducción
6
Introducción – mapa mental HPC
7
Introducción
¿Qué es supercomputing?
Incluye técnicas, métodos e infraestructuras que permiten ejecutar una aplicación en
menor tiempo o una aplicación con más datos o más compleja en el mismo tiempo
Supercomputador = infraestructura que permite aportar mayor capacidad
procesamiento, E/S y comunicación que una que no lo es

No obstante la definición de la supercomputación está cambiando
constantemente
Regla de oro: una supercomputadora es típicamente por lo menos X veces más
potente que un PC (con X>100)
Jerga: supercomputación es también llamada computación de alto rendimiento
(HPC)
8
Introducción – Fastest Supercomputer
http://www.top500.org/statistics/
treemaps/
9
Introducción – Sistemas operativos
http://www.top500.org/statistics/
treemaps/
10
Introducción
¿Qué nos preocupa?
Consumo? Green500:
supercomputadoras en el mundo de
la eficiencia energética (Mflops/W).
Prestaciones a cualquier precio =
tendencia a la baja.
Actual: mayor cómputo por W.
Green500 premia el rendimiento
con eficiencia energética en favor
de una supercomputación
sostenible.
11
Introducción
¿Que significa la supercomputación?
Tamaño

Muchos problemas, que son interesantes para los científicos, no se puede ejecutar
en un PC (porque por ejemplo necesitan más de unos cuantos cientos de GB de
RAM, o decenas de TB de disco)
Velocidad

Muchos problemas, igualmente interesantes, pueden tomar un tiempo muy, muy
largo para ejecutar en un PC (meses o incluso años).

Por ejemplo una simulación de partículas (120M - nbody) en 2 cores 76 años!, en
1024 cores menos de 9 días!
12
Introducción
13
Introducción
La tiranía de la jerarquía de almacenamiento

Paralelismo: hacer muchas cosas al mismo tiempo

Paralelismo a nivel de instrucción: hacer varias operaciones al mismo tiempo,
dentro de un solo procesador (por ejemplo, sumar, multiplicar, cargar y almacenar
al mismo tiempo)

Multiprocesamiento: múltiples CPUs trabajando en diferentes partes de un
problema al mismo tiempo

Memoria compartida (Multithreading & Multicore)

Multiprocesamiento distribuido

Compiladores de Alto Rendimiento

Las bibliotecas científicas
14
Introducción
15
Introducción
La velocidad de transferencia de
datos entre la memoria principal
y la CPU es mucho más lento que
la velocidad de cálculo, por lo
que la CPU pasa la mayor parte
de su tiempo en espera de los
datos
16
Introducción
La Caché tiene una velocidad
cercana a al velocidad de la CPU,
por lo que la CPU no tienen que
esperar casi todo el tiempo para
cosas que ya está en la memoria
caché:
se puede hacer más operaciones
por segundo!
17
Introducción

Reutilización de Registros: hacer un montón de trabajo en los mismos datos
antes de trabajar en nuevos datos

Reutilización de caché: el programa es mucho más eficaz si todos los datos y
las instrucciones entran en la memoria caché, y si no, trate de usar lo que está
en la memoria caché mucho antes de usar cualquier cosa que no está en caché

Localidad de datos: pruebas para acceder a datos que están cerca unos de otros
en la memoria antes de los datos que están lejos

Eficiencia de la E/S: hacer mucha E/S de una sola vez en lugar de a poco por
vez muchas veces (no mezclar E/S con cómputo)
18
Introducción
19
Introducción
Serial/Sequential Computing: Supongamos que
queremos hacer un rompecabezas de 256 piezas.
Tardaremos un tiempo proporcional al número de
piezas: por ejemplo el record de 256 piezas es de 17
minutos.
Shared Memory Parallelism: Un amigo se sienta
en la mesa con Ud. y trabaja en una mitad y Ud. en
la otra. De vez en cuando, puede encontrar la mano
de su amigo en la pila de piezas al mismo tiempo
(disputan el mismo recurso), lo que provocará ir
más lento
Y de vez en cuando tendrán que trabajar juntos
(comunicación) en la interface entre su mitad y la
vuestra. El aumento de velocidad será de casi 2 a 1:
los mejores valores están cerca de 9,5 minutos
20
Introducción
Si ahora invitamos a dos amigas más en los
otros dos lados de la mesa. Cada uno trabajará
en una parte del puzle, pero habrá una
contención mucho mayor para el recurso
compartido (montón de piezas) y una
comunicación mucho mayor en las interfaces
Conclusión: la velocidad resultante no será 1⁄4
sino algo así como 3 a 1: los cuatro tardarán 5,5
‘ en lugar de 4,25’
21
Introducción
Si ahora convidamos a 4 amigos más a las
puntas de la mesa tendremos un montón de
contención y de comunicaciones en muchas
interfaces lo cual perjudicará el trabajo total.
Con suerte llegaremos a 5 a 1.
Conclusión: Así podemos ver que la adición de
más y más trabajadores en un recurso
compartido tendrá (en forma generalizada) un
rendimiento decreciente.
RENDIMIENTO DECRECIENTE
22
Introducción
Paralelismo Distribuido
Hagamos una distribución diferente: ponemos dos mesas, una persona en cada mesa y con la
mitad de las piezas en cada mesa
Ellas podrán trabajar con total independencia, sin ningún tipo de contención para un recurso
compartido. PERO, el costo de la comunicación es mucho más alto y se necesita la capacidad
de dividir (descomponer) las piezas del rompecabezas en forma (razonablemente) uniforme
Más procesadores: Es mucho más fácil añadir más procesadores en paralelismo distribuido.
Pero es necesario descomponer el problema y tener comunicación entre los procesadores
Además, a medida que agregan más procesadores, puede ser más difícil de equilibrar la carga de
trabajo en cada procesador
23
Introducción
El equilibrio de carga significa dar a todos más o menos la misma cantidad de trabajo que
hacer
Por ejemplo, si el puzle tiene mitad de hierba y mitad cielo, entonces uno puede hacer la
hierba y el otro puede hacer el cielo, y luego sólo tienen que comunicar en el horizonte , y la
cantidad de trabajo que hace cada uno por su cuenta es aproximadamente igual. De manera
que obtendrá aceleración óptima.
El balanceo de carga puede ser fácil si el problema se (puede) divide en trozos de tamaño
aproximadamente igual, con un trozo por procesador. O equilibrio de carga puede ser muy
difícil. Ver puzle siguiente.
24
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
25
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
26
Conceptos
Programación concurrente: Varios procesos trabajando en la solución de
un problema, puede ser paralela (varios procesadores)
Computación heterogénea: Varios procesadores con características distintas
Programación adaptativa: Durante la ejecución el programa se adapta a las
características del sistema
Programación distribuida: Varios procesadores geográficamente
distribuidos. Hay paso de mensajes pero se necesita infraestructura especial
Computación en la web: Necesidad de herramientas que permitan la
utilización de sistemas de computación en la web
Computación cuántica o biológica
Conceptos relacionados pero no iguales
27
Conceptos
Diseño de computadores paralelos. Escalabilidad y Comunicaciones.
Diseño de algoritmos eficientes. No hay ganancia si los algoritmos no se
diseñan adecuadamente.
Métodos para evaluar los algoritmos paralelos: ¿Cómo de rápido se puede
resolver un problema usando una máquina paralela? ¿Con qué eficiencia se
usan esos procesadores?
Lenguajes para computadores paralelos, flexibles para permitir una
implementación eficiente y que sean fáciles de programar.
Herramientas para la programación paralela.
Programas paralelos portables.
Compiladores paralelizantes.
Aspectos a considerar en cuenta en la computación paralela son:
28
Conceptos
Tareitas
Son secciones lógicamente
discretas de trabajo computacional
Una tarea está compuesta de un
conjunto de instrucciones que
seran ejecutadas por un
procesador
Aspectos a considerar en cuenta en la computación paralela son:
29
Conceptos
Granularidad
Se refiere al tamaño de cada tarea y a
la independiencia de las demás tareas,
se dividen en dos categorías.
Gruesa: Cantidad relativamente
grande de trabajo, alta independencia
entre tareas y poca necesidad de
sincronización.
Fina: Cantidades pequeñas de
trabajo, poca independencia entre
tareas, y una alta demanda de
sincronización.
Aspectos a considerar en cuenta en la computación paralela son:
30
Conceptos
Scheduling
Proceso en el que las tareas son asignadas a
los procesos o hilos, y se les da un orden de
ejecución
Puede ser especificado en el código, en
tiempo de compilación o dinámicamente en
tiempo de ejecución
El proceso de scheduling debe tener en
cuenta la dependencia entre tareas, ya que,
aunque muchas pueden ser independientes,
otras pueden requerir los datos producidos
por otras tareas.
31
Conceptos
Scheduling - Criterios de planificación
Orientados al usuario:
Tiempo de vuelta: Intervalo de tiempo que transcurre entre la solicitud
de ejecución de un proceso y su terminación.
Tiempo de respuesta: Tiempo transcurrido desde que se hace una
solicitud y se empieza el proceso.
Plazos: Ocurre cuando se pueden dar plazos de ejecución de procesos,
Obligando al planificador a subordinar otros procesos.
Previsibilidad: Un proceso deberia ejecutarse en el mismo tiempo
siempre (sin importar la carga que se tenga en el sistema).
32
Conceptos
Scheduling - Criterios de planificación
Orientados al sistema:
Tasa de salida: Consiste en el numero de procesos ejecutados por unidad de
tiempo.
Utilización del proceso: Cantidad de tiempo que el procesador permanece
ocupado.
Equidad: Los procesos deben ser tratados todos de igual forma para evitar la
inanición de procesos.
Prioridades: Se debe poder tener una politica de prioridades para poder
favorecer a ciertos procesos que se consideren importantes.
Balanceo de recursos: Se debe balancear la carga del sistema de modo que
todos sus componentes se mantengan ocupados.
33
Conceptos
Scheduling
Proceso en el que las tareas son asignadas a los procesos o hilos, y se les
da un orden de ejecución
Puede ser especificado en el código, en tiempo de compilación o
dinámicamente en tiempo de ejecución
El proceso de scheduling debe tener en cuenta la dependencia entre tareas,
ya que, aunque muchas pueden ser independientes, otras pueden requerir
los datos producidos por otras tareas.
34
Clasificaciones
Los multiprocesadores se pueden clasificar
Taxonomía de
Flynn
Memoria
compartida
Memoria
distribuida
35
Taxonomía de Flynn
SISD, Simple Instruction, simple data
Un flujo de simples instrucciones opera
sobre un flujo de dados este modelo es de
von Neumann
36
Taxonomía de Flynn
SIMD, Simple Instruction, multiple
data
Un flujo de simples instrucciones opera
sobre múltiples de datos
Todos los procesadores ejecuta la misma
instrucción aunque con distintos datos
Pertenecen a los procesadores matriciales
y pipenizados
37
Taxonomía de Flynn
MISD, Multiple Instruction, simple
data
Es teorícamente equivalente al tipo SISD
38
Taxonomía de Flynn
Taxonomía de Flynn
MIMD, Multiple Instruction, multiple
data
Cada procesador ejecuta su propio código
sobre datos distintos a los de otros
procesadores
A este tipo corresponde los procesadores
paralelos
39
Modelo basado en la organización de la Memoria
Memoria Compartida
Todos los procesadores tienen acceso independientemente a una memoria común,
cad uno de ellos posse una pequeña memoria local para almacenar código y
resultados intermedios
La comunicación se realiza a través de la memoria común
La principal de este sistema es que
permite comunicaciones muy rápida
entre procesadores
Pueden generarse conflicto de acceso
a datos
40
Memoria Compartida
La interconexión puede ser por medio de un bus o una red
El acceso a memoria se puede
hacer de dos manera:

UMA

NUMA
Multiprocesdor de memoria compartida
Modelo basado en la organización de la Memoria
41
Memoria Compartida
UMA (Uniform Memory Access)

Se garantiza que el tiempo de cada procesador para acceder a cualquier una
zona de la memoria (cercana o lejana)

También se lo llama como procesadores simétrico
NUMA (Non-Uniform Memory Access)

Los procesadores pueden acceder a toda la memoria

Cada procesador tiene una memoria local

El tiempo de acceso a memoria depende de si se accede a la memoria local o
memoria remota

DSMP (distribuited shared memory multiprocessor): multiprocesdorse con
memoria compartida distribuida
Multiprocesdor de memoria compartida
Modelo basado en la organización de la Memoria
42
Memoria Compartida
Los procesadores compartirán variables: método de sincronización de acceso
(bloqueo)
Si un procesador modifica una variable compartida, las demás deben actualizar
el valor de las caches: protocolos para la coherencia de cache

Snoopy (fisgonéo): las caches locales monitorizan los buses de acceso de
memoria, y si detectan una escritura en una variable compartida,
automáticamente actualizan su copia local
Multiprocesdor de memoria compartida
Modelo basado en la organización de la Memoria
43
Modelo basado en la organización de la Memoria
44
Memoria Distribuida
Cada procesador posee su propia
memoria local inaccesible a los
demás
Los procesadores están conectados
entre si, a efectos de intercambio de
datos, mediante una rede de
interconexión
La comunicación entre procesadores
realiza mediante el paso de mensaje
(conlleva a retraso en el tiempo)
Modelo basado en la organización de la Memoria
45
Modelo basado en la organización de la Memoria
46
Modelo basado en la organización de la Memoria
SIMD-Memoria Compartida
Se caracteriza por un control centralizado y
datos centralizados
Las máquinas clásicas de este tipo son las
máquinas vectoriales mono-procesadores
con encauzamiento
Su funcionamiento: se realiza una única operación (por ejemplo, la adición) sobre un conjunto de
datos múltiples (por ejemplo, dos vectores escalar). Las operaciones se realizan de manera
secuencial pero bajo un modo de funcionamiento de encauzamiento
47
Modelo basado en la organización de la Memoria
SIMD-Memoria Distribuida
Se caracterizan por un control centralizado
y los datos distribuidos
Los procesadores de estas máquinas son de
bajo poder, y la potencia de cálculo de la
máquina paralela es obtenida por el gran
número de procesadores usados
En esta arquitectura, cada procesador tiene una memoria local pequeña y recibe las instrucciones
de una unidad de control central para ejecutar la misma instrucción, conjuntamente con el resto de
procesadores, de manera sincronizada
48
Modelo basado en la organización de la Memoria
MIMD-Memoria Compartida
En esta arquitectura, el conjunto de
procesadores comparte la misma memoria
Cada procesador puede ejecutar una
instrucción diferente y el acceso a la
memoria se hace a través de una red de
interconexión

La memoria se puede dividir en varios bancos, y en un momento dado, un banco puede
solamente ser accesado por un procesador

Llevar un código secuencial para ser ejecutado en este tipo de máquina resulta muy fácil
49
Modelo basado en la organización de la Memoria
MIMD-Memoria Compartida

La complejidad de la red de interconexión aumenta rápidamente al aumentar el número de
procesadores, ya que todos deben poder accesar de manera eficaz todos los bancos de memoria,
lo que limita su uso a un número reducido de procesadores

Por poseer pocos procesadores, se usan poderosos procesadores, de tal manera que la potencia
de la máquina paralela está dada por la potencia de los procesadores más que por el número de
ellos.
50
Medidas del paralelismo
Grado del paralelismo

El GP de un algorítmo numérico es el número de operaciones que pueden
relizarse en paralelo

Esté parámetro es específico del algoritmo y no depende del número de
procesadores del sistema

Relacionado a este concepto está la granularidad

Los parámetros más usados para medir el paralelismo de un algoritmo son:

El incremento de velocidad y

La eficiente del mismo
51
Medidas del paralelismo
Incremento de velocidad
 Se llama incremento de velocidad Sp
(speed-up) de un algoritmo paralelo al
cociente
 Sp
=tiempo de ejecución de un solo procesador / tiempo de ejecución en p
procesadores
 Sp
<= p
52
Medidas del paralelismo
Eficiencia
 La eficiencia Ep
de un algoritmo parale con respecto a si mismo, que mide el
grado de utilización de los procesadores del sistema al ejecutar en éste el
algoritmo paralelo:
 Ep
=Sp
/p

La eficiencia es menor o igual 1
El objetivo es diseñar un algoritmo paralelo y conseguir la mayor eficiencia
posible
En la práctica, la eficiencia disminuye cuando se incrementa el número de
procesadores:
53
Medidas del paralelismo
Eficiencia

Los factores que influyen en la reducción de la eficiencia

Pérdida de paralelismo del algoritmo

El tiempo requerido de comunicación entre procesadores

El tiempo requerido de sincronización entre procesadores

El desequilibrio de carga computacional
54
Cŕeditos
• Transparencias basadas por:
• Alberto Lafuente,
http://www.sc.ehu.es/acwlaroa/SDI/Apuntes/Cap1.pdf
• Alberto Lafuente,
http://www.sc.ehu.es/acwlaalm/sdi/introduccion-slides.pdf
•
Networking académico:
Correo electrónico: rguaman@unl.edu.ec
Twitter: @rene5254
SlideShare: https://es.slideshare.net/rene5254
55
Gracias

Más contenido relacionado

PDF
ESPRESIONES REGULARES
PDF
Investigación Técnicas de detección de errores de transmisión
PPTX
Tópicos Avanzados de Programación - Unidad 2 componentes y librerias
PPTX
Segmetación de instrucciones
PDF
Analisis y diseño algoritmos
PPTX
Procesadores multinucleo
PDF
AD Unidad3: Tecnologías de aplicaciones distribuidas
DOC
INTRODUCCION A LAS REDES NEURONALES ARTIFICIALES
ESPRESIONES REGULARES
Investigación Técnicas de detección de errores de transmisión
Tópicos Avanzados de Programación - Unidad 2 componentes y librerias
Segmetación de instrucciones
Analisis y diseño algoritmos
Procesadores multinucleo
AD Unidad3: Tecnologías de aplicaciones distribuidas
INTRODUCCION A LAS REDES NEURONALES ARTIFICIALES

La actualidad más candente (20)

PPTX
Control de Flujo [Telecomunicaciones]
PDF
Java Threads (Hilos en Java)
PPTX
Interbloqueo sistemas operativos
PPTX
Recursividad directa e indirecta
PPTX
Sistemas operativos distribuidos
DOCX
Metodologia web
PPTX
macros Lenguaje ensamblador
PPTX
Componentes y Librerías - Tópicos avanzados de programación.
DOCX
Modelos de alta disponibilidad
DOCX
Proyecto de redes ejemplo
PPT
Reglas de Produccion
PDF
Tema 4: Procesamiento paralelo.
PDF
Introducción a la programación paralela
PPTX
Procesos Ligeros: Hilos o Hebras
 
DOCX
Cuadro sipnotico tipos de computacion paralela
PDF
UNIDAD 2 PROGRAMACIÓN BASICA
PPTX
Fundamentos de Telecomunicaciones Unidad 2 medios de transmisión y caracterís...
DOCX
Estándares para el Modelado de Procesos de Negocios
PPTX
Dispositivos de Redes
DOCX
Cuadro comparativo de herramientas de programacion eclipse, java
Control de Flujo [Telecomunicaciones]
Java Threads (Hilos en Java)
Interbloqueo sistemas operativos
Recursividad directa e indirecta
Sistemas operativos distribuidos
Metodologia web
macros Lenguaje ensamblador
Componentes y Librerías - Tópicos avanzados de programación.
Modelos de alta disponibilidad
Proyecto de redes ejemplo
Reglas de Produccion
Tema 4: Procesamiento paralelo.
Introducción a la programación paralela
Procesos Ligeros: Hilos o Hebras
 
Cuadro sipnotico tipos de computacion paralela
UNIDAD 2 PROGRAMACIÓN BASICA
Fundamentos de Telecomunicaciones Unidad 2 medios de transmisión y caracterís...
Estándares para el Modelado de Procesos de Negocios
Dispositivos de Redes
Cuadro comparativo de herramientas de programacion eclipse, java
Publicidad

Similar a Introduccion a la computación paralela (20)

PDF
Computacion paralela
PPTX
Programacion en ambientes heterogeneos
PPTX
Introducción a la Computacion paralela
PDF
computación paralela
PPTX
Computacion paralela
PPTX
Arquitectura del sistema operativo windows
PDF
Unidad 2 clasificacion de arquitectura paralela
DOCX
Servicio cliente servidor
DOCX
Mapa conceptual computacion paralela
PPTX
Arquitectura del computador trabajo finalizado
PPTX
Sistemas operativos distribuidos
PPT
Sistema Operativo Oper Ajaja
PPT
Sistema Operativo Oper Ajaja
PPTX
Procesamiento paralelo
PDF
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
DOC
Adec -cap_7
PPTX
Computacion distribuida
PDF
Clouster y grid
PPTX
Sistemas distribuidos pnn2
Computacion paralela
Programacion en ambientes heterogeneos
Introducción a la Computacion paralela
computación paralela
Computacion paralela
Arquitectura del sistema operativo windows
Unidad 2 clasificacion de arquitectura paralela
Servicio cliente servidor
Mapa conceptual computacion paralela
Arquitectura del computador trabajo finalizado
Sistemas operativos distribuidos
Sistema Operativo Oper Ajaja
Sistema Operativo Oper Ajaja
Procesamiento paralelo
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
Adec -cap_7
Computacion distribuida
Clouster y grid
Sistemas distribuidos pnn2
Publicidad

Más de Rene Guaman-Quinche (20)

PDF
interfaces.pdf
PDF
Paradigma Programación Orientada a Objetos
PDF
Fundamentos ingeniería de requisitos.pdf
PDF
replicacion heterogenea.pdf
PDF
Elicitación de requerimientos
PDF
Arquitectura sw varios niveles.pdf
PDF
Hilos con Posix
PDF
Introducción a los sistemas distribuidos
PDF
Diagramas componentes
PDF
Diagramas de secuencia
PDF
C4model - Arquitectura de Software
PDF
Sistema de Archivos Distribuidos
PDF
Unidad 2 diseño orientado a objetos
PDF
Tiempo, causalidad y estado global
PDF
Tiempo, causalidad y estado global Alberto Lafuente Teorìa
PDF
Tiempo, causalidad y estado global Alberto Lafuente Transparencias
PDF
Ciclo de vida software
PDF
Comunicacion intra procesos con socket
PDF
Modelo paso de mensajes
interfaces.pdf
Paradigma Programación Orientada a Objetos
Fundamentos ingeniería de requisitos.pdf
replicacion heterogenea.pdf
Elicitación de requerimientos
Arquitectura sw varios niveles.pdf
Hilos con Posix
Introducción a los sistemas distribuidos
Diagramas componentes
Diagramas de secuencia
C4model - Arquitectura de Software
Sistema de Archivos Distribuidos
Unidad 2 diseño orientado a objetos
Tiempo, causalidad y estado global
Tiempo, causalidad y estado global Alberto Lafuente Teorìa
Tiempo, causalidad y estado global Alberto Lafuente Transparencias
Ciclo de vida software
Comunicacion intra procesos con socket
Modelo paso de mensajes

Último (9)

PPTX
ORIGEN DE LA IA - GRADO 1102 INTELIGENCIA
PPTX
Control de seguridad en los sitios web.pptx
PDF
Clase 3 - Presentación visual (Insertando objetos visuales) POWER POINT.pdf
PDF
Presentacion de compiladores e interpretes
PDF
DNS_SERVIDORES PARA ASER PRACTICAS EN REDES
PPTX
hojas_de_calculo_aplicado para microsoft office
PPTX
presentación de introducción a las metodologías agiles .pptx
PPTX
PROPIEDADES Y METODOS DE PrOO CON PYTHON
PPTX
Implementación equipo monitor12.08.25.pptx
ORIGEN DE LA IA - GRADO 1102 INTELIGENCIA
Control de seguridad en los sitios web.pptx
Clase 3 - Presentación visual (Insertando objetos visuales) POWER POINT.pdf
Presentacion de compiladores e interpretes
DNS_SERVIDORES PARA ASER PRACTICAS EN REDES
hojas_de_calculo_aplicado para microsoft office
presentación de introducción a las metodologías agiles .pptx
PROPIEDADES Y METODOS DE PrOO CON PYTHON
Implementación equipo monitor12.08.25.pptx

Introduccion a la computación paralela

  • 1. 1
  • 2. Computación Paralela René Guamán-Quinche Facultad de la Energía, las Industrias y los Recursos Naturales No Renovables Carrera de Ingeniería en Sistemas/Computación Mayo, 2021 Loja, Ecuador
  • 3. 3 1. Introducción 2. Ventajas y desventajas 3. Conceptos 4. Taxonomía de Flynn 5. Modelo basado en la organización de la Memoria 6. Medidas del paralelismo Contenido
  • 4. 4 Introducción ¿Por qué recurrir a la computación paralela? ¿No es suficiente con un solo procesador para resolver cualquier problema? NO Grandes problemas  Cambio global  Desastres económicos  Incendios forestales  Corrientes marinas  Visión Artificial  Servidores  Bases de datos  Gráficos online  etc Se necesitan construir aplicaciones relaes
  • 7. 7 Introducción ¿Qué es supercomputing? Incluye técnicas, métodos e infraestructuras que permiten ejecutar una aplicación en menor tiempo o una aplicación con más datos o más compleja en el mismo tiempo Supercomputador = infraestructura que permite aportar mayor capacidad procesamiento, E/S y comunicación que una que no lo es  No obstante la definición de la supercomputación está cambiando constantemente Regla de oro: una supercomputadora es típicamente por lo menos X veces más potente que un PC (con X>100) Jerga: supercomputación es también llamada computación de alto rendimiento (HPC)
  • 8. 8 Introducción – Fastest Supercomputer http://www.top500.org/statistics/ treemaps/
  • 9. 9 Introducción – Sistemas operativos http://www.top500.org/statistics/ treemaps/
  • 10. 10 Introducción ¿Qué nos preocupa? Consumo? Green500: supercomputadoras en el mundo de la eficiencia energética (Mflops/W). Prestaciones a cualquier precio = tendencia a la baja. Actual: mayor cómputo por W. Green500 premia el rendimiento con eficiencia energética en favor de una supercomputación sostenible.
  • 11. 11 Introducción ¿Que significa la supercomputación? Tamaño  Muchos problemas, que son interesantes para los científicos, no se puede ejecutar en un PC (porque por ejemplo necesitan más de unos cuantos cientos de GB de RAM, o decenas de TB de disco) Velocidad  Muchos problemas, igualmente interesantes, pueden tomar un tiempo muy, muy largo para ejecutar en un PC (meses o incluso años).  Por ejemplo una simulación de partículas (120M - nbody) en 2 cores 76 años!, en 1024 cores menos de 9 días!
  • 13. 13 Introducción La tiranía de la jerarquía de almacenamiento  Paralelismo: hacer muchas cosas al mismo tiempo  Paralelismo a nivel de instrucción: hacer varias operaciones al mismo tiempo, dentro de un solo procesador (por ejemplo, sumar, multiplicar, cargar y almacenar al mismo tiempo)  Multiprocesamiento: múltiples CPUs trabajando en diferentes partes de un problema al mismo tiempo  Memoria compartida (Multithreading & Multicore)  Multiprocesamiento distribuido  Compiladores de Alto Rendimiento  Las bibliotecas científicas
  • 15. 15 Introducción La velocidad de transferencia de datos entre la memoria principal y la CPU es mucho más lento que la velocidad de cálculo, por lo que la CPU pasa la mayor parte de su tiempo en espera de los datos
  • 16. 16 Introducción La Caché tiene una velocidad cercana a al velocidad de la CPU, por lo que la CPU no tienen que esperar casi todo el tiempo para cosas que ya está en la memoria caché: se puede hacer más operaciones por segundo!
  • 17. 17 Introducción  Reutilización de Registros: hacer un montón de trabajo en los mismos datos antes de trabajar en nuevos datos  Reutilización de caché: el programa es mucho más eficaz si todos los datos y las instrucciones entran en la memoria caché, y si no, trate de usar lo que está en la memoria caché mucho antes de usar cualquier cosa que no está en caché  Localidad de datos: pruebas para acceder a datos que están cerca unos de otros en la memoria antes de los datos que están lejos  Eficiencia de la E/S: hacer mucha E/S de una sola vez en lugar de a poco por vez muchas veces (no mezclar E/S con cómputo)
  • 19. 19 Introducción Serial/Sequential Computing: Supongamos que queremos hacer un rompecabezas de 256 piezas. Tardaremos un tiempo proporcional al número de piezas: por ejemplo el record de 256 piezas es de 17 minutos. Shared Memory Parallelism: Un amigo se sienta en la mesa con Ud. y trabaja en una mitad y Ud. en la otra. De vez en cuando, puede encontrar la mano de su amigo en la pila de piezas al mismo tiempo (disputan el mismo recurso), lo que provocará ir más lento Y de vez en cuando tendrán que trabajar juntos (comunicación) en la interface entre su mitad y la vuestra. El aumento de velocidad será de casi 2 a 1: los mejores valores están cerca de 9,5 minutos
  • 20. 20 Introducción Si ahora invitamos a dos amigas más en los otros dos lados de la mesa. Cada uno trabajará en una parte del puzle, pero habrá una contención mucho mayor para el recurso compartido (montón de piezas) y una comunicación mucho mayor en las interfaces Conclusión: la velocidad resultante no será 1⁄4 sino algo así como 3 a 1: los cuatro tardarán 5,5 ‘ en lugar de 4,25’
  • 21. 21 Introducción Si ahora convidamos a 4 amigos más a las puntas de la mesa tendremos un montón de contención y de comunicaciones en muchas interfaces lo cual perjudicará el trabajo total. Con suerte llegaremos a 5 a 1. Conclusión: Así podemos ver que la adición de más y más trabajadores en un recurso compartido tendrá (en forma generalizada) un rendimiento decreciente. RENDIMIENTO DECRECIENTE
  • 22. 22 Introducción Paralelismo Distribuido Hagamos una distribución diferente: ponemos dos mesas, una persona en cada mesa y con la mitad de las piezas en cada mesa Ellas podrán trabajar con total independencia, sin ningún tipo de contención para un recurso compartido. PERO, el costo de la comunicación es mucho más alto y se necesita la capacidad de dividir (descomponer) las piezas del rompecabezas en forma (razonablemente) uniforme Más procesadores: Es mucho más fácil añadir más procesadores en paralelismo distribuido. Pero es necesario descomponer el problema y tener comunicación entre los procesadores Además, a medida que agregan más procesadores, puede ser más difícil de equilibrar la carga de trabajo en cada procesador
  • 23. 23 Introducción El equilibrio de carga significa dar a todos más o menos la misma cantidad de trabajo que hacer Por ejemplo, si el puzle tiene mitad de hierba y mitad cielo, entonces uno puede hacer la hierba y el otro puede hacer el cielo, y luego sólo tienen que comunicar en el horizonte , y la cantidad de trabajo que hace cada uno por su cuenta es aproximadamente igual. De manera que obtendrá aceleración óptima. El balanceo de carga puede ser fácil si el problema se (puede) divide en trozos de tamaño aproximadamente igual, con un trozo por procesador. O equilibrio de carga puede ser muy difícil. Ver puzle siguiente.
  • 24. 24 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
  • 25. 25 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
  • 26. 26 Conceptos Programación concurrente: Varios procesos trabajando en la solución de un problema, puede ser paralela (varios procesadores) Computación heterogénea: Varios procesadores con características distintas Programación adaptativa: Durante la ejecución el programa se adapta a las características del sistema Programación distribuida: Varios procesadores geográficamente distribuidos. Hay paso de mensajes pero se necesita infraestructura especial Computación en la web: Necesidad de herramientas que permitan la utilización de sistemas de computación en la web Computación cuántica o biológica Conceptos relacionados pero no iguales
  • 27. 27 Conceptos Diseño de computadores paralelos. Escalabilidad y Comunicaciones. Diseño de algoritmos eficientes. No hay ganancia si los algoritmos no se diseñan adecuadamente. Métodos para evaluar los algoritmos paralelos: ¿Cómo de rápido se puede resolver un problema usando una máquina paralela? ¿Con qué eficiencia se usan esos procesadores? Lenguajes para computadores paralelos, flexibles para permitir una implementación eficiente y que sean fáciles de programar. Herramientas para la programación paralela. Programas paralelos portables. Compiladores paralelizantes. Aspectos a considerar en cuenta en la computación paralela son:
  • 28. 28 Conceptos Tareitas Son secciones lógicamente discretas de trabajo computacional Una tarea está compuesta de un conjunto de instrucciones que seran ejecutadas por un procesador Aspectos a considerar en cuenta en la computación paralela son:
  • 29. 29 Conceptos Granularidad Se refiere al tamaño de cada tarea y a la independiencia de las demás tareas, se dividen en dos categorías. Gruesa: Cantidad relativamente grande de trabajo, alta independencia entre tareas y poca necesidad de sincronización. Fina: Cantidades pequeñas de trabajo, poca independencia entre tareas, y una alta demanda de sincronización. Aspectos a considerar en cuenta en la computación paralela son:
  • 30. 30 Conceptos Scheduling Proceso en el que las tareas son asignadas a los procesos o hilos, y se les da un orden de ejecución Puede ser especificado en el código, en tiempo de compilación o dinámicamente en tiempo de ejecución El proceso de scheduling debe tener en cuenta la dependencia entre tareas, ya que, aunque muchas pueden ser independientes, otras pueden requerir los datos producidos por otras tareas.
  • 31. 31 Conceptos Scheduling - Criterios de planificación Orientados al usuario: Tiempo de vuelta: Intervalo de tiempo que transcurre entre la solicitud de ejecución de un proceso y su terminación. Tiempo de respuesta: Tiempo transcurrido desde que se hace una solicitud y se empieza el proceso. Plazos: Ocurre cuando se pueden dar plazos de ejecución de procesos, Obligando al planificador a subordinar otros procesos. Previsibilidad: Un proceso deberia ejecutarse en el mismo tiempo siempre (sin importar la carga que se tenga en el sistema).
  • 32. 32 Conceptos Scheduling - Criterios de planificación Orientados al sistema: Tasa de salida: Consiste en el numero de procesos ejecutados por unidad de tiempo. Utilización del proceso: Cantidad de tiempo que el procesador permanece ocupado. Equidad: Los procesos deben ser tratados todos de igual forma para evitar la inanición de procesos. Prioridades: Se debe poder tener una politica de prioridades para poder favorecer a ciertos procesos que se consideren importantes. Balanceo de recursos: Se debe balancear la carga del sistema de modo que todos sus componentes se mantengan ocupados.
  • 33. 33 Conceptos Scheduling Proceso en el que las tareas son asignadas a los procesos o hilos, y se les da un orden de ejecución Puede ser especificado en el código, en tiempo de compilación o dinámicamente en tiempo de ejecución El proceso de scheduling debe tener en cuenta la dependencia entre tareas, ya que, aunque muchas pueden ser independientes, otras pueden requerir los datos producidos por otras tareas.
  • 34. 34 Clasificaciones Los multiprocesadores se pueden clasificar Taxonomía de Flynn Memoria compartida Memoria distribuida
  • 35. 35 Taxonomía de Flynn SISD, Simple Instruction, simple data Un flujo de simples instrucciones opera sobre un flujo de dados este modelo es de von Neumann
  • 36. 36 Taxonomía de Flynn SIMD, Simple Instruction, multiple data Un flujo de simples instrucciones opera sobre múltiples de datos Todos los procesadores ejecuta la misma instrucción aunque con distintos datos Pertenecen a los procesadores matriciales y pipenizados
  • 37. 37 Taxonomía de Flynn MISD, Multiple Instruction, simple data Es teorícamente equivalente al tipo SISD
  • 38. 38 Taxonomía de Flynn Taxonomía de Flynn MIMD, Multiple Instruction, multiple data Cada procesador ejecuta su propio código sobre datos distintos a los de otros procesadores A este tipo corresponde los procesadores paralelos
  • 39. 39 Modelo basado en la organización de la Memoria Memoria Compartida Todos los procesadores tienen acceso independientemente a una memoria común, cad uno de ellos posse una pequeña memoria local para almacenar código y resultados intermedios La comunicación se realiza a través de la memoria común La principal de este sistema es que permite comunicaciones muy rápida entre procesadores Pueden generarse conflicto de acceso a datos
  • 40. 40 Memoria Compartida La interconexión puede ser por medio de un bus o una red El acceso a memoria se puede hacer de dos manera:  UMA  NUMA Multiprocesdor de memoria compartida Modelo basado en la organización de la Memoria
  • 41. 41 Memoria Compartida UMA (Uniform Memory Access)  Se garantiza que el tiempo de cada procesador para acceder a cualquier una zona de la memoria (cercana o lejana)  También se lo llama como procesadores simétrico NUMA (Non-Uniform Memory Access)  Los procesadores pueden acceder a toda la memoria  Cada procesador tiene una memoria local  El tiempo de acceso a memoria depende de si se accede a la memoria local o memoria remota  DSMP (distribuited shared memory multiprocessor): multiprocesdorse con memoria compartida distribuida Multiprocesdor de memoria compartida Modelo basado en la organización de la Memoria
  • 42. 42 Memoria Compartida Los procesadores compartirán variables: método de sincronización de acceso (bloqueo) Si un procesador modifica una variable compartida, las demás deben actualizar el valor de las caches: protocolos para la coherencia de cache  Snoopy (fisgonéo): las caches locales monitorizan los buses de acceso de memoria, y si detectan una escritura en una variable compartida, automáticamente actualizan su copia local Multiprocesdor de memoria compartida Modelo basado en la organización de la Memoria
  • 43. 43 Modelo basado en la organización de la Memoria
  • 44. 44 Memoria Distribuida Cada procesador posee su propia memoria local inaccesible a los demás Los procesadores están conectados entre si, a efectos de intercambio de datos, mediante una rede de interconexión La comunicación entre procesadores realiza mediante el paso de mensaje (conlleva a retraso en el tiempo) Modelo basado en la organización de la Memoria
  • 45. 45 Modelo basado en la organización de la Memoria
  • 46. 46 Modelo basado en la organización de la Memoria SIMD-Memoria Compartida Se caracteriza por un control centralizado y datos centralizados Las máquinas clásicas de este tipo son las máquinas vectoriales mono-procesadores con encauzamiento Su funcionamiento: se realiza una única operación (por ejemplo, la adición) sobre un conjunto de datos múltiples (por ejemplo, dos vectores escalar). Las operaciones se realizan de manera secuencial pero bajo un modo de funcionamiento de encauzamiento
  • 47. 47 Modelo basado en la organización de la Memoria SIMD-Memoria Distribuida Se caracterizan por un control centralizado y los datos distribuidos Los procesadores de estas máquinas son de bajo poder, y la potencia de cálculo de la máquina paralela es obtenida por el gran número de procesadores usados En esta arquitectura, cada procesador tiene una memoria local pequeña y recibe las instrucciones de una unidad de control central para ejecutar la misma instrucción, conjuntamente con el resto de procesadores, de manera sincronizada
  • 48. 48 Modelo basado en la organización de la Memoria MIMD-Memoria Compartida En esta arquitectura, el conjunto de procesadores comparte la misma memoria Cada procesador puede ejecutar una instrucción diferente y el acceso a la memoria se hace a través de una red de interconexión  La memoria se puede dividir en varios bancos, y en un momento dado, un banco puede solamente ser accesado por un procesador  Llevar un código secuencial para ser ejecutado en este tipo de máquina resulta muy fácil
  • 49. 49 Modelo basado en la organización de la Memoria MIMD-Memoria Compartida  La complejidad de la red de interconexión aumenta rápidamente al aumentar el número de procesadores, ya que todos deben poder accesar de manera eficaz todos los bancos de memoria, lo que limita su uso a un número reducido de procesadores  Por poseer pocos procesadores, se usan poderosos procesadores, de tal manera que la potencia de la máquina paralela está dada por la potencia de los procesadores más que por el número de ellos.
  • 50. 50 Medidas del paralelismo Grado del paralelismo  El GP de un algorítmo numérico es el número de operaciones que pueden relizarse en paralelo  Esté parámetro es específico del algoritmo y no depende del número de procesadores del sistema  Relacionado a este concepto está la granularidad  Los parámetros más usados para medir el paralelismo de un algoritmo son:  El incremento de velocidad y  La eficiente del mismo
  • 51. 51 Medidas del paralelismo Incremento de velocidad  Se llama incremento de velocidad Sp (speed-up) de un algoritmo paralelo al cociente  Sp =tiempo de ejecución de un solo procesador / tiempo de ejecución en p procesadores  Sp <= p
  • 52. 52 Medidas del paralelismo Eficiencia  La eficiencia Ep de un algoritmo parale con respecto a si mismo, que mide el grado de utilización de los procesadores del sistema al ejecutar en éste el algoritmo paralelo:  Ep =Sp /p  La eficiencia es menor o igual 1 El objetivo es diseñar un algoritmo paralelo y conseguir la mayor eficiencia posible En la práctica, la eficiencia disminuye cuando se incrementa el número de procesadores:
  • 53. 53 Medidas del paralelismo Eficiencia  Los factores que influyen en la reducción de la eficiencia  Pérdida de paralelismo del algoritmo  El tiempo requerido de comunicación entre procesadores  El tiempo requerido de sincronización entre procesadores  El desequilibrio de carga computacional
  • 54. 54 Cŕeditos • Transparencias basadas por: • Alberto Lafuente, http://www.sc.ehu.es/acwlaroa/SDI/Apuntes/Cap1.pdf • Alberto Lafuente, http://www.sc.ehu.es/acwlaalm/sdi/introduccion-slides.pdf •
  • 55. Networking académico: Correo electrónico: rguaman@unl.edu.ec Twitter: @rene5254 SlideShare: https://es.slideshare.net/rene5254 55 Gracias