Documentos de Académico
Documentos de Profesional
Documentos de Cultura
*Throughput: Es una unidad de medida que nos indica la cantidad de trabajoj que
nuestro sistema puede hacer en una unidad de tiempo.
En la actualidad toda computadora moderna es paralela -Pacheco
Paralelismo de datos:
Consiste en tener un único conjunto de datos el cual dividiremos en subconjuntos
a los cuales a todos se les aplicara la misma operación
Desventajas:
o Sacrificio de performance
1.Tipo de memoria:
a. Sistemas de memoria compartida
b. Sistemas de memoria distribuida
2.Independencia de procesamiento:
a. MIMD (Multiple Instruction Multiple Data)
- Sistemas convencionales
- Cada core tiene un “control unit” que maneja si propia stream de
instrucciones y de datos a procesar
Tipos de computación
Computación concurrente: se refiere a un programa en donde podemos tener
varias tareas que están “en progreso” aunque no necesariamente al mismo tiempo
Computación paralela: Se refiere a un programa en el que se ejecutan varias
tareas para resolver un mismo problema y se ejecutan al mismo tiempo.
CPU
1. Control Unit (Siguiente instrucción a ejecutar)
2. Datapath (ejecutar la instrucción como tal)
Pros Contras
Simplicidad del Restructura de
diseño instrucciones
Igual forma de Procesamiento
recuperar datos o secuencial (PC)
instrucciones
Arquitectura de hardvard
Implementación de caché
Jerarquía de memorias para almacenamiento temporal
“Localidad”
• Espacial →Datos continuos
• Temporal → Datos con mayor probabilidad de ser requeridos nuevamente
Memoria virtual
Mapeo de memoria primaria a memoria secundaria
- Este tipo de memoria es aprovechado en caso en donde los programas
requieren grandes cantidades de memoria
- Aprovecha el uso y mapeo de páginas
- Aliviar la fragmentación de memoria
Paralelismo de hardware
Uso de múltiples recursos y estrategias para procesamiento paralelo, pero a nivel
de hardware (Multithreading)
Niveles de Paralelismo
- Paralelismo de aplicaciones (más control/ más responsabilidad a nivel de
usuario)
o Paralelismo de datos (DLP)
o Paralelismo de tareas (TLP)
Simples Multiples
Simples SISD SIMD
Distributed Memory
DMSV DMMP
Aspectos:
- Conexión entre procesadores (directa o indirecta)
- Memoria entre procesadores (Compartida o privada)
- Sincronización de reloj (un mismo reloj o relojes independientes)
- Distintos tiempos de acceso a memoria (distintos clock rates)
Modelo de computación secuencial
o RAM (Random Acces Machine)
PRAM
- P unidades de procesamiento p > 2
- Una misma memoria compartida
Algunos de los problemas son:
- Race conditions acceso simultaneo a L
- Secuenciación ( HW serializa el acceso a L )
- Indeterminismo (No existe un orden garantizado)
Variantes de PRAM
- Exclusive Read Exclusive Write (EREW)
o Modelo o variante más realista
Características deseables
- diversidad alta (tolerancia a fallos)
- escalabilidad (crecimiento y adaptabilidad)
- diámetro pequeño (menor distancia que recorre un mensaje en la red)
- grado bajo (menos overhead en HW por nodo conectado)
Escalabilidad
Capacidad de nuestro sistema para adaptarse a problemas mayores o mpas
grandes de manera eficiente
A. Resolver problemas más grandes B. Incorporar más recursos (strong
(weak scaling) scaling)
𝑡𝑠𝑒𝑞 𝑡𝑠𝑒𝑞
weakScaling = 𝑡´ t´ problema n strongScaling = 𝑁∗ 𝑡
𝑝𝑎𝑟 𝑝𝑎𝑟
veces más grande
Ley de Amdahl
Es una formula que permite calcular el potencial incremento de speedup que
obtendríamos al agregar más cores en una aplicación que tiene secciones
“seriales” y secciones paralelizables
P = paralelizable
S = UP
<
Teorema de Brent
Cota inferior Cota superior
Tiempo de ejecución de A es T1 En un algoritmo paralelo con tiempo de
Entonces con computación T y que realiza un total de
P = Procesadores M operaciones entonces puede ser
El tiempo de ejecución de A sería ejecutado en un sistema de p unidades
A = T1 / P de procesamiento en un tiempo de
nomás que T + (M-T) / P
Caso 1
Q procedadores
Q = 16
M = 100
T = 10
Caso 2
P = Procesadores
P=8
10 + (100 - 10) / 8 = 21.25 seg
Software Paralelo, Patrones de descomposición y patrones de
programación
PCAM (Método de Foster) -> Ian Foster 1995 :
Es un proceso o metodología de desempeño de software paralelo
1. Partitioning
2. Communication
3. Agglomeration
4. Mapping
Partitioning: Segmentar/partir los cálculos y o operaciones a realizar. La
granularidad depende de la aplicación
- Dividir el problema y los datos utilizados en pequeñas tareas
- Identificar que tareas se pueden paralelizar
- Dos tipos de partitioning
o Function Orientend
o Data Oriented
Communication:Identificar las dependencias, entre peticiones. Se genera una
matriz de dependencias
- Definir que tipo de mensajes se necesitan para ejecutar la secuencia de
tareas
- Determinar el volumen de datos a comunicar
- Puede resultar el grafo de dependencias
Task Parallelism
- Los programas secuenciales suelen poder estructurarse por módulos
- Se asignan nodos/UP a distintos módulos para realizarse de forma paralela
Consideraciones:
- Dividir el trabajo entre threads o procesos
- Balancear la carga minimizar la comunicación (balanceo de ambas cosas)
- Garantizar la sincronización entre procesos o threads
- Las ejecuciones asíncronas introducen el no-determinismo
o Race Conditions
o Critical section problema
o Mutual Exclusion
GPLS
• SPMD (Single Program Multiple Data)
Mismo programa ejecutándose en nodos distintos pero sobre diferentes
datos
• MPMD (Eje: Cuda)
Se ejecuta en sistemas heterogéneos (distintos UP’s)
Requerimientos de memoria más estrictos
Config File – Mapero de programa a UP
• Master – Worker
2 roles
Worker:
o Encargado de ejecutar tareas. Pueden ser distintas tareas
Master:
o Entregar pedazos de trabajo a los workers
o Recolectar resultados de workers
o Realizar tareas de I/O
o Interacción con el usuario
• Map – Reduce
Es un derivado de master – worker. Se hizo famoso por Google
GSLP:
• Fork – Join
Es empleado cuando el algoritmo dicta la necesidad de la creación
dinámica de subtareas
Fork - La tarea es separada
Join – unir resultados
La aplicación es limitada
Ventaja que trae es reducir esfuerzo de desarrollo pero no tiene beneficio
en cuanto performance