SlideShare una empresa de Scribd logo
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

La actualidad más candente

Estados de un proceso
Estados de un procesoEstados de un proceso
Estados de un proceso
i92almaa
 
Analizador Sintáctico
Analizador SintácticoAnalizador Sintáctico
Analizador Sintáctico
Pablo Guerra
 
Unidad 3 topicos avanzados de programacion
Unidad 3 topicos avanzados de programacionUnidad 3 topicos avanzados de programacion
Unidad 3 topicos avanzados de programacionIrving Che
 
Taller de Base de Datos - Unidad 6 SQL procedural
Taller de Base de Datos - Unidad 6 SQL proceduralTaller de Base de Datos - Unidad 6 SQL procedural
Taller de Base de Datos - Unidad 6 SQL procedural
José Antonio Sandoval Acosta
 
UNIDAD 3 MODULARIZACIÓN
UNIDAD 3 MODULARIZACIÓNUNIDAD 3 MODULARIZACIÓN
DISPOSITIVOS Y MANEJADORES DE DISPOSITIVOS
DISPOSITIVOS Y MANEJADORES DE DISPOSITIVOSDISPOSITIVOS Y MANEJADORES DE DISPOSITIVOS
DISPOSITIVOS Y MANEJADORES DE DISPOSITIVOSGonzalo Murga Sotelo
 
Hilos hebras
Hilos hebrasHilos hebras
Hilos hebras
John Goyeneche
 
Tecnicas de Administracion de Memoria
Tecnicas de Administracion de MemoriaTecnicas de Administracion de Memoria
Tecnicas de Administracion de Memoria
Ashley Stronghold Witwicky
 
Gestion de Memoria
Gestion de MemoriaGestion de Memoria
Gestion de Memoria
Julio Cesar Mendez Cuevas
 
Porque es importante estudiar los sistemas operativos en su carrera profesional
Porque es importante estudiar los sistemas operativos en su carrera profesionalPorque es importante estudiar los sistemas operativos en su carrera profesional
Porque es importante estudiar los sistemas operativos en su carrera profesional
Jhosep Teofilo Flores Prado
 
Procesos e Hilos en los Sistemas Operativos
Procesos e Hilos en los Sistemas OperativosProcesos e Hilos en los Sistemas Operativos
Procesos e Hilos en los Sistemas Operativos
Emmanuel Fortuna
 
Sistemas operativos procesos
Sistemas operativos procesosSistemas operativos procesos
Sistemas operativos procesossistoperativos
 
Tópicos Avanzados de Programación - Unidad 3 programacion concurrente
Tópicos Avanzados de Programación - Unidad 3 programacion concurrenteTópicos Avanzados de Programación - Unidad 3 programacion concurrente
Tópicos Avanzados de Programación - Unidad 3 programacion concurrente
José Antonio Sandoval Acosta
 
Tópicos Avanzados de Programación - Unidad 1 GUI
Tópicos Avanzados de Programación - Unidad 1 GUITópicos Avanzados de Programación - Unidad 1 GUI
Tópicos Avanzados de Programación - Unidad 1 GUI
José Antonio Sandoval Acosta
 
Acceso Directo a la Memoria - DMA
Acceso Directo a la Memoria - DMAAcceso Directo a la Memoria - DMA
Acceso Directo a la Memoria - DMA
Erika Rodríguez
 
Analizador Léxico en C++
Analizador Léxico en C++Analizador Léxico en C++
Analizador Léxico en C++
Eduardo Chavez Vasquez
 
Sistemas operativos distribuidos
Sistemas operativos distribuidosSistemas operativos distribuidos
Sistemas operativos distribuidos
Christian19121
 
Descomposición modular y estilos de control
Descomposición modular y estilos de controlDescomposición modular y estilos de control
Descomposición modular y estilos de control
Juan Pablo Bustos Thames
 
Estructura de datos presentacion y sesion 1
Estructura de datos presentacion y sesion 1Estructura de datos presentacion y sesion 1
Estructura de datos presentacion y sesion 1
Jesús Gómez Ávila
 

La actualidad más candente (20)

Estados de un proceso
Estados de un procesoEstados de un proceso
Estados de un proceso
 
Analizador Sintáctico
Analizador SintácticoAnalizador Sintáctico
Analizador Sintáctico
 
Unidad 3 topicos avanzados de programacion
Unidad 3 topicos avanzados de programacionUnidad 3 topicos avanzados de programacion
Unidad 3 topicos avanzados de programacion
 
Taller de Base de Datos - Unidad 6 SQL procedural
Taller de Base de Datos - Unidad 6 SQL proceduralTaller de Base de Datos - Unidad 6 SQL procedural
Taller de Base de Datos - Unidad 6 SQL procedural
 
UNIDAD 3 MODULARIZACIÓN
UNIDAD 3 MODULARIZACIÓNUNIDAD 3 MODULARIZACIÓN
UNIDAD 3 MODULARIZACIÓN
 
DISPOSITIVOS Y MANEJADORES DE DISPOSITIVOS
DISPOSITIVOS Y MANEJADORES DE DISPOSITIVOSDISPOSITIVOS Y MANEJADORES DE DISPOSITIVOS
DISPOSITIVOS Y MANEJADORES DE DISPOSITIVOS
 
Hilos hebras
Hilos hebrasHilos hebras
Hilos hebras
 
Tecnicas de Administracion de Memoria
Tecnicas de Administracion de MemoriaTecnicas de Administracion de Memoria
Tecnicas de Administracion de Memoria
 
Arquitecturas de computadoras
Arquitecturas de computadorasArquitecturas de computadoras
Arquitecturas de computadoras
 
Gestion de Memoria
Gestion de MemoriaGestion de Memoria
Gestion de Memoria
 
Porque es importante estudiar los sistemas operativos en su carrera profesional
Porque es importante estudiar los sistemas operativos en su carrera profesionalPorque es importante estudiar los sistemas operativos en su carrera profesional
Porque es importante estudiar los sistemas operativos en su carrera profesional
 
Procesos e Hilos en los Sistemas Operativos
Procesos e Hilos en los Sistemas OperativosProcesos e Hilos en los Sistemas Operativos
Procesos e Hilos en los Sistemas Operativos
 
Sistemas operativos procesos
Sistemas operativos procesosSistemas operativos procesos
Sistemas operativos procesos
 
Tópicos Avanzados de Programación - Unidad 3 programacion concurrente
Tópicos Avanzados de Programación - Unidad 3 programacion concurrenteTópicos Avanzados de Programación - Unidad 3 programacion concurrente
Tópicos Avanzados de Programación - Unidad 3 programacion concurrente
 
Tópicos Avanzados de Programación - Unidad 1 GUI
Tópicos Avanzados de Programación - Unidad 1 GUITópicos Avanzados de Programación - Unidad 1 GUI
Tópicos Avanzados de Programación - Unidad 1 GUI
 
Acceso Directo a la Memoria - DMA
Acceso Directo a la Memoria - DMAAcceso Directo a la Memoria - DMA
Acceso Directo a la Memoria - DMA
 
Analizador Léxico en C++
Analizador Léxico en C++Analizador Léxico en C++
Analizador Léxico en C++
 
Sistemas operativos distribuidos
Sistemas operativos distribuidosSistemas operativos distribuidos
Sistemas operativos distribuidos
 
Descomposición modular y estilos de control
Descomposición modular y estilos de controlDescomposición modular y estilos de control
Descomposición modular y estilos de control
 
Estructura de datos presentacion y sesion 1
Estructura de datos presentacion y sesion 1Estructura de datos presentacion y sesion 1
Estructura de datos presentacion y sesion 1
 

Similar a Introduccion a la computación paralela

Introducción a la Computacion paralela
Introducción a la Computacion paralelaIntroducción a la Computacion paralela
Introducción a la Computacion paralela
Ernesto Cardenas Cangahuala
 
arquitectura del computador
arquitectura del computador arquitectura del computador
arquitectura del computador
baryruiz
 
arquitectura del computador 1
arquitectura del computador 1arquitectura del computador 1
arquitectura del computador 1
baryruiz
 
computación paralela
computación paralelacomputación paralela
computación paralela
Yazmin Polanco
 
Programacion en ambientes heterogeneos
Programacion en ambientes heterogeneosProgramacion en ambientes heterogeneos
Programacion en ambientes heterogeneos
itatitat
 
Multithreading a la manera de Delphi
Multithreading a la manera de DelphiMultithreading a la manera de Delphi
Multithreading a la manera de DelphiMayra Mendieta
 
Algoritmos Paralelos
Algoritmos ParalelosAlgoritmos Paralelos
Algoritmos Paralelos
RayNunezEspino
 
arquitectura del computador
arquitectura del computador arquitectura del computador
arquitectura del computador
baryruiz
 
Cap i sistemas operativos (1)
Cap i sistemas operativos (1)Cap i sistemas operativos (1)
Cap i sistemas operativos (1)
informatico tic
 
tercera unidad :3
tercera unidad :3tercera unidad :3
tercera unidad :3
irisdelc
 
Trabajo diego.exposición
Trabajo diego.exposiciónTrabajo diego.exposición
Trabajo diego.exposiciónDiego032
 
Mapa conceptual computacion paralela
Mapa conceptual   computacion paralelaMapa conceptual   computacion paralela
Mapa conceptual computacion paralelaEduardo Suarez
 
Equipo 2 - Exposición.pptx
Equipo 2 - Exposición.pptxEquipo 2 - Exposición.pptx
Equipo 2 - Exposición.pptx
JuanVaggom
 
Bd no sqlcb2
Bd no sqlcb2Bd no sqlcb2
Presentación1.pptx maria
Presentación1.pptx mariaPresentación1.pptx maria
Presentación1.pptx maria
majito_bonilla
 
Presentación1.pptx maria
Presentación1.pptx mariaPresentación1.pptx maria
Presentación1.pptx mariamajito_bonilla
 
Algoritmos paralelos
 Algoritmos paralelos Algoritmos paralelos
Algoritmos paralelos
Emanuele Mascilongo
 
Tipos de sistemas
Tipos de sistemasTipos de sistemas
Tipos de sistemas
5Mary
 
Tarea n1
Tarea n1Tarea n1
Tarea n1
ALEXF03
 
Historia de los sistemas operativos
Historia de los sistemas operativosHistoria de los sistemas operativos
Historia de los sistemas operativosdemoniac23
 

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

Introducción a la Computacion paralela
Introducción a la Computacion paralelaIntroducción a la Computacion paralela
Introducción a la Computacion paralela
 
arquitectura del computador
arquitectura del computador arquitectura del computador
arquitectura del computador
 
arquitectura del computador 1
arquitectura del computador 1arquitectura del computador 1
arquitectura del computador 1
 
computación paralela
computación paralelacomputación paralela
computación paralela
 
Programacion en ambientes heterogeneos
Programacion en ambientes heterogeneosProgramacion en ambientes heterogeneos
Programacion en ambientes heterogeneos
 
Multithreading a la manera de Delphi
Multithreading a la manera de DelphiMultithreading a la manera de Delphi
Multithreading a la manera de Delphi
 
Algoritmos Paralelos
Algoritmos ParalelosAlgoritmos Paralelos
Algoritmos Paralelos
 
arquitectura del computador
arquitectura del computador arquitectura del computador
arquitectura del computador
 
Cap i sistemas operativos (1)
Cap i sistemas operativos (1)Cap i sistemas operativos (1)
Cap i sistemas operativos (1)
 
tercera unidad :3
tercera unidad :3tercera unidad :3
tercera unidad :3
 
Trabajo diego.exposición
Trabajo diego.exposiciónTrabajo diego.exposición
Trabajo diego.exposición
 
Mapa conceptual computacion paralela
Mapa conceptual   computacion paralelaMapa conceptual   computacion paralela
Mapa conceptual computacion paralela
 
Equipo 2 - Exposición.pptx
Equipo 2 - Exposición.pptxEquipo 2 - Exposición.pptx
Equipo 2 - Exposición.pptx
 
Bd no sqlcb2
Bd no sqlcb2Bd no sqlcb2
Bd no sqlcb2
 
Presentación1.pptx maria
Presentación1.pptx mariaPresentación1.pptx maria
Presentación1.pptx maria
 
Presentación1.pptx maria
Presentación1.pptx mariaPresentación1.pptx maria
Presentación1.pptx maria
 
Algoritmos paralelos
 Algoritmos paralelos Algoritmos paralelos
Algoritmos paralelos
 
Tipos de sistemas
Tipos de sistemasTipos de sistemas
Tipos de sistemas
 
Tarea n1
Tarea n1Tarea n1
Tarea n1
 
Historia de los sistemas operativos
Historia de los sistemas operativosHistoria de los sistemas operativos
Historia de los sistemas operativos
 

Más de Rene Guaman-Quinche

interfaces.pdf
interfaces.pdfinterfaces.pdf
interfaces.pdf
Rene Guaman-Quinche
 
Paradigma Programación Orientada a Objetos
Paradigma Programación Orientada a ObjetosParadigma Programación Orientada a Objetos
Paradigma Programación Orientada a Objetos
Rene Guaman-Quinche
 
Fundamentos ingeniería de requisitos.pdf
Fundamentos ingeniería de requisitos.pdfFundamentos ingeniería de requisitos.pdf
Fundamentos ingeniería de requisitos.pdf
Rene Guaman-Quinche
 
replicacion heterogenea.pdf
replicacion heterogenea.pdfreplicacion heterogenea.pdf
replicacion heterogenea.pdf
Rene Guaman-Quinche
 
Elicitación de requerimientos
Elicitación de requerimientosElicitación de requerimientos
Elicitación de requerimientos
Rene Guaman-Quinche
 
Arquitectura sw varios niveles.pdf
Arquitectura sw varios niveles.pdfArquitectura sw varios niveles.pdf
Arquitectura sw varios niveles.pdf
Rene Guaman-Quinche
 
Introducción a los sistemas distribuidos
Introducción a los sistemas distribuidosIntroducción a los sistemas distribuidos
Introducción a los sistemas distribuidos
Rene Guaman-Quinche
 
Diagramas componentes
Diagramas componentesDiagramas componentes
Diagramas componentes
Rene Guaman-Quinche
 
Diagramas de secuencia
Diagramas de secuenciaDiagramas de secuencia
Diagramas de secuencia
Rene Guaman-Quinche
 
C4model - Arquitectura de Software
C4model - Arquitectura de SoftwareC4model - Arquitectura de Software
C4model - Arquitectura de Software
Rene Guaman-Quinche
 
Sistema de Archivos Distribuidos
Sistema de Archivos DistribuidosSistema de Archivos Distribuidos
Sistema de Archivos Distribuidos
Rene Guaman-Quinche
 
RPC
RPCRPC
Unidad 2 diseño orientado a objetos
Unidad 2 diseño orientado a objetosUnidad 2 diseño orientado a objetos
Unidad 2 diseño orientado a objetos
Rene Guaman-Quinche
 
Tiempo, causalidad y estado global
Tiempo, causalidad y estado globalTiempo, causalidad y estado global
Tiempo, causalidad y estado global
Rene Guaman-Quinche
 
Tiempo, causalidad y estado global Alberto Lafuente Teorìa
Tiempo, causalidad y estado global Alberto Lafuente TeorìaTiempo, causalidad y estado global Alberto Lafuente Teorìa
Tiempo, causalidad y estado global Alberto Lafuente Teorìa
Rene Guaman-Quinche
 
Tiempo, causalidad y estado global Alberto Lafuente Transparencias
Tiempo, causalidad y estado global Alberto Lafuente TransparenciasTiempo, causalidad y estado global Alberto Lafuente Transparencias
Tiempo, causalidad y estado global Alberto Lafuente Transparencias
Rene Guaman-Quinche
 
Ciclo de vida software
Ciclo de vida softwareCiclo de vida software
Ciclo de vida software
Rene Guaman-Quinche
 
Comunicacion intra procesos con socket
Comunicacion intra procesos con socketComunicacion intra procesos con socket
Comunicacion intra procesos con socket
Rene Guaman-Quinche
 
Modelo paso de mensajes
Modelo paso de mensajesModelo paso de mensajes
Modelo paso de mensajes
Rene Guaman-Quinche
 

Más de Rene Guaman-Quinche (20)

interfaces.pdf
interfaces.pdfinterfaces.pdf
interfaces.pdf
 
Paradigma Programación Orientada a Objetos
Paradigma Programación Orientada a ObjetosParadigma Programación Orientada a Objetos
Paradigma Programación Orientada a Objetos
 
Fundamentos ingeniería de requisitos.pdf
Fundamentos ingeniería de requisitos.pdfFundamentos ingeniería de requisitos.pdf
Fundamentos ingeniería de requisitos.pdf
 
replicacion heterogenea.pdf
replicacion heterogenea.pdfreplicacion heterogenea.pdf
replicacion heterogenea.pdf
 
Elicitación de requerimientos
Elicitación de requerimientosElicitación de requerimientos
Elicitación de requerimientos
 
Arquitectura sw varios niveles.pdf
Arquitectura sw varios niveles.pdfArquitectura sw varios niveles.pdf
Arquitectura sw varios niveles.pdf
 
Introducción a los sistemas distribuidos
Introducción a los sistemas distribuidosIntroducción a los sistemas distribuidos
Introducción a los sistemas distribuidos
 
Diagramas componentes
Diagramas componentesDiagramas componentes
Diagramas componentes
 
Diagramas de secuencia
Diagramas de secuenciaDiagramas de secuencia
Diagramas de secuencia
 
C4model - Arquitectura de Software
C4model - Arquitectura de SoftwareC4model - Arquitectura de Software
C4model - Arquitectura de Software
 
Sistema de Archivos Distribuidos
Sistema de Archivos DistribuidosSistema de Archivos Distribuidos
Sistema de Archivos Distribuidos
 
RPC
RPCRPC
RPC
 
Unidad 2 diseño orientado a objetos
Unidad 2 diseño orientado a objetosUnidad 2 diseño orientado a objetos
Unidad 2 diseño orientado a objetos
 
Tiempo, causalidad y estado global
Tiempo, causalidad y estado globalTiempo, causalidad y estado global
Tiempo, causalidad y estado global
 
Tiempo, causalidad y estado global Alberto Lafuente Teorìa
Tiempo, causalidad y estado global Alberto Lafuente TeorìaTiempo, causalidad y estado global Alberto Lafuente Teorìa
Tiempo, causalidad y estado global Alberto Lafuente Teorìa
 
Tiempo, causalidad y estado global Alberto Lafuente Transparencias
Tiempo, causalidad y estado global Alberto Lafuente TransparenciasTiempo, causalidad y estado global Alberto Lafuente Transparencias
Tiempo, causalidad y estado global Alberto Lafuente Transparencias
 
Ciclo de vida software
Ciclo de vida softwareCiclo de vida software
Ciclo de vida software
 
Comunicacion intra procesos con socket
Comunicacion intra procesos con socketComunicacion intra procesos con socket
Comunicacion intra procesos con socket
 
Modelo paso de mensajes
Modelo paso de mensajesModelo paso de mensajes
Modelo paso de mensajes
 
RMI
RMIRMI
RMI
 

Último

infografia del sena para analisis y desarrollo de software
infografia del sena para analisis y desarrollo de softwareinfografia del sena para analisis y desarrollo de software
infografia del sena para analisis y desarrollo de software
oscartorres960914
 
Escaneo y eliminación de malware en el equipo
Escaneo y eliminación de malware en el equipoEscaneo y eliminación de malware en el equipo
Escaneo y eliminación de malware en el equipo
nicromante2000
 
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJECONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
SamuelGampley
 
Maquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdfMaquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdf
juanjosebarreiro704
 
PitchCollabART uniendo talentos, creando maravillas digitales
PitchCollabART uniendo talentos, creando maravillas digitalesPitchCollabART uniendo talentos, creando maravillas digitales
PitchCollabART uniendo talentos, creando maravillas digitales
juanorejuela499
 
Los desafíos de calidad de software que nos trae la IA y los LLMs
Los desafíos de calidad de software que nos trae la IA y los LLMsLos desafíos de calidad de software que nos trae la IA y los LLMs
Los desafíos de calidad de software que nos trae la IA y los LLMs
Federico Toledo
 
Caso de exito Cirrus - Hospital La Salle
Caso de exito Cirrus - Hospital La SalleCaso de exito Cirrus - Hospital La Salle
Caso de exito Cirrus - Hospital La Salle
Ecaresoft Inc.
 
experiencia de aprendizaje sobre lectura y escritura como herramientas de ap...
experiencia de aprendizaje sobre lectura y escritura como  herramientas de ap...experiencia de aprendizaje sobre lectura y escritura como  herramientas de ap...
experiencia de aprendizaje sobre lectura y escritura como herramientas de ap...
cuentauniversidad34
 
FICHA DE TRABAJO DE CREACION DE TABLAS EN WORD
FICHA  DE TRABAJO DE CREACION DE TABLAS EN WORDFICHA  DE TRABAJO DE CREACION DE TABLAS EN WORD
FICHA DE TRABAJO DE CREACION DE TABLAS EN WORD
RobertSotilLujn
 
trabajo integrador final sofi y vane.docx
trabajo integrador final sofi y vane.docxtrabajo integrador final sofi y vane.docx
trabajo integrador final sofi y vane.docx
lasocharfuelan123
 

Último (10)

infografia del sena para analisis y desarrollo de software
infografia del sena para analisis y desarrollo de softwareinfografia del sena para analisis y desarrollo de software
infografia del sena para analisis y desarrollo de software
 
Escaneo y eliminación de malware en el equipo
Escaneo y eliminación de malware en el equipoEscaneo y eliminación de malware en el equipo
Escaneo y eliminación de malware en el equipo
 
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJECONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
 
Maquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdfMaquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdf
 
PitchCollabART uniendo talentos, creando maravillas digitales
PitchCollabART uniendo talentos, creando maravillas digitalesPitchCollabART uniendo talentos, creando maravillas digitales
PitchCollabART uniendo talentos, creando maravillas digitales
 
Los desafíos de calidad de software que nos trae la IA y los LLMs
Los desafíos de calidad de software que nos trae la IA y los LLMsLos desafíos de calidad de software que nos trae la IA y los LLMs
Los desafíos de calidad de software que nos trae la IA y los LLMs
 
Caso de exito Cirrus - Hospital La Salle
Caso de exito Cirrus - Hospital La SalleCaso de exito Cirrus - Hospital La Salle
Caso de exito Cirrus - Hospital La Salle
 
experiencia de aprendizaje sobre lectura y escritura como herramientas de ap...
experiencia de aprendizaje sobre lectura y escritura como  herramientas de ap...experiencia de aprendizaje sobre lectura y escritura como  herramientas de ap...
experiencia de aprendizaje sobre lectura y escritura como herramientas de ap...
 
FICHA DE TRABAJO DE CREACION DE TABLAS EN WORD
FICHA  DE TRABAJO DE CREACION DE TABLAS EN WORDFICHA  DE TRABAJO DE CREACION DE TABLAS EN WORD
FICHA DE TRABAJO DE CREACION DE TABLAS EN WORD
 
trabajo integrador final sofi y vane.docx
trabajo integrador final sofi y vane.docxtrabajo integrador final sofi y vane.docx
trabajo integrador final sofi y vane.docx
 

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