CLUSTER FING: ARQUITECTURA Y APLICACIONES

Documentos relacionados
Sistemas Complejos en Máquinas Paralelas

PROCESOS E HILOS - Hilo

TEMA 2: PROGRAMACIÓN PARALELA (I)

Programación de Multitareas utilizando Hilos

CARACTERIZACION DE PROBLEMAS A SOLUCIONAR MEDIANTE PROGRAMACIÓN MULTIPROCESO DE MEMORIA COMPARTIDA. Autor ERIKA VIVIANA RIAÑO BEJAR

Programación Gráfica de Altas Prestaciones

Informática Electrónica Concurrencia

Es una API (Aplication Program Interface) que se usa para paralelismo basado en hilos múltiples en entornos de memoria compartida

Hilos. Módulo 4. Departamento de Informática Facultad de Ingeniería Universidad Nacional de la Patagonia San Juan Bosco. Hilos

Cómputo paralelo con openmp y C

MULTIPROCESADORES TIPOS DE PARALELISMO

Sistemas Operativos. Procesos

Fundamentos de los Sistemas Operativos

Francisco J. Hernández López

Introducción a la Programación de Memoria Compartida.. con OpenMP

CLUSTER FING: ARQUITECTURA Y APLICACIONES

Multiprocesadores de Memoria Compartida

Entornos de programación paralela basados en modelos/paradigmas

Taller de Programación Paralela

Arquitectura de Computadoras. Clase 9 Procesamiento paralelo

Paralelización de Programas Secuenciales: OpenMP

TEMA 4 PROCESAMIENTO PARALELO

Concurrencia de Procesos

OpenMP. Qué es OpenMP?

Planificaciones Sistemas Operativos. Docente responsable: MENDEZ MARIANO. 1 de 6

Planificaciones Sistemas Operativos. Docente responsable: MENDEZ MARIANO. 1 de 6

COMPARACIÓN DE MODELOS DE SINCRONIZACIÓN EN PROGRAMACIÓN PARALELA SOBRE CLUSTER DE MULTICORES

Planificaciones Sistemas Operativos. Docente responsable: MENDEZ MARIANO. 1 de 5

Concurrencia y Paralelismo

Ejecución serial: las tareas/instrucciones de un programa son ejecutadas de manera secuencial, una a la vez.

Tecnología de software para sistemas de tiempo real

Hilos. Módulo 4. Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur

Programación en Entornos Paralelos: MPI

Factores de Rendimiento en Entornos Multicore

de Gran Canaria Centro de Tecnología Médica Programación Concurrente

Procesos y Threads Procesos y Threads. Rendimiento Rendimiento (paralelismo) (paralelismo) Productividad Productividad

Paralelismo _Arquitectura de Computadoras IS603

INFORMATICA III. Cap. I: Plataformas

PROGRAMACIÓN PARALELA. Modelos de programación paralela Paradigmas de programación paralela

PARTE II PROGRAMACION CON THREADS EN C

Computación 1. Roles en la interconexión

Paralelismo. MPI Paso de mensajes. Francisco García Sánchez Departamento de Informática y Sistemas

TAREA 1. INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS.

Preparación y Adaptación de Códigos Científicos para su Ejecución Paralela TICAL 2018

CONCEPTO. Actúa de intermediario entre el hardware y los programas de aplicación.

Programación Concurrente y Paralela. Unidad 1 Introducción

Analista Universitario en Sistemas. Sistemas Operativos. Instituto Politécnico Superior THREADS

PARADIGMA y LENGUAJES DE PROGRAMACIÓN

TEMA 10 INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS DISTRIBUIDOS. Introducción Hardware Software Aspectos de diseño

TEMA 9. SISTEMAS OPERATIVOS DISTRIBUIDOS

SISTEMAS OPERATIVOS - DEFINICIÓN:

Universisdad de Los Andes Facultad de Ingeniería Escuela de Sistemas

Programación Concurrente Recopilación de teoría referente a la materia

TEMA 5: PARALELISMO A NIVEL DE HILOS, TAREAS Y PETICIONES (TLP, RLP) (primera parte).

PROCESAMIENTO DISTRIBUIDO

Fundamentos de los Sistemas Operativos. Tema 2. Procesos José Miguel Santos Alexis Quesada Francisco Santana

CÓMPUTO DE ALTO RENDIMIENTO EN MEMORIA COMPARTIDA Y PROCESADORES GRÁFICOS

Guía y fundamentos de la programación en paralelo

Computación Conociendo la herramienta de cálculo. La Computadora

INTRODUCCION A LA COMPUTACION PARALELA. 2nd Workshop: New Frontiers of Bioinformatics in Latin America Gridding Biology. Dr.

Modelos de Programación Paralela

Introducción a los Sistemas Multiprocesadores

1 Primitivas básicas de OpenMP

Diseño de Sistemas Distribuidos Máster en Ciencia y Tecnología Informática Curso Presentación e introducción

Proceso. Threads, SMP, and Microkernels. Multithreading. Proceso

GPGPU ( GENERAL PURPOSE COMPUTING ON GRAPHICS PROCESSING UNITS)

Hilos. Hilos. Revisión Modelos Multihilados Librerías de Hilos Aspectos sobre Hilos Ejemplos de Sistemas Operativos Hilos en Linux

Introducción a la Arquitectura y Plataforma de Programación de Cómputo Paralelo CUDA (36 hrs) Instructor M. en C. Cristhian Alejandro Ávila-Sánchez

COMPUTACIÓN DE ALTA PERFORMANCE

ESCUELA DE INGENIERIA Informática Y Sistemas

Computación Matricial y Paralela

Threads. Hilos - Lightweight process - Procesos ligeros

HERRAMIENTAS SOFTWARE PARA SISTEMAS DISTRIBUIDOS

ARQUITECTURA DE SISTEMAS PARALELOS 2. 4º INGENIERÍA INFORMÁTICA. PRÁCTICA 4. PROGRAMACION PARALELA CON openmp.

Procesamiento Paralelo

Paralelismo en el procesador

Sistemas Operativos INF - 151

Guillermo Román Díez

Hilos (threads) Realizado por M. Curiel

TEMA 1. FUNDAMENTOS DE LA CONCURRENCIA

Evolución del software y su situación actual

Introducción a los Sistemas de Tiempo Real Í d n i dice

Threads, SMP y Microkernels. Proceso

IMPLEMENTACIÓN DE COMPUTACIÓN DE ALTO RENDIMIENTO Y PROGRAMACIÓN PARALELA EN CÓDIGOS COMPUTACIONALES CARLOS ANDRÉS ACOSTA BERLINGHIERI

EVOLUCIÓN DE LOS PROCESADORES

CDI Arquitecturas que soportan la concurrencia. granularidad

Guía práctica de estudio 11 Introducción a OpenMP.

Introduccion a Sistemas Operativos. Ej: Linux

Francisco Javier Hernández López

6. Enumere tres ventajas de los ULT frente a los KLT.

FUNCIONAMIENTO DEL ORDENADOR

SIMULACIÓN GRÁFICA DE EVENTOS PARALELOS EN TIEMPO REAL SINCRONIZADOS CON MENSAJES. Dr. Maximino Peña Guerrero Ing. José de Jesús Negrete Redondo

Tema 7. Mejora del rendimiento: introducción a la segmentación y a las arquitecturas paralelas

SISTEMAS OPERATIVOS Introducción. Amilcar Meneses Viveros

Concurrencia. Programación Concurrente Procesos Comunicación entre Procesos (IPC) con espera ocupada.

INFORMATICA III. Capítulo I: Plataformas

Estructura Interna de La PC. 1. Microprocesadores 2. I/O ( Entrada / Salida) 3. Memoria

José Matías Cutillas Lozano PROGRAMACIÓN PARALELA Y COMPUTACIÓN DE ALTAS PRESTACIONES

METODOLOGÍA DE LA PROGRAMACIÓN PARALELA. Modelos de programación paralela Paradigmas de programación paralela

Transcripción:

CLUSTER FING: ARQUITECTURA Y APLICACIONES Gerardo Ares, Pablo Ezzatti Centro de Cálculo, Instituto de Computación FACULTAD DE INGENIERÍA, UNIVERSIDAD DE LA REPÚBLICA, URUGUAY

CONTENIDO Introducción Conceptos básicos de Procesos Arquitectura de memoria compartida Threads OpenMP, HPF, etc. Ejemplos de utilización

Programación paralela INTRODUCCIÓN Varios procesos trabajan cooperativamente en la resolución de un problema (complejo). Objetivos: Mejorar el desempeño. Escalabilidad incremental. Paradigmas de programación paralela: Paralelismo de memoria compartida Comunicaciones y sincronizaciones mediante recurso común (memoria). Paralelismo de memoria distribuida Comunicaciones y sincronizaciones mediante pasaje de mensajes explícitos.

INTRODUCCIÓN Paralelismo de memoria compartida Comunicaciones y sincronizaciones mediante recurso común (memoria). Es necesario sincronizar el acceso y garantizar exclusión mutua a secciones compartidas. Paralelismo multithreading: Bibliotecas estándares (e.g., en lenguaje C). Bibliotecas específicas.

Que es? PROCESOS Los sistemas operativos definen el concepto de proceso como un programa en ejecución. Los procesos se componen de un conjunto de instrucciones a ejecutar que operan sobre su estado (memoria del proceso). Cada proceso tendrá un espacio de memoria asignado. En los sistemas operativos modernos este espacio de memoria es denominado espacio de direccionamiento virtual de un proceso (virtual address space). A su vez, cada proceso deberá contar con al menos un contador de programa (PC = program counter), denominado hilo de ejecución (thread). El contador de programa es un registro que indica cuál de todas las instrucciones del proceso es la siguiente a ejecutar por el proceso.

PROCESOS El sistema operativo es el encargado de administrar las unidades de ejecución que cuente el hardware (procesadores). A lo largo de su existencia un proceso estará ejecutando sus instrucciones en un procesador o bloqueado (esperando por algún recurso).

PROCESOS En los años 90, con el advenimiento de los sistemas multiprocesadores, fueron surgiendo sistemas operativos que permitían a un proceso tener más de un contador de programa (PC) (hilo de ejecución). A un proceso se le permitía ejecutar en más de un recurso procesador en forma simultánea, logrando paralelismo dentro del proceso. Los hilos de un mismo proceso ejecutan sobre un mismo espacio de direccionamiento. Con el surgimiento de hardware multi-core de los últimos años y el salto a arquitecturas de 64bits, la utilización de hilos de ejecución en un mismo proceso a reflotado.

ARQUITECTURA El hardware de los equipos se componen de unidades de ejecución (procesadores), memoria (RAM) y dispositivos de entrada/salida (discos, red, etc.). Con el objetivo de lograr un mejor desempeño, se diponen de una estructura jerárquica de la memoria: Cache de 1er nivel. Procesador. Cache de 2no. Nivel Compartida entre cores. Memoria RAM. La interconexión de los procesadores a la memoria y los dispositivos de entrada/salida es a través de dos chip: el MCH y el ICH. El FSB es el bus de interconexión entre los procesadores y el controlador de memoria.

ARQUITECTURA Los equipos de cómputo se componen de dos procesadores Quad- Core con las siguientes especificaciones: Característica Procesador Velocidad del reloj Cache de 1er nivel Cache de 2do nivel FSB Valor E5430 2.66 GHz 32 KB + 32 KB 2x6MB 12MB/CPU 1333 MHz

THREADs Una de los paradigmas de programación paralela es la programación con hilos (threads). Los sistemas operativos modernos brindan una interfaz de programación que permite la utilización de varios hilos de ejecución dentro de un mismo proceso. Brindan herramientas básicas para el manejo de hilos: creación, destrucción y sincronización. La programación con threads permite tener un mayor control sobre el paralelismo, pero requiere que el paralelismo sea implementado en su totalidad por el programador. Por lo tanto, requiere de un mayor conocimiento y dedicación que otras herramientas de programación de alto nivel.

THREADs A diferencia de otros paradigmas, la programación con hilos no necesita herramientas de intercambio de información, ya sea a través de mensajes o primitivas a nivel del sistema operativo, ya que cuenta los procesos comparten el espacio de direccionamiento. Esto permite una mayor eficiencia frente a la programación con procesos que no comparten el espacio de direccionamiento. La gran desventaja del uso exclusivo de esta programación es que no escalan más allá de una máquina. Para esto se deben utilizar otros paradigmas de la programación paralela distribuida. Con el uso en conjunto de los dos paradigmas se logra obtener el mayor rendimiento en los clusters HPC de hoy día.

THREADs Existen varias bibliotecas de programación con threads. Por lo general, cada sistema operativo brinda una propia. Un estándar POSIX es la librería de programación C con hilos pthread. Esta librería es implementada por la mayoría de los sistemas UNIX (Linux, Solaris, AIX). Por lo que hace que la programación sea portable. Para la creación de threads la librería brinda la primitiva en pthread_create. Ejemplo: static thread_esclavo(void * args) { } pthread_t thread; if (pthread_create(&thread,&args,thread_esclavo,&params) < 0) error();

THREADs Para la destrucción de un thread la librería brinda la primitiva en C pthread_destroy. pthread_destroy(null); La librería brinda mecanismos para la sincronización entre los threads: Variable de mutuo exclusión: pthread_mutex_t. Variables de condición: pthread_cond_t.

THREADs Las variables de mutuo exclusión permiten a los threads ejecutar secciones críticas en forma mutuoexcluyente (atomicidad). Las primitivas utilizadas para la mutuo exclusión son: pthread_mutex_lock(&mutex). pthread_mutex_unlock(&mutex). Las variables de condición permiten bloquear a un proceso mientras una condición no esté dada. Las primitivas de brindadas por la librería pthreads son: pthread_cond_wait(&cond, &mutex) pthread_cond_signal(&cond).

THREADs Ejemplo: pthread_mutex_lock(&mutex); while (contador!= 10) pthread_cond_wait(&cond,&mutex); pthread_mutex_unlock(&mutex);

OpenMP Que es? Es una API (Application Programming Interface) para aplicar paralelismo sobre memoria compartida utilizando multi-threads. Compuesta por: Directivas para el compilador Biblioteca de Rutinas Variables de ambiente Portable: C/C++ y Fortran, multiplataforma. Se podrían utilizar herramientas de bajo nivel (threads, semaforos, etc). Se pierde en eficiencia y flexibilidad Se gana en portabilidad.

OpenMP OpenMP utiliza el modelo de ejecución paralela fork-join: Un programa comienza su ejecución con un proceso único (thread maestro). Cuando se encuentra la primera construcción paralela crea un conjunto de threads. El trabajo se reparte entre todos los threads, incluido el maestro. Cuando termina la región paralela sólo el thread maestro continua la ejecución. Los diferentes threads se comunican a través de variables compartidas. Para evitar el acceso simultáneo se utilizan directivas de sincronización. Las sincronizaciones son costosas -> hay que tratar de evitarlas. Las directivas se aplican a bloques estructurados.

OpenMP Sintaxis general de las directivas Fortran: centinela nombre_directiva [cláusulas] Centinelas: C$OMP, *$OMP (en programas de formato fijo)!$omp (en programas de formato fijo o variable) Sintaxis general de las directivas C y C++: #pragma omp nombre_directiva [cláusulas]

Directivas: Regiones paralelas DO /for paralelos OpenMP Secciones paralelas / Single Construcciones de sincronización Biblioteca: OMP_GET_NUM_THREADS OMP_GET_THREAD_NUM OMP_SET_NUM_THREADS OMP_GET_MAX_THREADS OMP_INIT_LOCK Variables.

Directiva PARALLEL: OpenMP Fortran:!$OMP PARALLEL[cláusulas] bloque estructurado!$omp END PARALLEL C/C++: #pragma omp parallel[cláusulas] { bloque estructurado }

Directiva Do/for: Fortran: OpenMP!$OMP DO [clause...] do_loop!$omp END DO [ NOWAIT ] : C/C++: #pragma omp for [clause...] newline for_loop

HPF Extensión de FORTRAN 90 para incluir (más) paralelismo. FORTRAN 90 ya incluía: Sintaxis libre. Operaciones vectoriales. Allocamiento dinámico. Permite definir tipos de datos estructurados. Recursión. Módulos y conceptos de programación orientada objetos.

HPF Objetivos del HPF: Soportar paralelismo a nivel de datos. Soportar optimizaciones de códigos en diferentes arquitecturas. Conceptos Cada procesador ejecuta el mismo programa (SPMD). Cada procesador opera sobre un sub-conjunto de los datos. HPF permite especificar que datos procesa cada procesador.

HPF Directivas!HPF$ <directiva> Si se trabaja con un compilador HPF se interpretan las directivas. Sino, p. ej. compilador F90, se toman como comentario.

HPF Processor - Establece una grilla lógica de procesadores!hpf$ PROCESSOR, DIMENSION(4) :: P1!HPF$ PROCESSOR, DIMENSION(2,2) :: P2!HPF$ PROCESSOR, DIMENSION(2,1,2) :: P3 Distribute - Especifica como distribuir los datos entre las unidades de procesamiento!hpf$ DISTRIBUTE (BLOCK) ONTO P1 ::A!HPF$ DISTRIBUTE (CYCLIC) ONTO P1 ::B!HPF$ DISTRIBUTE (CYCLIC,BLOCK) ONTO P2 ::B Variantes BLOCK(k) y CYCLIC(k)

HPF BLOCK REAL, DIMENSION(16) :: A!HPF$ PROCESSOR, DIMENSION(4) :: P1!HPF$ DISTRIBUTE (BLOCK) ONTO P1 ::A CYCLYC REAL, DIMENSION(16) :: A!HPF$ PROCESSOR, DIMENSION(4) :: P1!HPF$ DISTRIBUTE (CYCLYC) ONTO P1 ::A

HPF Quien calcula? El dueño del lado izquierdo de la asignación!! DO i=1,n A(i) = B(i) C(i) END DO Reglas Más procesos, más comunicaciones. Buscar buen balance. Preservar la localidad de datos. Usar sintaxis vectorial.

Ejemplo I Trabajos preliminares sobre radiosidad y paralelismo. Eduardo Fernández y Pablo Ezzatti Resolución (con pivoteo) de sistemas lineales completos de problemas de radiosidad utilizando OpenMP sobre un equipo de 8 procesadores. Buena escalabilidad con poco esfuerzo

Ejemplo II Caffa3d.MB. Gabriel Usera. Simulaciones de fluidos en 3 dimensiones (ecuaciones de Navier-Stokes ) mediante la discretización de volúmenes finitos. Aplicado al solver lineal (SIP) Alcanza speed up de 1,7 en una máquina con doble procesador para 50^3 nodos.

Ejemplo II