Está en la página 1de 35

TUTORIAL : COMPUTACIÓN de

ALTO DESEMPEÑO

SERGIO NESMACHNOW
Centro de Cálculo, Instituto de Computación

FACULTAD DE INGENIERÍA, UNIVERSIDAD DE LA REPÚBLICA, URUGUAY


TUTORIAL: COMPUTACIÓN de ALTO DESEMPEÑO
CONTENIDO

• Introducción
• Computadores paralelos
• Técnicas de programación paralela
• Aplicaciones
• Conclusiones

TUTORIAL: COMPUTACIÓN de ALTO DESEMPEÑO


INTRODUCCIÓN

• Importancia de poder satisfacer los requisitos crecientes de poder de


cómputo
– Problemas complicados.
– Modelos complejos.
– Grandes volúmenes de datos.
– Capacidad de respuesta en tiempo limitado (sistemas de tiempo real).

• Procesamiento paralelo
– Varios procesos cooperan para resolver problema común.
– Aplicación de técnicas de división de tareas o de datos para reducir el
tiempo de ejecución de un proceso o una aplicación, mediante la
resolución simultánea de algunos de los subproblemas generados.

TUTORIAL: COMPUTACIÓN de ALTO DESEMPEÑO


INTRODUCCIÓN
• Computador paralelo
– Conjunto de procesadores capaces de trabajar cooperativamente en
la resolución de problemas computacionales.
– La definición incluye un amplio espectro: supercomputadoras,
procesadores masivamente paralelos (MPP), clusters, etc.
– Característica fundamental: disponibilidad de múltiples recursos de
cómputo.

• Computación de alto desempeño


– Ha dejado de ser “exótica”.
– Posibilitada por avances en diferentes tecnologías:
– Poder de procesamiento (microprocesadores).
– Redes (comunicación de datos).
– Desarrollo de bibliotecas e interfaces para programación.

TUTORIAL: COMPUTACIÓN de ALTO DESEMPEÑO


EVOLUCIÓN TECNOLÓGICA

Collosus 2 (UK), primer computador IBM NORC (Columbia U, USA),


paralelo: 50.000 op/s. reloj de 1 µs., 67.000 op/s.
1938 1948 1964
1946 1954
Zuse Z1 (Ale), primer ENIAC (USA), 5.000 op/s. IBM 7030 “Stretch” (LANL, USA),
computador mecánico: 1 op/s. 1.2 MFLOPS.

TUTORIAL: COMPUTACIÓN de ALTO DESEMPEÑO


EVOLUCIÓN TECNOLÓGICA

M-13 (Nauchno-Issledovatesky Institute


Vychislitelnyh Kompleksov, URSS): 2.4 GFLOPS
1985 Intel ASCI Red/9152 (Sandia NL, USA): 1.338 TFLOPS 2008

1984 1997
Cray-2/8 (LANL, USA): Roadrunner (LANL, USA):
3.9 GFLOPS. 1.026 PFLOPS

TUTORIAL: COMPUTACIÓN de ALTO DESEMPEÑO


EVOLUCIÓN TECNOLÓGICA
• Similar comportamiento para los indicadores de desempeño.
– Poder de cómputo.
– Frecuencia de relojes.
– Densidad de circuitos en chips de procesadores.
– Capacidad de almacenamiento secundario.
– Capacidad de transmisión por bus/red.

• Siguen un comportamiento exponencial, con diferentes


pendientes.

TUTORIAL: COMPUTACIÓN de ALTO DESEMPEÑO


EVOLUCIÓN TECNOLÓGICA
• Noviembre de 2011:
– K computer (RIKEN Advance Institute for Computational Science, Japón)
– Pico de desempeño real (LINPACK): 10.5 petaflops (10.5××1015 operaciones de
punto flotante por segundo)
• Pico teórico: 11.3 petaflop/s.
• Fujistsu cluster.
• 68.544 SPARC64 VIIIfx procesadores 2.0 GHz, 8-core.
• 1410 terabytes de memoria.
• 705.024 núcleos de procesamiento.
• Red de interconexión de seis dimensiones, interfaz basada en Open MPI.
• Sistema operativo basado en Linux.
• File system paralelo basado en Lustre, optimizado para escalar hasta
varios cientos de petabytes.

TUTORIAL: COMPUTACIÓN de ALTO DESEMPEÑO


EVOLUCIÓN TECNOLÓGICA

Kei

TUTORIAL: COMPUTACIÓN de ALTO DESEMPEÑO


EVOLUCIÓN TECNOLÓGICA: ARQUITECTURAS

TUTORIAL: COMPUTACIÓN de ALTO DESEMPEÑO


EVOLUCIÓN TECNOLÓGICA: SISTEMAS OPERATIVOS

TUTORIAL: COMPUTACIÓN de ALTO DESEMPEÑO


INFRAESTRUCTURA
• La tecnología ha avanzado, permitiendo disponer de máquinas
paralelas “caseras”.
– Clusters de computadores de bajo costo.

• Internet surge como una fuente potencial de recursos de


computación ilimitados.
• Se ha desarrollando la tecnología grid (y recientemente cloud):
– Permiten compartir recursos informáticos (locales o remotos) como si
fueran parte de un único computador.
– Brinda capacidad de gestionar y distribuir la potencia de cálculo
disponible en instituciones (investigación, empresas, etc.)
– Empresas e investigadores trabajan en diseño de soluciones
tecnológicas en este sentido.

• Estas alternativas constituyen opciones realistas para disponer de


la capacidad de cómputo para resolver problemas en los entornos
académicos, industriales y empresariales, a bajo costo.
TUTORIAL: COMPUTACIÓN de ALTO DESEMPEÑO
EL CLUSTER FING
• Infraestructura de cómputo de alto desempeño de la Facultad de Ingeniería
• 1364 núcleos de procesamiento (404 de CPU y 960 de GPU)

http://www.fing.edu.uy/cluster
TUTORIAL: COMPUTACIÓN de ALTO DESEMPEÑO
CLUSTER FING

www.fing.edu.uy/cluster
TUTORIAL: COMPUTACIÓN de ALTO DESEMPEÑO
LOS PROBLEMAS TAMBIÉN CRECEN
• Requerimientos computacionales de problemas complejos.

TUTORIAL: COMPUTACIÓN de ALTO DESEMPEÑO


PROCESAMIENTO PARALELO

• En este contexto se ha desarrollado activamente la


computación paralela:
– Basado en el estudio en Universidades e Institutos.
– Aplicado directamente en la industria, organismos científicos y
las empresas.
• Computación paralela:
– A nivel de instrucciones (pipeline).
– Paralelismo a través de hilos (multithreading).
– Paralelismo de alto nivel:
– Sobre supercomputadores
– Sobre máquinas paralelas de bajo costo

• Computación paralela de alto nivel:


– Varios procesos en ejecución simultánea cooperan
para resolver un problema común

TUTORIAL: COMPUTACIÓN de ALTO DESEMPEÑO


PROCESAMIENTO DISTRIBUIDO
• El desarrollo de las redes de computadoras ha permitido el
procesamiento distribuido.
– Clusters distribuidos, grid computing y cloud computing.

• Conceptos
– Procesadores independientes, con autonomía de procesamiento.
– Interconexión mediante redes.
– Cooperación para lograr un objetivo global.
– Datos compartidos: varios “repositorios” de datos.
– Sincronización y comunicación:
– En general a través del pasaje explícito de mensajes.

TUTORIAL: COMPUTACIÓN de ALTO DESEMPEÑO


OBJETIVOS DE LA PROGRAMACIÓN PARALELA

• La computación paralela tiene como principal objetivo la resolución


eficiente de instancias de grandes dimensiones de problemas
complejos.
• Además, desde el punto de vista del usuario, la computación paralela
debe proveer:
– Transparencia de la arquitectura y de los mecanismos de interconexión.
– Simplicidad de uso y confiabilidad.
– Manejo de excepciones y tolerancia a fallos.
– Mecanismos para asegurar la portabilidad y la ejecución en entornos
heterogéneos.
– Soporte para lenguajes tradicionales de alto nivel.

TUTORIAL: COMPUTACIÓN de ALTO DESEMPEÑO


TÉCNICAS DE PROGRAMACIÓN PARALELA

• Las técnicas de programación paralela aplican estrategias de


DESCOMPOSICIÓN o PARTICIONAMIENTO de datos y de cómputo,
para dividir un problema en subproblemas de menor complejidad.
• El objetivo primario de la descomposición será dividir en forma
equitativa tanto los cálculos asociados con el problema como los
datos sobre los cuales opera el algoritmo.
• Según se enfoque principalmente en la descomposición de datos o
de tareas, resulta una técnica diferente de programación paralela.
• Las técnicas más difundidas son las de descomposición
de dominio y descomposición funcional.

TUTORIAL: COMPUTACIÓN de ALTO DESEMPEÑO


DESCOMPOSICIÓN DE DOMINIO

• Se concentra en particionar los datos del problema


– Dividiéndolos en piezas de (aproximadamente) el mismo tamaño
• Luego se dividen los cálculos a realizar
• Los datos a dividir pueden ser:
– La entrada del programa
– La salida calculada por el programa
– Datos intermedios calculados por el programa
• No existe una regla general para realizar la división de datos,
existen algunas sugerencias dadas por:
– La estructura o “geometría” del problema
– La idea de concentrarse primero en las estructuras de datos
más grandes o las accedidas con mayor frecuencia

TUTORIAL: COMPUTACIÓN de ALTO DESEMPEÑO


DESCOMPOSICIÓN DE DOMINIO

TUTORIAL: COMPUTACIÓN de ALTO DESEMPEÑO


DESCOMPOSICIÓN DE DOMINIO
MODELO DE PROGRAMA, PROCESAMIENTO SINCRÓNICO

1. - Cargar programa
2. - Broadcast de Instrucción Host o Nodo Intermedio
Cargar un Par de datos tiempo1

Multiplicar tiempo2
..
.

Nodo 1 Nodo 2 Nodo 3


tiempo1 Cargar A, B Cargar C, D Cargar E, F

tiempo2 A=AxB C=CxD E=ExF


.. .. ..
. . .
Los nodos reciben y ejecutan

TUTORIAL: COMPUTACIÓN de ALTO DESEMPEÑO


DESCOMPOSICIÓN DE DOMINIO
MODELO DE PROGRAMA, PROCESAMIENTO ASINCRÓNICO

Distribuir datos

Calcular Calcular Calcular Calcular


Comunicar/sincronizar Comunicar/sincronizar Comunicar/sincronizar Comunicar/sincronizar
Calcular Calcular Calcular Calcular

Recolectar resultados

TUTORIAL: COMPUTACIÓN de ALTO DESEMPEÑO


DESCOMPOSICIÓN DE DOMINIO
MODELO DE PROGRAMA, PROCESAMIENTO ASINCRÓNICO

Un mismo programa se ejecuta sobre diferentes conjuntos de datos


Nodo 1 Nodo 2 Nodo 3
Conseguir datos Conseguir datos Conseguir datos
if ... positivo if ... positivo if ... positivo
Hacer algo Hacer algo Hacer algo
if ... negativo if ... negativo if ... negativo
Hacer otra cosa Hacer otra cosa Hacer otra cosa
if ... es cero if ... es cero if ... es cero
Hacer una tercer Hacer una tercer Hacer una tercer
cosa cosa cosa

- TodosTodos los nodos


los nodos ejecutan
ejecutan el mismo
el mismo programa,
programa, pero pero
no lasnomismas
necesariamente
instrucciones
las mismas instrucciones.

TUTORIAL: COMPUTACIÓN de ALTO DESEMPEÑO


EJEMPLO: SETI@HOME
• Procesamiento distribuido en Internet.
• Objetivos:
– Búsqueda de indicios de inteligencia extraterrestre.
– Demostración práctica de la utilidad de la computación distribuida.
– Lanzado en 1999, precursor de más de 100 proyectos científicos en el área.
– 6 millones de participantes, 3 millones de hosts, 800 TFLOPS.
– Más de 2 millones de años de cómputo.

TUTORIAL: COMPUTACIÓN de ALTO DESEMPEÑO


DESCOMPOSICIÓN DE DOMINIO
SETI@HOME

Distribuir datos

Calcular Calcular Calcular Calcular


Enviar Enviar Enviar Enviar
resultados resultados resultados resultados

Recolectar resultados

TUTORIAL: COMPUTACIÓN de ALTO DESEMPEÑO


DESCOMPOSICIÓN FUNCIONAL
• Se concentra en particionar las operaciones del problema
– Se trata de dividir el procesamiento en tareas disjuntas
– Luego se examinan los datos a utilizar por las tareas definidas
• Caso típico:
– Distribuir código para asociar requerimientos a recursos locales
– Cada tarea trabaja temporalmente con sus datos locales, pero se
requiere comunicación para lograr la cooperación
set de instrucciones del problema

tarea 1
tarea 4
tarea 2
tarea 3

TUTORIAL: COMPUTACIÓN de ALTO DESEMPEÑO


DESCOMPOSICIÓN FUNCIONAL
Programa principal
Inicialización
Ejecutar sección secuencial
Configurar segmentos paralelos
Bifurcar segmentos paralelos

Segmento paralelo 1 Segmento paralelo 2 Segmento paralelo 3


Ejecutar una rutina Ejecutar una rutina Ejecutar una rutina
independiente independiente independiente
Iniciar/recibir comunicaciones Iniciar/recibir comunicaciones Iniciar/recibir comunicaciones

Esperar finalización de
segmentos paralelos
Recibir resultados y
combinarlos
TUTORIAL: COMPUTACIÓN de ALTO DESEMPEÑO
PARALELISMO OPTIMISTA
• Realizar operaciones adicionales previendo que deban ser
ejecutadas en el futuro (look-ahead execution)
– Bajo la hipótesis de que hay recursos disponibles para ejecutarlas.
if condicion then
Funcion1()
else
Funcion2()
end if
– Evaluar Función1() y Funcion2() de antemano, independientemente
del valor de la condición.
• Típico en aplicaciones de tiempo real.
– Ejemplo : sistemas que requieren conexión, cajeros automáticos.
• Típico mecanismo para proveer tolerancia a fallos.
– En aplicaciones distribuidas en Internet.

TUTORIAL: COMPUTACIÓN de ALTO DESEMPEÑO


MODELOS HÍBRIDOS

• Incluyen dos o más tipos de programación paralela para la


resolución de una misma aplicación.

• Comúnmente utilizados en programas paralelos distribuidos


en Internet (donde existe la posibilidad de disponer de
recursos ociosos adicionales).
– Combina una estrategia “tradicional” con el paralelismo
optimista, para mejorar la eficiencia o proveer tolerancia a fallos.
– Las principales ventajas son eficiencia y robustez, aunque el
manejo de los distintos modelos de paralelismo puede incluir
complejidades adicionales.

TUTORIAL: COMPUTACIÓN de ALTO DESEMPEÑO


IMPLEMENTACIÓN

• Existen lenguajes y bibliotecas que permiten desarrollar


programas paralelos en alto nivel
– Proveen abstracción del computador paralelo subyacente
– Permiten implementar la cooperación de varios procesos para
resolver el problema común
– Proveen primitivas/funciones para sincronización de procesos,
comunicación de datos, etc.
– Proporcionan diversos mecanismos para implementar tolerancia
a fallos y excepciones.
– Dan soporte para asegurar la portabilidad y garantizar la
ejecución en entornos paralelos heterogéneos.

TUTORIAL: COMPUTACIÓN de ALTO DESEMPEÑO


APLICACIONES de la COMPUTACIÓN
de ALTO DESEMPEÑO
• Amplia aplicabilidad en problemas científicos.
• Industriales.
– Química y bioingeniería.
– Estudio de estructuras moleculares, simulación de
reacciones, espectroscopía.
– Fluidodinámica.
– Análisis de flujos, turbulencias y simulaciones.
– Mecánica Industrial
– Diseño asistido. Modelos de elementos finitos.
– Medicina
– Estudio del genoma, medicina farmacéutica,
radioterapia.
– Electromagnetismo
– Diseño de dispositivos de grabación, instrumentos
médicos, tubos de rayos X, pantallas planas.

TUTORIAL: COMPUTACIÓN de ALTO DESEMPEÑO


APLICACIONES de la COMPUTACIÓN
de ALTO DESEMPEÑO
• Comerciales
– Telecomunicaciones
– Análisis de tráfico, desempeño y calidad de servicio.
– Redes de control inteligentes.
– Comercio electrónico
– Manejo transaccional en línea.
– Servicios web.
– Buscadores paralelos (metabuscadores).
– Sistemas de tiempo real.
– Bases de datos paralelas.
– Análisis de datos.
– Data mining.
– Análisis de mercado, series temporales, etc.

TUTORIAL: COMPUTACIÓN de ALTO DESEMPEÑO


COMPUTACIÓN de ALTO DESEMPEÑO

• Curso de grado, posgrado y actualización, Facultad de Ingeniería


– Dictado ininterrumpidamente desde 1993
– Solo tiene como requisitos previos conocimientos básicos de
computación
– Amplia gama de asistentes, de varias Facultades, empresas, etc.
– Dictado en el segundo semestre de cada año.
– Detalles en: www.fing.edu.uy/inco/cursos/hpc

TUTORIAL: COMPUTACIÓN de ALTO DESEMPEÑO


GRACIAS POR SU ATENCIÓN

FACULTAD DE INGENIERÍA, UNIVERSIDAD DE LA REPÚBLICA, URUGUAY


TUTORIAL: COMPUTACIÓN de ALTO DESEMPEÑO

También podría gustarte