Taller Computación Altas Prestaciones. Pedro Antonio Varo Herrero



Documentos relacionados
Programación Paralela y Distribuida

High Performance Computing y Big Data en AWS. +info: ( HPC y Big Data en AWS 16 Abril, / 14

Heterogénea y Jerárquica

TIER 0 Centros europeos. TIER 1 Centros nacionales. TIER 2 Centros regionales y universidades

Computacion de Alto Performance

CAR.

Múltiples GPU (y otras chauchas)

Equipamiento disponible

Mendieta. Carlos Bederián IFEG-CONICET, FaMAF-UNC WHPC13

UNIVERSIDAD CARLOS III DE MADRID DEPARTAMENTO DE INFORMÁTICA INGENIERÍA EN INFORMÁTICA. ARQUITECTURA DE COMPUTADORES II 19 de junio de 2007

Soluciones para entornos HPC

Arquitecturas GPU v. 2013

Recursos y servicios HPC en el BIFI

Cálculos en paralelo con FreeFem++

Programación en Paralelo con MPI en Clusters Linux

Montserrat González Ferreiro RES management engineer

CLUSTER FING: ARQUITECTURA Y APLICACIONES

Javier Pérez Mato µp para Comunicaciones Curso 2008/09 ETSIT - ULPGC

BSC MARENOSTRUM. Javier Bartolomé Rodriguez Systems Group

Laboratorio Nacional de Cómputo de Alto Desempeño: Fortalecimiento de la Infraestructura 2015

CLUSTER FING: PARALELISMO de MEMORIA DISTRIBUIDA

RECURSOS SUPERCOMPUTACIÓN BSC- CNS RES PRACE

EXPEDIENTE: 2/2015 ADQUISICIÓN E INSTALACIÓN DE INFRAESTRUCTURA CIENTÍFICA Y TECNOLÓGICA PARA CÉNITS PLIEGO DE PRESCRIPCIONES TÉCNICAS

INFORME DE PASANTIA Clúster de Consolas de PlayStation 3

MPI es un estándar de programación en paralelo mediante paso de mensajes que permite crear programas portables y eficientes.

FUNDAMENTOS DE COMPUTACIÓN PARA CIENTÍFICOS. CNCA Abril 2013

Evaluación del rendimiento de procesadores Intel Nehalem. Modelos x7550, x5670 y x5570

CENTRO DE SUPERCOMPUTACIÓN

Ingeniero en Informática

Requisitos Técnicos de Cluster Heterogéneo.

PPTSU DESCRIPCIÓN Y CARACTERÍSTICAS TÉCNICAS:

4. Programación Paralela

Lenguaje de Programación: Go

TIER 0 TIER 1 TIER 2

15. Arquitectura de los multiprocesadores. 16. Multiprocesadores de memoria compartida. 17. Multicomputadores.

Organización del Centro de Cálculo

Las TIC y la Supercomputacion en la Universitat de Valencia

GPU IMPLEMENTATIONS OF SCHEDULING HEURISTICS FOR HETEROGENEOUS COMPUTING ENVIRONMENTS

Curso: Uso de infraestructuras Clúster y Grid para proyectos de e-ciencia. Lanzamiento y Monitoreo de Jobs en Condor. GRID COLOMBIA - RENATA [Ciudad]

Procesamiento Paralelo

Segmentación de Imágenes en Procesadores Many-Core

Cómputo en paralelo con MPI

Introducción HPC. Curso: Modelización y simulación matemática de sistemas. Esteban E. Mocskos (emocskos@dc.uba.ar) Escuela Complutense Latinoamericana

EVALUACIÓN COMPARADA DEL RENDIMIENTO DEL PROCESADOR INTEL 5570 (NEHALEM)

ATLANTE! i n f r a e s t r u c t u r a d e s u p e r C o m p u t a c i ó n G o b i e r n o d e C a n a r i a s!

El Bueno, el Malo y el Feo

Laboratorio Nacional de Cómputo de Alto Desempeño: Fortalecimiento de la Infraestructura 2015

TUTORIAL: COMPUTACIÓN de ALTO DESEMPEÑO

Servicios avanzados de supercomputación para la ciència y la ingeniería

SEMINARIO PRÁCTICO Cómo elegir el sistema de cálculo científico ideal para mi investigación. Raúl Díaz

II. DISEÑO DEL SISTEMA. Introducción Instalación por red Arranque por red

Talleres CLCAR. CUDA para principiantes. Título. Mónica Liliana Hernández Ariza, SC3UIS-CRC NVIDIA Research Center

Paralelismo en Máquinas de Búsqueda

Capacidad de procesamiento del compilador Python para el Sistema Operativo Windows y Linux Palabras Clave:

Plataformas paralelas

La Red Española de Supercomputación RES

Redes de Altas Prestaciones

José Luis Montoya Restrepo

Programación en Entornos Paralelos: MPI

GANETEC SOLUTIONS HPC Farmacéuticas

Resolución de problemas en paralelo

Nicolás Zarco Arquitectura Avanzada 2 Cuatrimestre 2011

SISTEMAS DE MULTIPROCESAMIENTO

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

Facultad de Ingeniería ISSN: Universidad Pedagógica y Tecnológica de Colombia. Colombia

Oracle Database 12c: Flex ASM Por Wissem El Khlifi (Oracle ACE )

Mejor tecnología para aplicación práctica NOMAD

General Parallel File System

Introducción a Computación

Intel XeonPhi Workshop

Beneficios del uso del HPC en la industria

Adquisición de Datos usando Matlab

Programación híbrida en arquitecturas cluster de multicore. Escalabilidad y comparación con memoria compartida y pasaje de mensajes.

Computación Híbrida, Heterogénea y Jerárquica

Cluster Beowulf/MPI en Debian

Sistemas Multiprocesador de Memoria Compartida Comerciales

Modelo de paso de mensajes

Modelo de aplicaciones CUDA

Implementación de un Cluster de Computadoras con software libre para Computación Científica en Jicamarca

CAR. Responsable : María del Carmen Heras Sánchez. Asesores Técnicos : Daniel Mendoza Camacho Yessica Vidal Quintanar.

Brevísimo tutorial de MPI (Message Passing Interface) Miguel Vargas

Solución al Primer Reto

Dibujo Técnico Industrial. Prof. Aquiles M. Garcia.

Servidor. Comenzaremos por confirmar que el servicio NFS esta instalado y ejecutandose desde la terminal, escribiremos lo siguiente: #rpm -q nfs-utils

TRES PREGUNTAS SOBRE El Supercomputador ALTAMIRA Abierto a la Innovación

Redes de Altas Prestaciones

INTRODUCCIÓN A LA PROGRAMACIÓN DE COMPUTADORES DE MEMORIA DISTRIBUIDA USANDO MPI SISTEMAS PARALELOS Y DISTRIBUIDOS

Uso de modelos PGAS para computación de Alto Rendimiento en clusters Beowulf

Tutorial: Python + Soap Web Service. Daniel Montenegro Cordero

Programación estructurada

Workflow, BPM y Java Resumen de la presentación de Tom Baeyens

Gestor de Colas SGE. 1. Qué es? 2. Configuración actual en CICA 3. Comandos 4. Trabajos Paralelos 5. Entorno gráfico QMON

Uso del supercomputador Ben Arabí

Proyecto Grid Computing

Herramienta para la construcción de un cluster y la distribución de carga entre los nodos

Arquitectura de el Hp Superdome INTEGRANTES: Islas Islas Roberto A. Ortiz Flores Enrique A. Rico Vázquez Alejandro. Sistemas Operativos Avanzados

El Supercomputador MareNostrum

Conclusiones. Particionado Consciente de los Datos

ACTIVIDADES TEMA 1. EL LENGUAJE DE LOS ORDENADORES. 4º E.S.O- SOLUCIONES.

Hecho por Víctor Orozco Puerto paralelo

Transcripción:

Taller Computación Altas Prestaciones Pedro Antonio Varo Herrero

Antes de nada!! Cosas a instalar: OpenMPI: http://www.open-mpi.org/software/ompi/v1.8/downloads/openmpi-1.8.3.tar.gz Mpi4py: pip install mpi4py Cython: pip install cython

Que vamos a ver: 1. Que es esto del HPC 1. Algunos Supercomputadores 2. Arquitecturas y Tecnologías 3. MPI4Py 1. Como funciona 2. Sus métodos y diferencias con C 4. A Programar!!!

Supercomputador Marenostrum - Barcelona Peak Performance of 1,1 Petaflops 100.8 TB of main memory Main Nodes 3,056 compute nodes 6,112 Processors 2x Intel SandyBridge-EP E5-2670/1600 20M 8-core at 2.6 GH 3056 * 8cores*2Intel SB = 48,896 Cores 64 nodes with 8x16 GB DDR3-1600 DIMMS (8GB/core) 64 nodes with 16x4 GB DDR3-1600 DIMMS (4GB/core) 2880 nodes with 8x4 GB DDR3-1600 DIMMS (2GB/core) http://www.bsc.es/marenostrum-support-services/mn3

NVIDIA GPU is a cluster with 128 Bull B505 blades each blade with the following configuration: 2 Intel E5649 (6-Core) processor at 2.53 GHz 2 M2090 NVIDIA GPU Cards Cada Nodo: 12 Núcleos Intel + 512 *2 Núcleos Cuda Total: 1536 Intel Cores + 256 GP-GPU BSC NVIDIA GPU Cluster MinoTauro - Barcelona 24 GB of Main memory Peak Performance: 185.78 TFlops 250 GB SSD (Solid State Disk) as local storage 2 Infiniband QDR (40 Gbit each) to a nonblocking network RedHat Linux 14 links of 10 GbitEth to connect to BSC GPFS Storage http://www.bsc.es/marenostrum-supportservices/other-hpc-facilities/nvidia-gpucluster

The Cray XC30- Swiss National Supercomputing Centre (CSCS) Manufacturer: Cray Inc. Cores: 115,984 Linpack Performance (Rmax) 6,271 TFlop/s Theoretical Peak (Rpeak) 7,788.85 TFlop/s Nmax 4,128,768 Power: 2,325.00 kw Processor: Xeon E5-2670 8C 2.6GHz http://www.cscs.ch/computers/index.html http://www.top500.org/system/177824 - Rank: 6 June 2014

Arquitecturas según memoria Uniform Memory Access UMA Non-Uniform Memory Access NUMA Memory Memory Memory Memory Memory Memory Memory Memory Main Memory Memory Passing Message MPM

Paradigmas de Programación Paralela Por manejo de Threads. Por paso de mensajes. Hibrida: Threads + Paso de mensajes. Memory Red de interconexión

Multiprocessing MPI4Py PyCuda PyOpenCL Estándares de librerías de programación paralela

Multiprocessing MPI4Py PyCuda PyOpenCL Estándares de librerías de programación paralela

MPI Message Passing Interface Usado en arquitecturas de memoria distribuida. Da comunicación entre los distintos procesadores/nodos/maquinas del sistema. Se crean distintas procesos, cada uno con su propio espacio de memoria. Los datos entre procesos se comparten en el paso del mensaje. Código escalable. Estandar: MPI(C/C++,Fortran). Memory data Memory data(copy) Python -> MPI4Py CPU CPU Proyecto de Lisandro Dalcin, basado en MPI-1/2/3 Implementa la mayoría de funciones de MPI message http://mpi4py.scipy.org/ Repo: https://bitbucket.org/mpi4py/mpi4py Task 0 data Task 1 data message network message

MPI mpi4py Memory buffer data Core message Memory data(copy) Core buffer Task 0 data buffer message network Task 1 data buffer message Python -> MPI4Py Envia objetos Python o Arrays Repo: https://bitbucket.org/mpi4py/mpi4py API: http://mpi4py.scipy.org/docs/apiref/index.html Des/Serialización de objetos, en ASCII o Binario: Pickle cpickle

MPI mpi4py Python -> MPI4Py Que nos hace falta instalar: Envia objetos Python o Arrays (Numpy) Una versión de MPI: OpenMPI o MPICH Repo: https://bitbucket.org/mpi4py/mpi4py API: http://mpi4py.scipy.org/docs/apiref/index.html Python 2.7 3.4 Modulo: mpi4py http://www.open-mpi.org/software/ompi/v1.8/ pip install mpi4py

MPI mpi4py Para empezar: Importar : from mpi4py import MPI Parámetros a obtener: comm = MPI.COMM_WORLD rank = MPI.COMM_WORLD.Get_rank() size = MPI.COMM_WORLD.Get_size() name = MPI.Get_processor_name() Para su ejecución: mpirun -np <P> python <code>.py

MPI mpi4py Para empezar: Vamos a escribir un Hello World en paralelo y ejecutamos con diferentes números de procesos. Ejemplo: mpirun -np 4 python helloworld.py Output: Hello World!!, This is process 0 of 4, en nombre host Hello World!!, This is process 2 of 4, en nombre host Hello World!!, This is process 1 of 4, en nombre host Hello World!!, This is process 4 of 4, en nombre host

MPI mpi4py Para empezar: Hello World mpirun -np 4 python helloworld.py 1. from mpi4py import MPI 2. 3. rank = MPI.COMM_WORLD.Get_rank() 4. size = MPI.COMM_WORLD.Get_size() 5. name = MPI.Get_processor_name() 6. 7. print("hello, world! This is rank %d of %d running on %s" % (rank, size, name))

MPI - mpi4py Point-to-Point Comunications: Send( ) Rcv( ) Blocking: Esperan a que los datos se puedan enviar y modificar con seguridad. Send(),recv(),Send(), Recv(), SendRecv() Non-blocking: No esperan a que los datos se puedan enviar con seguridad y el proceso continua su tarea. Source data buffer message network Dest data buffer message Isend(), irecv(), Isend(), Irecv()

MPI - mpi4py MPI C vs MPI python mpi4py En C las funciones de comunicación suelen tener: 6 parámetros. Send/Recv(buf,size,datatype,dest,tag,comm) MPI_Recv(result, result sz, sz, result type, MPI MPI ANY ANY SOURCE,result, tag, tag, comm, comm, MPI MPI STATUS STATUS IGNORE); IGNORE); En Python, sólo 3 y nada de punteros. Send(data,dest, tag) / var=recv(source,tag) En data podemos enviar Cualquier objeto Python Si es un Array, indicando el tipo de dato del Array -> [Array,Type] MPI.COMM_WORLD.Send(data,dest=4,tag=0) Send([data,MPI.INT], dest=4,tag=0)

MPI - mpi4py Collective Communications:

Collective Communications: MPI - mpi4py data=[0,1,2,3] Bcast(data, root=0) Data=Scatter(data,root=0) Data=Gather(data,root=0) Allgather(data_send, data_recv) Alltoall(data_send, data_recv)

Collective Communications: MPI - mpi4py data=[0,1,2,3] reduce(data, data_recv, op=sum root=0) allreduce(data, data_recv, op=sum) scan(data_send, data_recv, op=prod) reduce_scatter(data_send, data_recv, op=prod)

MPI - mpi4py Now, Think in Parallel!! Solve Problems, and Programming!!

MPI - mpi4py Probemos las funciones de MPI Ping-Pong Ring Calculo de PI en paralelo Multiplicación de Matrices Posible problema: TSP, Clasificaión con K-means, Comparación cadenas de ADN

MPI - mpi4py Ping-Pong 1. count = 0 2. for x in range(1000): 3. if rank == 0: +1 4. comm.send(count, dest=1, tag=7) 5. count = comm.recv(source=1, tag=7) 6. else: 7. counter = comm.recv(source=0, tag=7) 8. counter += 1 9. comm.send(coun, dest=0, tag=7) 10. 11. if rank == 0: 12. print("total number of message exchanges: %d" % coun t)

MPI - mpi4py Ring 1.counter = 0 2.data = randint(0,100) 3.for x in range(size): 4. comm.send(data, dest=(rank+1)%size, tag=7) 5. data = comm.recv(source=(rank+size-1)%size, tag=7) 6. counter += data 7. 8.print("[%d] Total sum: %d" % (rank,counter))

MPI - mpi4py Algoritmo Genético en Islas Isla 1 Isla 5 Isla 2 Isla 4 Isla 3

MPI - mpi4py 3.0 Repetimos el proceso N generaciones Algoritmo Genético en Islas 3.8 Recibimos individuos de otra isla 3.1 Seleccionamos padres 3.2 Aplicamos el operador Crossover 3.7 Enviamos individuos a otra isla 3.3 Aplicamos el operador Mutación 3.6 Elegimos individuos para enviar 3.4 Aplicamos las reglas definidas 3.5 Evaluamos la población

MPI - mpi4py Pedro Antonio Varo Herrero Pedro Varo Herrero @pevahe91 Pedro Antonio Varo Herrero Pedro Varo Herrero pevahe@gmail.com Now, Think in Parallel!! Solve Problems, and Programming!!