Procesamiento Paralelo
Arquitecturas de Computadoras Paralelas
Javier Iparraguirre
Universidad Tecnol´ogica Nacional, Facultad Regional Bah´ıa Blanca 11 de Abril 461, Bah´ıa Blanca, Argentina
jiparraguirre@frbb.utn.edu.ar http://www.frbb.utn.edu.ar/hpc/
Modelos usados en HPC
¿Que es HPC?
• HPC es equivalente a High Performance Computing
• Consta en agregar poder de c´omputo con el fin lograr resultados mucho m´as r´apido de los que se logra con una computadora de escritorio t´ıpica.
• Generalmente involucra grandes problemas en ciencia, ingenier´ıa o negocios.
• Se puede dividir las estrategias de procesamiento en 3 tipos generales: SMP, Heterog´eneo y pasaje de mensajes.
Multiprocesamiento sim´ etrico (SMP)
Multiprocesamiento sim´ etrico (SMP)
• Varias unidades de procesamiento id´enticas comparten un
´
unico espacio de memoria.
• Todas las unidades tienen acceso a los dispositivos de entrada y salida (E/S).
• Un sistema operativo com´un.
• Caso t´ıpico: procesadores multi-n´ucleo.
Heterog´ eneo
Heterog´ eneo
• Unidades de prop´osito general manejan la memoria y la E/S.
• Otras unidades especializadas computan tareas espec´ıficas.
• Espacio de memoria compartido y sistema operativo com´un.
• Caso t´ıpico: PC con GPU.
Pasaje de mensajes
Pasaje de mensajes
• M´ultiples nodos se comunican a trav´es de una red por pasaje de mensajes.
• Los nodos no comparten memoria.
• No es necesario compartir el sistema operativo.
• Caso t´ıpico: cluster.
Marco Conceptual
Arquitectua von Neumann (1945)
Arquitectua von Neumann (1945)
• Cuatro componentes principales
• memoria
• Unidad de Control
• Unidad aritm´etica
• Entrada/Salida
• I/O: memoria de acceso aleatorio para almacenar datos e instrucciones
• La unidad de control trae instrucciones y datos de la memoria, decodifica las instrucciones y secuencialmente coordina las operaciones para llevar a cabo la tarea programada
• La Unidad aritm´etica realiza las operaciones aritm´eticas b´asicas
• La entrada/salida es la interfaz con el humano
• Cache: ¿Ideas? ¿Comentarios? ¿Saben porqu´e?
Elementos M´ınimos de una Computadora Paralela [1]
• Hardware
• M´ultiples procesadores
• M´ultiples memorias
• Interconexi´on
• Software del sistema
• Sistema operativo paralelo
• Herramientas
• Aplicaciones
Objetivo
Resolver el problema lo mas r´apido posible de manera eficiente
Dos Miradas a la Misma Realidad
• Organizaci´on L´ogica
• Lo que ve el usuario de la m´aquina a trav´es del software
• Organizaci´on F´ısica
• El hardware de la m´aquina
• La arquitectura f´ısica es independiente de la arquitectura l´ogica
• Es necesario conocer el hardware si queremos que el software corra de forma eficiente
• La computadora ideal es aquella que nos oculta los detalles f´ısicos (si la ven, avisen!)
Dos Miradas a la Misma Realidad
• Organizaci´on L´ogica
• Lo que ve el usuario de la m´aquina a trav´es del software
• Organizaci´on F´ısica
• El hardware de la m´aquina
• La arquitectura f´ısica es independiente de la arquitectura l´ogica
• Es necesario conocer el hardware si queremos que el software corra de forma eficiente
• La computadora ideal es aquella que nos oculta los detalles f´ısicos (si la ven, avisen!)
Tipos de Computadoras Paralelas
Taxonom´ıa de Flynn (1966)
• Se separan las instrucciones y los datos en dos dimensiones
• Pueden ser simples o m´ultiples
• SISD: Single Instruction, Single Data
• SIMD: Single Instruction, Multiple Data
• MISD: Multiple Instruction, Single Data
• MIMD: Multiple Instruction, Multiple Data
SISD
SISD
• Una computadora serie (no hay paralelismo)
• Instrucci´on simple: solo una instrucci´on ejecutada por el CPU durante cualquier ciclo del reloj
• Datos simples: solo una secuencia de datos es usada como entrada durante cualquier ciclo de reloj
• Ejecuci´on determin´ıstica
• El modelo m´as antiguo de la computaci´on
• Ejemplos: los primeros mainframes, la mayor´ıa de los m´oviles, las primeras PCs
SIMD
SIMD
• Un tipo de computadora paralela
• Instrucci´on simple: solo una instrucci´on ejecutada por el CPU durante cualquier ciclo del reloj
• Datos m´ultiples: cada unidad de procesamiento puede operar sobre un conjunto de datos diferente
• Se adapta muy bien en problemas con un alto grado de regularidad, tales como gr´aficos/im´agenes
• Ejecuci´on sincr´onica y determin´ıstica
• Dos variantes: arreglo de procesadores o unidades vectoriales
• Las unidades de procesamiento de gr´aficos (GPUs) emplean unidades de procesamiento SIMD
MISD
MISD
• Una secuencia de datos ´unica es provista a unidades de procesamiento m´ultiples
• Cada unidad de procesamiento opera sobre los datos de manera independiente (contadores de programa
independientes)
• Pocos ejemplos pr´acticos de este modelo de computadora paralela
• Algunos usos posibles pueden ser:
• M´ultiples filtos de frecuencia operado sombre una misma se˜nal
• Multiples algoritmos de criprograf´ıa operado sobre un mensaje codificado
MIMD
MIMD
• Actualmente es el tipo de computadora paralela m´as usado.
Ma mayor´ıa de las computadoras caen aqu´ı
• Instrucciones m´ultiples: cada procesador puede estar ejecutando una secuencia de instrucciones diferentes
• Datos m´ultiples: cada unidad de procesamiento puede operar sobre un c´omputo de datos diferente
• La ejecuci´on puede ser sincr´onica o asincr´onica, determin´ıstica o no-determin´ıstica
• Ejemplos: la mayor´ıa de las supercomputadoras actuales, clusters y grids, multi-core PCs
• Nota: muchas arquitecturas MIMD pueden contener componentes internos que ejecuten SIMD
Modelos de Memoria
Caracter´ısticas Generales de Memoria Compartida
• En general la memoria compartida permite a los procesadores acceder a la memoria como un espacio de direcciones global
• Procesadores m´ultiples pueden operar independientemente sobre recursos de memoria compartida
• Un cambio en la memoria producido por una unidad de procesamiento es visible por el resto de los procesadores
• Hay dos clases de arquitecturas de memoria compartida: UMA y NUMA
UMA
UMA
• Un claro ejemplo son las machinas SMP (Symmetric Multiprocessor)
• Procesadores id´enticos
• Las prioridades y los tiempos de acceso son iguales para todos
• CC-UMA: Cache Coherent UMA (usualmente lo hace el hardware)
NUMA
NUMA
• Usualmete ocurre cuando se conectan dos o m´as sistemas SMPs
• Un sistema SMP puede acceder directamente a la memoria del otro
• No todos los procesadores tienen igual acceso a todas las direcciones de memoria
• El acceso a memoria a trav´es del v´ınculo (o bus) es m´as lento
• CC-NUMA: Cache Coherent NUMA
Ventajas y Desventaja de Memoria Compartida
• Ventajas
• Espacio de memoria global es amigable para el programador
• El intercambio de datos entre las tareas es r´apido y uniforma debido a la proximidad entre CPUs
• Desventajas
• El principal problema es que no se puede escalar el modelo.
Cuando se agregan CPUs el tr´afico se incrementa
geom´etricamente y comienzan los problemas de coherencia
• El programador es responsable de la sincronizaci´on de los datos y la coherencia en la memoria
Memoria Distribuida
Caracter´ısticas Generales Memoria Distribuida
• Hay varios modelos de memoria distribuida. El patr´on general es el uso de una red de comunicaci´on para conectar las memorias de los procesadores
• Los procesadores tienen su propia memoria local y no hay correspondencia entre dos procesadores.
• Independencia de operaci´on, los cambios en un lugar no afectan al resto
• Cuando un procesador necesita un dato externo, el programador lo ordena expl´ıcitamente
• La red de comunicaci´on puede variar ampliamente, puede ser una red ethernet
Ventajas y Desventaja de Memoria Distribuida
• Ventajas
• El modelo escala con los procesadores. A medida que se agregan unidades de procesamiento la memoria escala proporcionalmente
• Cada procesador accede a un dato en memoria sin interferir al resto de los componentes. Se eliminan las demoras por accesos m´ultiples
• Desventajas
• El programador es responsable de muchos de los detalles asociados a la comunicaci´on entre procesadores
• Puede ser dificultoso mapear estructuras de datos basadas en memoria global a esta organizaci´on de memoria
Memoria H´ıbrida Compartida-Distribuida
Memoria H´ıbrida Compartida-Distribuida
• Las principales supercomputadoras usan este modelo
• La memoria compartida es usualmente un SMP. Los procesadores acceden a la memoria global tambi´en
• La memoria distribuida es la interconexi´on de m´ultiples SMPs
• Ventajas y desventajas: las que aplican a los tipos involucrados
Interconexiones y Topolog´ıas
Interconexiones y Topolog´ıas
• Suponiendo una m´aquina paralela ideal compuesta por n procesadores
• Dependiendo en la forma que se maneja el acceso a memoria, se encuentran cuatro clases
• Exclusive-read, exlusive-write (EREW)
• Concurrent-read, exclusive-write (CREW)
• Exclusive-read, concurrent-write (ERCW)
• Concurrent-read, concurrent-write (CRCW)
• Las escrituras concurrentes se resuelven por:
Common/Arbitrary/Priority/Sum
Redes de Interconexi´ on
• Concentan procesadores-procesadores y procesadores-memoria
• Est´aticas
• Conexiones punto a punto
• Hist´oricamente para conectar procesadores entre si
• Din´amicas
• Se colocan elementos de conmutaci´on en la red
• Hist´oricamente para conectar los procesadores con la memoria
Redes en una Foto
Redes con un Bus o Canal
Crossbar
Multi-etapa
Estrella y Totalmente Conectada
Cartesianas
Hypercubes
Arboles
Definiciones (1 de 2)
• Di´ametro
• La m´axima distancia entre dos nodos (mejor cuando es menor)
• Conectividad
• El numero m´ınimo de arcos que se deben remover para partir en dos redes desconectadas (mejor cuando es mayor)
• Mide las multiplicidad de caminos
Definiciones (2 de 2)
• Ancho de bisecci´on
• El numero m´ınimo de arcos que se deben remover para partir la red en dos mitades iguales (mejor cuando es mayor)
• Ancho de banda de bisecci´on
• Aplica a redes con enlaces medidos por velocidad de transferencia
• El m´ınimo volumen de comunicaci´on permitidos entre dos mitades de una red (mejor cuando es mayor)
• Costo
• El n´umero de enlaces en una red (mejor cuando es menor)
Caracter´ısticas
Procesadores actuales y clasificaciones
AMD: Zen
AMD: Zen
AMD: Zen
AMD: Naples
AMD: Naples
Intel: Xeon
Intel: Xeon Phi
UltaSPARC T2
NVIDIA: CUDA Core
NVIDIA: Kepler
NVIDIA: PCI-Express
NVIDIA: nvlink
NVIDIA: Tegra
Una Caracterizaci´ on de Procesadores Actuales [2]
500
• TOP 500
• Green 500
• Graph 500
¡Muchas gracias!
¿Preguntas?
jiparraguirre@frbb.utn.edu.ar
Referencias y Cr´ editos
Referencias I
[1] G. Ananth, G. Anshul, K. George, and K. Vipin.
Introduction to parallel computing, 2003.
[2] B. Spiers and D. Wallez.
High-Performance Computing on Wall Street.
Computer, 43(12):53–59, 2010.