Está en la página 1de 18

PRIMER PARCIAL AC

INTRODUCCIÓN A LAS ARQUITECTURAS PARALELAS


¿Por qué son necesarias?
• Modelización predictiva y Simulaciones
• Diseño y automatización
• Explotación de recursos energéticos
• Investigación médica, militar y básica
• Dibujos animados y efectos especiales
• Realidad virtual
• Web serving

Clasificación de las arquitecturas paralelas


1) En datos (Data parallel)
o Vectoriales
o Neuronales y asociativas
o SIMD
o Sistólicas

1) En función
o A nivel instancia
▪ Procesadores segmentados
▪ VLIW
▪ Procesadores superescalares
o A nivel hilo
▪ Multihilo
o A nivel proceso (MIMD)
▪ De memoria distribuida → Multicomputadores
▪ De memoria compartida → Multiprocesadores

(Otra forma de clasificación)

Métricas de rendimiento de las arquitecturas paralela


• GRADO → Número de CPUs para las que tengo trabajo simultáneo
• GRANO→ Tamaño (número de instrucciones) asignado a cada CPU
o Granularidad gruesa, media y fina

Maximizar el ratio = Tcómputo/Tcomunicación

Grado → Número de unidades de proceso para las que se tiene trabo durante un intervalo de
tiempo

Grano → Tamaño medio de las acciones ejecutadas en paralelo por unidad de proceso

• Aceleración (speedup): Cuántas veces más rápido al contar con n CPUS en vez de con
una(absoluta)

• Eficiencia: Lo mismo, pero teniendo en cuenta n(relativa)


Ley Amdahl

Ley de Gustafson

Función Isoeficiencia
• Indica cómo debe creer el tamaño del problema P conforme se incrementa n para
mantener constante la eficiencia
• Tiene en cuenta el tiempo de sobrecarga (Tº u overhead), que incluye:
o Tiempo de comunicación/sincronización entre procesos
o Tiempo para crear/terminar los procesos
o Tiempo de ejecución de operaciones añadidas en la versión paralela no
presentes en la secuencial
• Sustituyendo por k:

• Sobrecarga multiplicada por n:

MULTIPROCESADORES Y PROCESADORES MULTINÚCLEO


Conceptos básicos sobre multiprocesadores y procesadores multinúcleo

Memoria compartida → Un único espacio de direcciones de memoria visible a todos los


procesadores. Existen distintas formas de implementar ese espacio

Tipos de arquitectura multihilo

• Entrelazado (de grano fino o denso)


o Conmuta entre hilos de cada ciclo de reloj, causando la ejecución entrelazada
de instrucciones de múltiples hilos
o Utilizado en las CPUs
• Con bloqueo (de grano grueso o poco denso):
o Conmuta sólo cuando hay detenciones muy costosas
o No hay procesadores importantes que lo usen
• Simultáneo (SMT):
o Variación del entrelazado, que surge cuando se implementa en un procesador
planificado dinámicamente con emisión múltiple
o Es la más común
• Multinúcleo (chip multiprocesador o multiprocesador monochip):
o Varias copias del procesador en un solo circuito integrado y cada uno actúa
sobre hilos diferentes
o Se puede ver como otra arquitectura multihilo
o Combinable con SMT

Jerarquías de memoria en multiprocesadores


UMA
• Acceso uniforme a memoria → Cada P tiene mismo tiempo de acceso a todas y cada
una de las posiciones de memoria

NUMA
• Acceso no uniforme a memoria → El acceso a memoria remota es más lento que el
acceso a memoria local

COMA
• Acceso solo a memoria caché→ Submodelo de NUMA, donde la memoria principal de
cada procesador se trata como una caché

Jerarquías de memoria en procesadores multinúcleo


Coherencia de caché

• Coherencia → Escritura en una dirección se hacen visibles para todos los procesadores

Consistencia
• Consistencia → ¿Cuándo se tiene que ver la actualización de un dato realizada por
otro procesador?
• Consistencia estricta → Todas las escrituras son visibles al instante

• Consistencia secuencial → Debe mantenerse el orden de los programas y debe


respetarse la coherencia de la memoria

• Consistencia de procesador (PRAM) → Las escrituras de un procesador son vistas por


los otros en el orden de lanzada, pero las escrituras de procesadores diferentes
pueden verse en orden diferente

Protocolos de coherencia caché basados en vigilancia

Vigilancia del bus


• Estado
o Válido/Invalido → Contiene o no información actualizada
o Exclusivo/Compartido → Información presente en una o más de las cachés del
sistema
o Limpio/Modificado → La información almacenada es idéntica o no a la
contenida en la memoria principal del sistema
• Actividad interna de los módulos de proceso
o Acierto o fallo de lectura
o Acierto o fallo de lectura
o Invalidación interna/reemplazo
• Actividad externa a cada módulo de proceso y transacciones
o Dependen del protocolo de coherencia
Protocolo MSI
Tiene tres estados:

• M → Modified
• S → Shared
• I → Invalid

Dos operaciones de procesador:

• PrRd → Lectura
• PrWr → Escritura

Tres transacciones en el bus:

• BusRd → Lectura
• BusRdX→ Lectura para escribir
• BusWB → Pos-Escritura

Protocolo MESI
Tiene cuatro estados:

• M → Modified
• E → Exclusive
• S → Shared
• I → Invalid

BusRd(S) -> Línea shared activada como respuesta a la


transacción BusRd

Interv -> Hay transferencia de caché a caché

Protocolo DRAGON
Tiene cuatro estados:

• E → Exclusive: Sólo esa cache tiene el bloque


• SC → Shared clean: Esta cache y otras tienen el bloque, copia de MP puede ser
correcta o no
• SM → Shared modified: Esa cache y otra tienen el bloque, copia de MP no es correcta
• M → Modified: Esa caché está modificando el bloque, solo lo tiene ella

Nuevos eventos de procesador:

• PrRdMiss
• PrWrMiss

Nueva transacción en el bus:

• BusUpd: Difunde una única palabra escrita en el bus, actualiza las cachés implicadas
Protocolos de coherencia caché basados en directorio

Arquitectura

Definiciones
• Nodo hogar → Nodo que aloja el bloque en su MP
• Nodo local (solicitante) → Contiene el procesador que realiza la petición para el
bloque
• Bloques locales → Bloques cuyo hogar es local al procesador que realiza la petición
• Nodo propietario → Mantiene la copia válida del bloque y debe proporcionar los datos
cuando se necesiten. Puede ser el nodo hogar o el modificado
• Nodo modificado → Tiene en su caché una copia del bloque en el estado modificado
(puede ser el nodo hogar)

Introducción a OpenMP
OpenMP → Interfaz d programación de aplicaciones para programar aplicaciones paralelas en
multiprocesadores y procesadores multinúcleo. Para C++ y Fortran

Compuesta por

• Directivas del compilador, biblioteca de funciones y variables de Entorno

Modelo de ejecución
Fork/Join

• El hilo maestro se divide en hilos trabajadores que se ejecutan en paralelo


• El entorno de ejecución uno o vario hilos a los distintos procesadores que hay
Para hacer un for paralelo

Directivas OpenMP
• Formato →
• Construcción parallel →

Construcciones de trabajo compartido

Distribuyen la ejecución de las sentencias entre los hilos que ya existen

Todas incluyen una barrera final para esperar a las demás, a no ser que tengan un nowait

• For: Región donde las iteraciones del bucle deben ejecutarse entre los hilos que
lleguen a él

• Sections: Construcción no iterativa formada por regiones divididas entre los hilos

• Single: El bloque asociado debe ser ejecutado por un único hilo

Construcciones combinadas paralelas y de trabajo compartido

• Parallel for: Define una región parallel que contiene un for

• Parallel sections: Región parallel que contienen un único sections

Construcciones de tareas
• Task: Tarea explícita que se ejecuta por alguno de los hilos (inmediatamente o definir
la ejecución)

• Taskyield: La tarea puede suspenderse en favor de la ejecución de otra tarea

Construcciones Máster y de sincronización

• Master: Bloque ejecutado por el hilo maestro

• Critical: Restringe la ejecución del bloque a un hilo cada vez

• Barrier: Sincroniza todos los hilos en ese punto

• TaskWait: Especifica una espera en la finalización de las tareas hijas de la actual

• Atomic: Asegura la actualización atómica de una localización de memoria

• Flush: Asegura que los hilos tienen una visión actualizada de datos

• Ordered: El bloque se ejecuta en el orden en que las iteraciones son ejecutadas en su


versión secuencial

Directivas y cláusulas para controlar los datos en la ejecución paralela

• Threadprivate: Lista de variables privadas para cada hilo, pero visibles en regiones
paralelas

• Private: las variables de la lista son privadas

• Firstprivate: Valor private, pero ese dato es inicializado según su valor antes de entrar
en el bloque

• Shared: Declara las variables compartidas para todos los hilos

• Default: Declara las variables shared o nada por defecto


• Reduction: Indica una reducción en las variables escalares, con la operación oper

• Copyin: Asigna el mismo valor del hilo maestro a las variables threadprivate

• Copyprivate: Asigna un mismo valor de cierto hilo a las variables private para cada hilo
de una región paralela

Funciones de biblioteca en OpenMP


MULTICOMPUTADORES
Conceptos básicos de multicomputadores
• Memoria distribuida
o Cada procesador con memoria privada, que es inaccesible a los demás.
o Los procesadores se comunican mediante el envío y recepción de mensajes
o También llamados NORMA (No remote memory access)
• MPP
o Procesadores masivamente paralelos.
o Son procesadores comerciales.
o Baja latencia y elevado ancho de banda. Gran capacidad de E/S y tiene
tolerancia a fallos
• COW
o Cluster Of Workstation
o Estaciones de trabajo dedicados
o Software para programar las aplicaciones MPI, PVM
o Dos tipos
▪ Clusters homogéneos → la arquitectura de los nodos es la misma
▪ Clusters heterogéneos→ Nodos con diferentes características
• Beowulf
o Conjunto de nodos minimalistas aglutinados en red
o Componentes de costes mínimos
o Software de libre distribución
o Latencia de comunicación acotada y baja

Redes de interconexión en multicomputadores


• La red transfiere información desde cualquier nodo hasta cualquier nodo
• Deben diseñarse para transferir cantidad en el menor tiempo y con el menor coste y
consumo

Mensaje → Unidad de información que se transfiere entre nodos a través de la red de


interconexión

Paquete → La unidad de transferencia entre interfaces de red. La menor unidad que contiene
información de encaminamiento

Flit → Unidad lógica que se transfiere por un enlace entre conmutadores

Phit → es la unidad física de información que se transfiere por un enlace en un ciclo de red

• Protocolo: Pasos que el software sigue en un envío


• Ancho de banda: Máxima velocidad de red para propagar información
• T.vuelo: Tiempo en llegar el primer bit del mensaje al receptor
• T.transmisión: Tiempo en el que el mensaje atraviesa la red
• Latencia de transmisión = T.vuelo + T.transmisión
• Gastos del emisor: Tiempo que se tarda en poner el mensaje en la red
• Gastos del receptor: Tiempo que se parda en sacar el mensaje de la red

Canal
• Características
o Unidad física de transferencia por ciclo → Phit
o Unidad de control de flujo → Flit
o Velocidad de señal → f
o Ancho del canal físico → w
o Ancho de banda → B
▪ Depende del ciclo del reloj de la red
• Capacidad: Velocidad máxima a la que se pueden transmitir los bits de forma segura
por el canal
o Depende del consumo de potencia, la distancia, el ruido…
Topología
Estructura de la interconexión física de la red

Conmutación
Cómo atraviesan su ruta los datos de un mensaje

Encaminamiento
Que rutas pueden seguir los mensajes a través del grafo de la red

Topologías de redes de interconexión

Redes Directas
Topología ideal

Cada nodo se conecta con todos los demás

Topología ortogonal

Los nodos se encuentran dispuestos en un espacio ortogonal con n dimensiones

Los enlaces se pueden poner de modo que produzcan desplazamiento en una única dimensión

Topología estrictamente ortogonal

De cada nodo sale o llega un enlace cruzando cada dimensión

Grado de un nodo → Número de canales de E/S del nodo

Tamaño de la red → Número de nodos de la red

Homogeneidad → Igualdad entre las características de los nodos

Array Lineal

• Grado de los nodos: 2,1


• Grado de la red: 2
• Diámetro: N-1
• Escalable: Si, pero a costa de demasiado diámetro
• Ancho de bisección: 1

Anillo

• Grado de los nodos: 2


• Grado de la red: 2
• Diámetro: N/2
• Escalable: Si, pero a costa de demasiado diámetro
• Ancho de bisección: 2

Árbol Binario

• Grado de los nodos: 1, 2, 3


• Grado de la red: 3
• Diámetro: 2*(k-1)
• Escalable: Si
• Ancho de bisección: 1

Árbol grueso binario

• Grado de los nodos:


• Grado de la red:
• Diámetro: 2*(k-1)
• Escalable: No.
• Ancho de bisección: 1

Estrella

• Grado de los nodos: 1, N-1


• Grado de la red: N-1
• Diámetro: 2
• Escalable: Si, pero a costa de
Mucho grado
• Ancho de bisección: 1

Mallas 2D y 3D

• Grado de los nodos: k, k+1,…, 2*k


• Grado de la red: 2*k
• Diámetro: k*(n-1)
• Escalable: Si, pero a costa de
Grado o diámetro elevado

Toroides 2D y 3D

• Grado de los nodos:2*k


• Grado de la red:2*k
• Diámetro: k*(N/2)
• Escalable: Si, pero a costa de
Grado o diámetro elevado

Hipercubo

• Grado nodos:
• Grado red:
• Diámetro:
• Escalable: Si, pero a costa de
Demasiado grado

Hipercubo con ciclos

• Grado de los nodos: 3


• Gado de la red: 3
• Diámetro: 2*k-1+(N/2)
• Escalable: Más que el anterior
Técnicas de conmutación en redes de interconexión
Determinan cómo atraviesan los datos el camino desde el nodo fuente hasta el destino

Tipo:

• Conmutación de paquetes
• Conmutación de circuitos
• Conmutación vermiforme
• Conmutación de camino virtual
• Conmutación cartero loco

Encaminamiento en redes de interconexión


Algoritmo de encaminamiento:

• Realiza la elección de caminos cuando hay varias posibilidades y gestiona los conflictos
que surgen entre los mensajes que quieren tomar el mismo camino
• Se suele buscar un algoritmo de encaminamiento óptimo (los mensajes vayan por el
camino más corto)
• Este algoritmo depende de la topología de la red
• Comportamiento deseado: simple y rápido

Selección de camino concreto


Determinista

Ruta determinada por origen, destino…, no por estados intermedios

Baja tolerancia a fallos, problemas de contenidos…

Adaptativo

Influenciado por tráfico o estado de canales a lo largo de la ruta

Canales de salida candidatos y número de caminos alternativos


Mínimo o provechoso

Selecciona siempre canales que acercan el paquete a si destino

No mínimo o con desencaminamientos

Pueden proporcionar algunos canales que alejen el paquete de su destino


Ejemplos de algoritmos deterministas
Ejemplos de algoritmos adaptativos

También podría gustarte