HPC
HI PERFORMANCE COMPUTING
Computación de Alto Desempeño
Juan Carlos Gutiérrez Martínez
Universidad Tecnológica de Pereira
Pereira, Abril 17 de 2009
1. INTRODUCCIÓN
2. QUE ES HPC
3. ANTECEDENTES
3.1 Un poco de historia
4. COMO LOGRAR HPC
4.1 HPC desde la perspectiva del hardware
4.1.1 Modelo taxonómico de PhD Michel J Flynn
4.1.2. Modelo de conexión de la memoria y el procesador
4.1.3 Modelo estructura de la memoria y mecanismo de comunicación
4.1.4 Clasificación de los computadores Flynn-Jonson
4.1.5 Computación escalar y súper escalar
4.1.6 Procesador vectorial
4.1.7 Intel Itanium 2. Incorporado en Altix 350 U.T.P
4.1.8 Soluciones asociadas
4.2 HPC desde la perspectiva del software
4.2.1 Sistema operativo
4.2.2. Lenguaje y compilador
4.2.3 Anotaciones
4.2.4 MPI
4.3 HPC desde la algoritmia
4.3.1 En serie y en paralelo.
4.4 HPC RC
4.4.1. Arquitectura de la computación reconfigurable
4.4.2 Estructura de la librería RASC
4.4.3. Arquitectura RASC con la capa “Core services”
4.4.4. Arreglo de FPGA masivamente paralelo
4.4.5 VHDL
4.4.5.1. VHDL: VHSIC y HDL
4.4.5.2. VHDL: Formas de describir un circuito
4.4.5.3. VHDL: Ejemplo compuerta NAD
4.4.5.4. VHDL: Ejemplo Contador
Bibliografía
Contenido
HPC: Computación de alto desempeño
INTRODUCCIÓN
Desde el inicio de la humanidad el ser humano
con su capacidad creativa ha diseñado
instrumentos que le permitan desempeñar sus
labores de una manera mas eficiente.
Con la computación, la eficiencia está enfocada en
realizar cada vez mayor cantidad de cálculos en
el menor tiempo posible, esta necesidad ha
llevado a desarrollar herramientas de software y
hardware que le permitan lograr este objetivo
HPC: Computación de alto desempeño
Términos
QUE ES HPC
El término HPC, surgió luego del término
SUPERCOMPUTING, y son asociados usualmente
como sinónimos.
En otros contextos “Supercomputador”, se considera
como un subconjunto de “Computadores de alto
desempeño”, y el término “SUPERCOMPUTING”, se
considera como un subconjunto de la “HPC”
HPC: Computación de alto desempeño
Definición
QUE ES HPC
En la actualidad HPC se puede definir como un conjunto
de elementos de hardware, software y algoritmia, que
combinados permiten resolver problemas donde se
requiere actuar sobre un conjunto muy denso de datos
para ser procesados en el menor tiempo posible. (El autor).
Ejemplos: Clima, medicina, gráficos, negocios, criptografía
HPC: Computación de alto desempeño
.
ANTECEDENTES
En un contexto histórico desde el conteo con nudos en
tiras de lana de oveja, pasando por la aparición del
numero “uno”, llegando al ábaco, la sumadora de
Pascal, la maquina de Babagge, la Qurta, y comenzado
en la era de reles con Z3 y en la de tubos al vacío con el
Eniac, pasando por muchos otros, todos ellos han tenido
la finalidad de realizar HPC.
HPC: Computación de alto desempeño
ANTECEDENTES
HPC: Computación de alto desempeño
.
Un poco de historia
El origen moderno de HPC, nace con quien se conoce
como “El padre de la supercomputación”, el Ingeniero
electricista y magíster en matemáticas aplicadas,
Seymour Cray, (1925 – 1996 ).
Seymor Cray, inicia sus trabajos, en 1951 en Engineering
Research Associates, compañía que trabaja en
criptografía.
Desarrolla el modelo 1103, con el concepto de un
conjunto reducido de instrucciones, que hoy se conoce
como RISC.
HPC: Computación de alto desempeño
.
Un poco de historia
En 1957 hace parte de CDC (Control data corporation) y
Desarrolla el modelo 1604, con el uso de transistores.
Crea en 1972 la empresa Cray research Inc.,
Desarrolla el supercomputador CRAY1
En forma de letra “C”.
Sistema innovador para refrigeración con freón.
En 1978 aparece el supercomputador multiprocesador
Cray X- MP, lo sigue el CRAY 2
HPC: Computación de alto desempeño
.
Un poco de historia.
En 1978 aparece el supercomputador multiprocesador
Cray X- MP, lo sigue el CRAY 2
Para 1988 se rompe la barrera de 1 Gigaflop
Cray Y-MP
En 1989 crea Cray Computer Coprporation.
Desarrollan 1 solo CRAY 3
Inicia proyecto CRAY 4, entra en bancarrota
Queda inconcluso por muerte Seymor en 1996
HPC: Computación de alto desempeño
.
Un poco de historia.
En 1990 se crea Cray Research, aparecen grandes
avances
Comienzan con el Cray 90 y 1 Gigaflop sostenido
Utiliza 16 procesadores de 333 Megaflops
256 Millones de “Words” ( 1 millón de Words = 8 Mb)
Le siguen el Mini supercomputador Cray XMS, “Cray YMP-El”, y el Cray J90 (vendidas mas de 400)
HPC: Computación de alto desempeño
CRAY - 1
Un poco de historia.
.
HPC: Computación de alto desempeño
.
COMO LOGRAR HPC.
Teniendo en cuenta que la HPC se logra con el conjunto de
Hardware, software y algoritmia, presentaremos desde
cada uno de estos los conceptos para lograr HPC.
HPC: Computación de alto desempeño
HPC desde la perspectiva del hardware
Modelo taxonómico de PhD Michel J Flynn
Este modelo presentado en 1966, tiene en cuenta las 4
formas en que se procesan las instrucciones y los datos
en un computador:
MODELO TAXONÓMICO DE FLYNN
UNA
INSTRUCCIÓN
MULTIPLES
INSTRUCCIONES
UN DATO
SISD
MISD
(no hay aplicación)
MULTIPLES
DATOS
SIMD
MIMD
HPC: Computación de alto desempeño
HPC desde la perspectiva del hardware
Modelo taxonómico de PhD Michel J Flynn
HPC: Computación de alto desempeño
HPC desde la perspectiva del hardware
Modelo de conexión de la memoria y el procesador
Memoria compartida
Memoria distribuida
Memoria distribuida - compartida
HPC: Computación de alto desempeño
HPC desde la perspectiva del hardware
Modelo de conexión de la memoria y el procesador
Memoria compartida: Cada procesador tiene acceso a un
espacio global de direcciones de memoria, que es
compartido por todos los procesadores en el sistema.
Para evitar problemas de acceso al mismo dato por dos
procesadores, se deben utilizar semáforos y candados.
HPC: Computación de alto desempeño
HPC desde la perspectiva del hardware
Modelo de conexión de la memoria y el procesador
Memoria distribuida: Cada procesador tiene su propio espacio de
direcciones de memoria. El intercambio de información se
realiza por la red de interconexión, utilizando software de
intercambio de mensajes. Si un procesador requiere
información de al memoria de otro procesador, realiza una
solicitud.
HPC: Computación de alto desempeño
HPC desde la perspectiva del hardware
Modelo de conexión de la memoria y el procesador
Memoria distribuida compartida: La memoria que esta
distribuida, se “ ve “ como un único espacio de
direcciones virtuales.
HPC: Computación de alto desempeño
HPC desde la perspectiva del hardware
Modelo estructura de la memoria y mecanismo de comunicación
Del modelo taxonómico de Flynn, cuando se realizan
múltiples instrucciones sobre múltiples datos (MIMD), la
conexión de las memoria y la forma en que se
comunican, se modeló por E.E. Jonson, proponiendo las
4 siguientes categorías:
MODELO E.E. JONSON para MIMD
Variables compartidas
SV
Intercambio de mensajes
MP
Memoria global GM
GMSV
GMMP
(Sin aplicación real)
Memoria distribuida DM
DMSV
DMMP
HPC: Computación de alto desempeño
HPC desde la perspectiva del hardware
Clasificación de los computadores Flynn-Jonson
Modelo Flynn - Jonson
No tiene aplicación
HPC: Computación de alto desempeño
HPC desde la perspectiva del hardware
Computación escalar y súper escalar
Los procesadores escalares son el tipo más sencillo de
procesadores. Cada instrucción de un procesador
escalar opera sobre un dato cada vez. (SISD)
La gran mayoría de las CPUs de hoy en día son escalares
o superescalares.
Superescalar es el término utilizado para designar un tipo
de microarquitectura de procesador capaz de ejecutar
más de una instrucción por ciclo de reloj. (MIMD)
HPC: Computación de alto desempeño
HPC desde la perspectiva del hardware
Procesador vectorial
Un procesador vectorial es un diseño de CPU capaz de ejecutar
operaciones matemáticas sobre múltiples datos de forma
simultánea. (SIMD). (Ej. Consolas video jugos, tarjetas gráficas).
Una maquina vectorial consta de una unidad escalar segmentada y
una unidad vectorial.
La unidad vectorial dispone de M registros vectoriales de N elementos
y de unidades funcionales vectoriales (suma/resta, multiplicación,
división, de carga/almacenamiento, etc), que trabajan sobre los
registros vectoriales, y un conjunto de registros escalares.
Dispone de un juego de instrucciones vectoriales.
Por ejemplo addv v1,v2,v3
HPC: Computación de alto desempeño
HPC desde la perspectiva del hardware
Intel Itanium 2. Incorporado en Altix 350 U.T.P
En un procesador con doble núcleo, basado en
computación con instrucciones paralelas explicitas
(EPIC).
La arquitectura Intel Itanium soporta alto procesamiento en
paralelo, direccionar hasta 1024 TB, (1 Petabyte), de
memoria ram, 24 MB de caché L3, ancho de banda de
10.6GB/sec para I/O.
Recupera la caché automáticamente tras errores, Permite
que un núcleo de procesador duplique las operaciones
del otro.
HPC: Computación de alto desempeño
HPC desde la perspectiva del hardware
Soluciones asociadas
.Incrementar ciclo de reloj de trabajo del procesador.
.Tecnología Hypertreading: Multiples hilos en un solo procesador.
.Tecnología Dual / (QUAD) core: dos / (4) núcleos en un chip.
.RISC: Reduced instruction set code.
.Memoria caché.
.Cluster computer.
.NUMAflex: Tecnología de acceso a la memoria
.Red Gigabit.
.Almacenamiento.
.RC: Computación reconfigurable
HPC: Computación de alto desempeño
HPC desde la perspectiva del software
Sistema operativo
Los procesadores, independiente de su arquitectura, tienen
su conjunto de instrucciones, relacionadas en su forma
básica al direccionamiento de memoria, manejo de
datos y a la entrada/salida. Estos recursos son
controlados por el sistema operativo.
La HPC requiere un sistema operativo que permita además
de las funciones básicas mencionadas, de
características como: multitarea, multiusuario,
multiplataforma, memoria compartida y distribuida,
manejo de red.
HPC: Computación de alto desempeño
HPC desde la perspectiva del software
Lenguaje y compilador
Asociado al sistema operativo la HPC requiere de un
lenguaje de programación y un compilador para ese
programa.
Para el supercomputador Cray1, se liberó el primer
paquete de software conformado por:
COS: Cray Operative system (Mejorado como UNICOS)
CAL: Cray assembler lenguage
CFT: Cray fortran
HPC: Computación de alto desempeño
HPC desde la perspectiva del software
Anotaciones
Hasta el 2006, UNIX, en todas sus variantes, fue el
sistema operativo de mayor uso en los
supercomputadores donde se realizan HPC.
A abril 17 de 2009, el 88% de los 500 supercomputadores
más rápidos, utilizan LINUX. <http://www.top500.org>
En los lenguajes de programación dominantes estan C++ y
fortran 90, con sus respectivos compiladores.
HPC: Computación de alto desempeño
HPC desde la perspectiva del software
MPI
Conseguir HPC, requiere de la conexión de varios procesadores, y
tener acceso a la memoria, lo que hace necesario librerías
encargadas del paso de mensajes.
Para suplir este requerimiento, se cuenta con la librería estándar: MPI (
Message passing interface ), que permite la comunicación entre
múltiples procesos, en cualquier ambiente paralelo.
MPI permite por ejemplo asignar el numero de procesadores en los
que de dividirá la tarea, el numero de hilos, entre otros.
<http://www.mpi-forum.org/>
HPC: Computación de alto desempeño
HPC desde la perspectiva del software
MPI:
“Hola
mundo”
.
HPC: Computación de alto desempeño
HPC desde la perspectiva del software
MPI:
“Hola
mundo”
.
mejorado
HPC: Computación de alto desempeño
HPC desde la perspectiva del software
MPI:
“Hola
mundo”
.
Resultados con 8 hilos
HPC: Computación de alto desempeño
HPC desde la algoritmia
En serie y en paralelo.
Lograr procesamiento más rápido, se debe tener en cuanta que si se
divide un proceso en procesos más pequeños, y cada uno es
asignado a un procesador, dentro de una arquitectura en la que
existe comunicación entre las unidades de procesamiento, se
obtienen respuestas en menor tiempo comparado con el tiempo que
tomaría un solo procesador en realizar la misma tarea.
Ejemplo simple:
A. Serializado
B. Paralelizado
1a=3+4
2.b = 6 - 2
3.c = a + b
HPC: Computación de alto desempeño
HPC RC
Reconfigurable computing
Arquitectura de la computación reconfigurable
HPC: Computación de alto desempeño
FPGA
HPC RC
Reconfigurable computing
Estructura de la librería RASC
(Opuesto a ASIC application-specific integrated circuit)
RASC permite a los
usuarios, en un ambiente
de software, tener control
de FPGA´s, en términos de
“C++” y herramientas de
linux.
HPC: Computación de alto desempeño
HPC RC
Reconfigurable computing
Arquitectura RASC con la capa “Core services”
Core Services: Todas las FPGA´s conectadas a TIO en un bloque
RASC, contendrán un conjunto de instrucciones, o núcleo lógico de
SGI, que controlan el movimiento de datos, inicialización de
funciones.
NUMA Non-Uniform Memory Access
HPC: Computación de alto desempeño
HPC RC
Reconfigurable computing
Arreglo de FPGA masivamente paralelo
HPC: Computación de alto desempeño
HPC RC
VHDL: VHSIC y HDL
Es un lenguaje utilizado para programar dispositivos lógicos
programables.
VHSIC: es el acrónimo de Very High Speed Integrated Circuit
HDL: es a su vez el acrónimo de Hardware Description Language
Hay 4 formas de describir un circuito con VHDL:
FUNCIONAL
FLUJO DE DATOS
ESTRUCTURAL
MIXTA
HPC: Computación de alto desempeño
HPC RC
VHDL: Formas de describir un circuito
Funcional: Describimos la forma en que se comporta el circuito. Esta es la
forma que más se parece a los lenguajes de software ya que la descripción
es secuencial. Estas sentencias secuenciales se encuentran dentro de los
llamados procesos en VHDL. Los procesos son ejecutados en paralelo
entre sí, y en paralelo con asignaciones concurrentes de señales y con las
instancias a otros componentes.
Flujo de datos: describe asignaciones concurrentes (en paralelo) de señales.
Estructural: se describe el circuito con instancias de componentes. Estas
instancias forman un diseño de jerarquía superior, al conectar los puertos
de estas instancias con las señales internas del circuito, o con puertos del
circuito de jerarquía superior.
Mixta: combinación de todas o algunas de las anteriores.
HPC: Computación de alto desempeño
HPC RC
VHDL: Ejemplo compuerta NAD
-- (this is a VHDL comment)
-- import std_logic from the IEEE library
library IEEE;
use IEEE.std_logic_1164.all;
-- this is the entity
entity ANDGATE is
port (
IN1 : in std_logic;
IN2 : in std_logic;
OUT1: out std_logic);
end ANDGATE;
architecture RTL of ANDGATE is
begin
OUT1 <= IN1 and IN2;
end RTL;
HPC: Computación de alto desempeño
HPC RC
VHDL: Ejemplo Contador
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.numeric_std.all; -- for the unsigned type
entity counter_example is
generic ( WIDTH : integer := 32);
port (
CLK, RESET, LOAD : in std_logic;
DATA : in unsigned(WIDTH-1 downto 0);
Q : out unsigned(WIDTH-1 downto 0));
end entity counter_example;
architecture counter_example_a of counter_example is
signal cnt : unsigned(WIDTH-1 downto 0);
begin
process(RESET, CLK)
begin
if RESET = '1' then
cnt <= (others => '0');
elsif rising_edge(CLK) then
if LOAD = '1' then
cnt <= DATA;
else
cnt <= cnt + 1;
end if;
end if;
end process;
Q <= cnt;
end architecture counter_example_a;
HPC: Computación de alto desempeño
Bibliografía
http://es.wikipedia.org/wiki/Procesadores_escalares
http://www2.gup.jku.at/thesis/diploma/bernhard_reitinger/main/node10.html#flynn
http://en.wikipedia.org/wiki/Distributed_operating_system
http://www.csa.ru/CSA/News/msg00912.htmr
http://es.wikipedia.org/wiki/Procesador_vectorial
http://technet.microsoft.com/en-us/library/cc720120.aspx
http://en.wikipedia.org/wiki/High_performance_computing
http://www.intel.com/cd/products/services/emea/spa/processors/itanium/373613.htm
http://download.intel.com/products/processor/itanium/dc_prod_brief.pdf
http://oss.sgi.com/projects/numa/
http://www.wikilearning.com/tutorial/caracteristicas_principales_de_linux-caracteristicas_de_linux/20536-2
“RASC Algorithm FPGA Hardware Design Guide”..
<http://techpubs.sgi.com/library/tpl/cgi-bin/getdoc.cgi/linux/bks/SGI_EndUser/books/RASC_UG/sgi_html/ch03.html>
Descargar

HPC PRESENTACION ABRIL17 K9