Computación Híbrida, Heterogénea y Jerárquica
|
|
- Ricardo Benítez Lara
- hace 2 años
- Vistas:
Transcripción
1 Computación Híbrida, Heterogénea y Jerárquica javiercm/curso psba/ Curso de Programación en el Supercomputador Ben-Arabí, febrero-marzo 2012
2 Organización aproximada de la sesión, día 2 de marzo: 4:30-6:30 Teoría 6:30-6:45 Descanso 6:45-8:45 Prácticas Consultas, por correo a
3 Contenidos 1 Sistemas 2 Paralelismo anidado 3 Programación híbrida 4 Paralelismo multinivel 5 Computación heterogénea 6 GPGPU 7 Prácticas
4 Los sistemas computacionales actuales no son monoĺıticos: 8 cores, 2 niveles cache, 8 cores hyperthreading, 3 niveles cache, 2 nodos, MC 4 nodos, MC Más ejemplos en hwloc:
5 Tenemos sistemas Híbridos: combinan distintas características: Memoria Compartida y Memoria Distribuida, multicore con GPU, varios sistemas en la red... Heterogéneos: por lo tanto sus componentes son heterogéneos: memorias de distinta capacidad y estructura de acceso, nodos a distinta velocidad y con un número distinto de cores, redes de conexión a distinta velocidad... Jerárquicos: y se estructuran de forma jerárquica: varios sistemas en la red, con cada sistema un cluster o un cc-numa, cada cluster con varios nodos, cada nodo varios sockets, cada socket varios cores...
6 Tenemos sistemas Híbridos: combinan distintas características: Memoria Compartida y Memoria Distribuida, multicore con GPU, varios sistemas en la red... Heterogéneos: por lo tanto sus componentes son heterogéneos: memorias de distinta capacidad y estructura de acceso, nodos a distinta velocidad y con un número distinto de cores, redes de conexión a distinta velocidad... Jerárquicos: y se estructuran de forma jerárquica: varios sistemas en la red, con cada sistema un cluster o un cc-numa, cada cluster con varios nodos, cada nodo varios sockets, cada socket varios cores...
7 Tenemos sistemas Híbridos: combinan distintas características: Memoria Compartida y Memoria Distribuida, multicore con GPU, varios sistemas en la red... Heterogéneos: por lo tanto sus componentes son heterogéneos: memorias de distinta capacidad y estructura de acceso, nodos a distinta velocidad y con un número distinto de cores, redes de conexión a distinta velocidad... Jerárquicos: y se estructuran de forma jerárquica: varios sistemas en la red, con cada sistema un cluster o un cc-numa, cada cluster con varios nodos, cada nodo varios sockets, cada socket varios cores...
8 Ben-Arabí Híbrido: Ben: Memoria Compartida (cc-numa) 128 cores = 12 sockets * 4 procesadores * 2 cores Arabí: Cluster 816 cores = 102 nodos * 4 procesadores * 2 cores
9 Ben-Arabí Heterogéneo: Los procesadores de Ben y de Arabí van a distinta velocidad La memoria en Ben y en cada nodo de Arabí es distinta No todos los nodos de Arabí tienen la misma memoria Hay jerarquía de memorias, con lo que el coste de acceso a los datos depende del procesador y la zona a la que se accede, especialmente en Ben
10 Ben-Arabí Jerárquico: Ben-Arabí está compuesto de Ben (NUMA) + Arabí (cluster) Ben está formado por 12 sockets Arabí por 102 nodos Cada nodo por 4 procesadores Cada procesador es dual
11 Portátiles y ordenadores personales Dual, quad, hexa... Posible hyperthreading Tarjeta gráfica (gforce, Tesla, AMD), con entre 96 y 512 cores Híbridos: multicore + GPU Heterogéneos: distinta velocidad y memoria en multicore jerarquía de memorias dentro de GPU distintas memorias un core del multicore, más rápido que uno de GPU dependiendo del problema es más rápido el multicore o la GPU Jerárquico: ejecución en multicore, que lanza kernels para su ejecución en GPU
12 Portátiles y ordenadores personales Dual, quad, hexa... Posible hyperthreading Tarjeta gráfica (gforce, Tesla, AMD), con entre 96 y 512 cores Híbridos: multicore + GPU Heterogéneos: distinta velocidad y memoria en multicore jerarquía de memorias dentro de GPU distintas memorias un core del multicore, más rápido que uno de GPU dependiendo del problema es más rápido el multicore o la GPU Jerárquico: ejecución en multicore, que lanza kernels para su ejecución en GPU
13 Portátiles y ordenadores personales Dual, quad, hexa... Posible hyperthreading Tarjeta gráfica (gforce, Tesla, AMD), con entre 96 y 512 cores Híbridos: multicore + GPU Heterogéneos: distinta velocidad y memoria en multicore jerarquía de memorias dentro de GPU distintas memorias un core del multicore, más rápido que uno de GPU dependiendo del problema es más rápido el multicore o la GPU Jerárquico: ejecución en multicore, que lanza kernels para su ejecución en GPU
14 Portátiles y ordenadores personales Dual, quad, hexa... Posible hyperthreading Tarjeta gráfica (gforce, Tesla, AMD), con entre 96 y 512 cores Híbridos: multicore + GPU Heterogéneos: distinta velocidad y memoria en multicore jerarquía de memorias dentro de GPU distintas memorias un core del multicore, más rápido que uno de GPU dependiendo del problema es más rápido el multicore o la GPU Jerárquico: ejecución en multicore, que lanza kernels para su ejecución en GPU
15 Clusters de empresas, grupos de investigación... Cluster de multicores El sistema se hace más híbrido, jerárquico y heterogéneo pero es más complicado explotar esta estructura: Muchas veces uso de nodos de forma individual Muchas veces ejecuciones secuenciales Uso de paralelismo por llamada a rutinas paralelas Raramente se utilizan las tarjetas gráficas para computación o se realiza programación paralela
16 Centros de supercomputación Sistemas de distintos tipos: Marenostrum (BSC): cores en nodos duales Pirineus (CESCA): 1344 cores de memoria compartida en nodos hexacore Ben-Arabí (CS-FPCM): 944 cores en NUMA+cluster La tendencia parece ser combinar MC + MD + GPU pero normalmente las ejecuciones en sistemas diferenciados Consultar la evolución en el TOP500 (http://www.top500.org/)
17 Centros de supercomputación Sistemas de distintos tipos: Marenostrum (BSC): cores en nodos duales Pirineus (CESCA): 1344 cores de memoria compartida en nodos hexacore Ben-Arabí (CS-FPCM): 944 cores en NUMA+cluster La tendencia parece ser combinar MC + MD + GPU pero normalmente las ejecuciones en sistemas diferenciados Consultar la evolución en el TOP500 (http://www.top500.org/)
18 Centros de supercomputación Sistemas de distintos tipos: Marenostrum (BSC): cores en nodos duales Pirineus (CESCA): 1344 cores de memoria compartida en nodos hexacore Ben-Arabí (CS-FPCM): 944 cores en NUMA+cluster La tendencia parece ser combinar MC + MD + GPU pero normalmente las ejecuciones en sistemas diferenciados Consultar la evolución en el TOP500 (http://www.top500.org/)
19 Programación Para poder explotar plenamente estos sistemas computacionales es necesario otro tipo de programación. Posibilidades: Paralelismo anidado en OpenMP. Paralelismo multinivel: threads OpenMP y dentro llamadas a rutinas paralelas (MKL multithreading) Programación híbrida: MPI+OpenMP, se crean procesos MPI y cada proceso crea varios threads OpenMP Combinar los tres: MPI+OpenMP+MKL Computación heterogénea Adaptativa Grid computing, Cloud computing, Web computing, P2P computing, Sky computing, Jungle computing...
20 Programación Para poder explotar plenamente estos sistemas computacionales es necesario otro tipo de programación. Posibilidades: Paralelismo anidado en OpenMP. Paralelismo multinivel: threads OpenMP y dentro llamadas a rutinas paralelas (MKL multithreading) Programación híbrida: MPI+OpenMP, se crean procesos MPI y cada proceso crea varios threads OpenMP Combinar los tres: MPI+OpenMP+MKL Computación heterogénea Adaptativa Grid computing, Cloud computing, Web computing, P2P computing, Sky computing, Jungle computing...
21 Programación Para poder explotar plenamente estos sistemas computacionales es necesario otro tipo de programación. Posibilidades: Paralelismo anidado en OpenMP. Paralelismo multinivel: threads OpenMP y dentro llamadas a rutinas paralelas (MKL multithreading) Programación híbrida: MPI+OpenMP, se crean procesos MPI y cada proceso crea varios threads OpenMP Combinar los tres: MPI+OpenMP+MKL Computación heterogénea Adaptativa Grid computing, Cloud computing, Web computing, P2P computing, Sky computing, Jungle computing...
22 Programación Para poder explotar plenamente estos sistemas computacionales es necesario otro tipo de programación. Posibilidades: Paralelismo anidado en OpenMP. Paralelismo multinivel: threads OpenMP y dentro llamadas a rutinas paralelas (MKL multithreading) Programación híbrida: MPI+OpenMP, se crean procesos MPI y cada proceso crea varios threads OpenMP Combinar los tres: MPI+OpenMP+MKL Computación heterogénea Adaptativa Grid computing, Cloud computing, Web computing, P2P computing, Sky computing, Jungle computing...
23 Programación Para poder explotar plenamente estos sistemas computacionales es necesario otro tipo de programación. Posibilidades: Paralelismo anidado en OpenMP. Paralelismo multinivel: threads OpenMP y dentro llamadas a rutinas paralelas (MKL multithreading) Programación híbrida: MPI+OpenMP, se crean procesos MPI y cada proceso crea varios threads OpenMP Combinar los tres: MPI+OpenMP+MKL Computación heterogénea Adaptativa Grid computing, Cloud computing, Web computing, P2P computing, Sky computing, Jungle computing...
24 Programación Para poder explotar plenamente estos sistemas computacionales es necesario otro tipo de programación. Posibilidades: Paralelismo anidado en OpenMP. Paralelismo multinivel: threads OpenMP y dentro llamadas a rutinas paralelas (MKL multithreading) Programación híbrida: MPI+OpenMP, se crean procesos MPI y cada proceso crea varios threads OpenMP Combinar los tres: MPI+OpenMP+MKL Computación heterogénea Adaptativa Grid computing, Cloud computing, Web computing, P2P computing, Sky computing, Jungle computing...
25 Programación Para poder explotar plenamente estos sistemas computacionales es necesario otro tipo de programación. Posibilidades: Paralelismo anidado en OpenMP. Paralelismo multinivel: threads OpenMP y dentro llamadas a rutinas paralelas (MKL multithreading) Programación híbrida: MPI+OpenMP, se crean procesos MPI y cada proceso crea varios threads OpenMP Combinar los tres: MPI+OpenMP+MKL Computación heterogénea Adaptativa Grid computing, Cloud computing, Web computing, P2P computing, Sky computing, Jungle computing...
26 Computación heterogénea Asignar los procesos de un programa homogéneo a un sistema heterogéneo con un número de procesos proporcional a la velocidad de cada nodo Hacer programas heterogéneos: donde la cantidad de trabajo asignada a cada proceso es proporcional a la velocidad del procesador al que se asigna Paralelismo multinivel con distinto número de threads en cada subgrupo de threads esclavos, dependiendo de la velocidad del nodo o del volumen de computación a realizar GPCPU es heterogénea por tener varios tipos de memoria OpenMP+GPU: posible decidir en cada parte del programa si se asigna a la GPU o al multicore, dependiendo del coste y del tipo de computación
27 Computación heterogénea Asignar los procesos de un programa homogéneo a un sistema heterogéneo con un número de procesos proporcional a la velocidad de cada nodo Hacer programas heterogéneos: donde la cantidad de trabajo asignada a cada proceso es proporcional a la velocidad del procesador al que se asigna Paralelismo multinivel con distinto número de threads en cada subgrupo de threads esclavos, dependiendo de la velocidad del nodo o del volumen de computación a realizar GPCPU es heterogénea por tener varios tipos de memoria OpenMP+GPU: posible decidir en cada parte del programa si se asigna a la GPU o al multicore, dependiendo del coste y del tipo de computación
28 Computación heterogénea Asignar los procesos de un programa homogéneo a un sistema heterogéneo con un número de procesos proporcional a la velocidad de cada nodo Hacer programas heterogéneos: donde la cantidad de trabajo asignada a cada proceso es proporcional a la velocidad del procesador al que se asigna Paralelismo multinivel con distinto número de threads en cada subgrupo de threads esclavos, dependiendo de la velocidad del nodo o del volumen de computación a realizar GPCPU es heterogénea por tener varios tipos de memoria OpenMP+GPU: posible decidir en cada parte del programa si se asigna a la GPU o al multicore, dependiendo del coste y del tipo de computación
29 Computación heterogénea Asignar los procesos de un programa homogéneo a un sistema heterogéneo con un número de procesos proporcional a la velocidad de cada nodo Hacer programas heterogéneos: donde la cantidad de trabajo asignada a cada proceso es proporcional a la velocidad del procesador al que se asigna Paralelismo multinivel con distinto número de threads en cada subgrupo de threads esclavos, dependiendo de la velocidad del nodo o del volumen de computación a realizar GPCPU es heterogénea por tener varios tipos de memoria OpenMP+GPU: posible decidir en cada parte del programa si se asigna a la GPU o al multicore, dependiendo del coste y del tipo de computación
30 Computación heterogénea Asignar los procesos de un programa homogéneo a un sistema heterogéneo con un número de procesos proporcional a la velocidad de cada nodo Hacer programas heterogéneos: donde la cantidad de trabajo asignada a cada proceso es proporcional a la velocidad del procesador al que se asigna Paralelismo multinivel con distinto número de threads en cada subgrupo de threads esclavos, dependiendo de la velocidad del nodo o del volumen de computación a realizar GPCPU es heterogénea por tener varios tipos de memoria OpenMP+GPU: posible decidir en cada parte del programa si se asigna a la GPU o al multicore, dependiendo del coste y del tipo de computación
31 Sistemas - Práctica Sist.1 En Ben-Arabí hay una cola heterogénea que no se usa normalmente, pero que vamos a usar para ejecutar un ejemplo simple en Ben y Arabí. En /project/formacion/hibrida/sistemas hay un ejemplo de uso de la cola hetero. Hay que compilar en Ben con make sd, para generar mainsd, y en Arabí con make cc, para generar maincc. Antes de compilar hay que cargar los módulos intel e impi. Se lanza a la cola con bsub < bsub.main. La práctica consiste en lanzar a la cola y entender lo que ocurre.
32 Paralelismo anidado En OpenMP: El thread inicial pone en marcha (parallel) un grupo de threads esclavos Cada esclavo genera un grupo de esclavos de los que es el maestro Útil para: Mejorar el uso de una memoria organizada jerárquicamente (Ben) Asignar unas pocas tareas muy costosas: un thread para cada tarea, y en la resolución de cada tarea trabaja un grupo de threads distinto
33 Paralelismo anidado - Práctica Anid.3 Programar una multiplicación de matrices de dos niveles, con h1 threads en el primer nivel y h2 en el segundo Experimentar si se obtiene ventaja al usar dos niveles Probar con división sólo de la primera matriz y con división de una matriz en cada nivel Usar como ejemplo base el programa codigo6-6.c en /project/formacion/hibrida/anidado, u otro ejemplo de multiplicación de matrices con OpenMP.
34 Paralelismo anidado - Práctica Anid.2 Hacer un programa para multiplicar m matrices A i por otra matriz B creando m threads en el primer nivel y otro número de threads en el segundo nivel. Usar como ejemplo base el programa codigo6-6.c en /project/formacion/hibrida/anidado, u otro ejemplo de multiplicación de matrices con OpenMP.
35 Programación híbrida Combinar MPI + OpenMP Se ponen en marcha procesos MPI, que se asignan a distintos nodos (Memoria Distribuida), o posiblemente varios procesos al mismo nodo Cada proceso genera varios threads dentro de un nodo (Memoria Compartida)
36 Comparación OpenMP - MPI OpenMP MPI Paralelismo de grano fino de grado grueso Eficiencia en SMP Más portable Código secuencial y paralelo Código secuencial y paralelo similar diferentes Herramientas de desarrollo Desarrollo y depuración y paralelización más difícil Asignación en tiempo de ejecución Asignación estática de procesos La asignación de memoria Memorias locales puede reducir prestaciones facilitan eficiencia
37 Ventajas de programación híbrida Para mejorar la escalabilidad Aplicaciones que combinan paralelismo de grano grueso y fino Reducción del tiempo de desarrollo de código Cuando el número de procesos MPI es fijo En caso de mezcla de paralelismo funcional y de datos
38 Ejemplo - hello int main(int argc, char *argv[]) { int nthreads,nprocs,idpro,idthr,namelen; char processor name[mpi MAX PROCESSOR NAME]; MPI Init(&argc,&argv); MPI Comm size(mpi COMM WORLD,&nprocs); MPI Comm rank(mpi COMM WORLD,&idpro); MPI Get processor name(processor name,&namelen); #pragma omp parallel private(idthr) firstprivate(idpro,processor name) { idthr = omp get thread num(); printf("... thread %d, proceso %d procesador %s\n",idthr,idpro,processor name); if (idthr == 0) { nthreads = omp get num threads(); printf("proceso %d, threads %d, procesos %d\n",idpro,nthreads,nprocs); } } MPI Finalize(); }
39 Ejemplo - multiplicación de matrices En OpenMP En MPI En MPI+OpenMP
40 Ejemplo - multiplicación de matrices (main I) int main(int argc, char *argv[]) {... MPI Init(&argc,&argv); MPI Comm size(mpi COMM WORLD,&np); MPI Comm rank(mpi COMM WORLD,&nodo); MPI Get processor name(processor name,&long name); if(nodo==0) { N=atoi(argv[1]); NUMTHREADS=atoi(argv[2]); } MPI Bcast(&N,1,MPI INT,0,MPI COMM WORLD); MPI Bcast(&NUMTHREADS,1,MPI INT,0,MPI COMM WORLD); omp set num threads(numthreads);...
41 Ejemplo - multiplicación de matrices (main II) if(nodo==0) {... for(i=1;i<np;i++) { MPI Send(&a[i*lda*N/np],fal*ca,MPI DOUBLE,i,20,MPI COMM WORLD); } MPI Bcast(b,fb*cb,MPI DOUBLE,0,MPI COMM WORLD); } else { MPI Recv(a,fal*ca,MPI DOUBLE,0,20,MPI COMM WORLD,&estado); MPI Bcast(b,fb*cb,MPI DOUBLE,0,MPI COMM WORLD); }
42 Ejemplo - multiplicación de matrices (main III) MPI Barrier(MPI COMM WORLD); ti=mpi Wtime(); mm(a,fal,ca,lda,b,fb,cb,ldb,c,fcl,cc,ldc,nodo,nombre procesador); MPI Barrier(MPI COMM WORLD); tf=mpi Wtime(); if(nodo==0) {... for(i=1;i<np;i++) { MPI Recv(&c[i*ldc*N/np],fcl*cc,MPI DOUBLE,i,30,MPI COMM WORLD,&estado); } } else { MPI Send(c,fcl*cc,MPI DOUBLE,0,30,MPI COMM WORLD); }
43 Ejemplo - multiplicación de matrices void mm(...) {... #pragma omp parallel { #pragma omp critical printf("proceso %d, nodo %s, Threads numero %d\n",nodo,maquina,omp get thread num()); #pragma omp for private(i,j,k,s) schedule(static) for(i=0;i<fa;i++) { for(j=0;j<cb;j++) { s=0.; for(k=0;k<ca;k++) s=s+a[i*lda+k]*b[k*ldb+j]; c[i*ldc+j]=s; } } } }
44 Programación híbrida - Práctica Hibr.1 Utilizar el programa ejemplo de multiplicación de matrices con MPI+OpenMP de la sesión de calentamiento del concurso de programación paralela de 2011 (mooshak en cpp.fpcmur.es, y se dará cuenta para acceder). Comprobar experimentalmente el número de procesos MPI y threads OpenMP con que se obtiene menor tiempo de ejecución. Hibr.2 Programar una multiplicación de matrices MPI+OpenMP, con división de la primera matriz en procesos MPI y de la segunda en threads OpenMP. Comparar los resultados con los obtenidos con la implementación anterior
45 Paralelismo multinivel El paralelismo anidado y el híbrido son ejemplos de paralelismo multinivel. En algunos casos podemos tener en un nivel paralelismo expĺıcito (OpenMP) y en otro impĺıcito (BLAS multithreading). Es posible tener más niveles de paralelismo: MPI+OpenMP+BLAS
46 Paralelismo en MKL La librería es multithreaded. El número de threads en las rutinas de MKL se establece con la variable de entorno MKL NUM THREADS o en el programa con la función mkl set num threads. Con MKL DYNAMIC=true o mkl set dynamic(1) se activa el paralelismo dinámico: El número de threads a usar en la rutina lo decide el sistema, y es menor o igual al valor establecido. Para forzar a que se use el número de threads que se indica hay que deshabilitar el paralelismo dinámico: MKL DYNAMIC=false o mkl set dynamic(0).
47 Resultados con la multiplicación de matrices
48 Resultados con la multiplicación de matrices Tamaño Secuen. Máx. cores Mínimo / cores Speed-up Máx. cores/mín. tiempo Ben (19) (22) (27) (37) (44) (50) (48) 2.1 Bertha (16) (80) (32) (32) (48) 1.1 Pirineus (12) (16) (60) (60) (60) 2.5
49 Multiplicación OpenMP+MKL Las filas de la primera matriz se distribuyen en threads OpenMP (nthomp). Se establece un número de threads a usar en las rutinas MKL (nthmkl). Hay que habilitar el paralelismo anidado, con OMP NESTED=true o omp set nested(1). omp set nested(1); omp set num threads(nthomp); mkl set dynamic(0); mkl set num threads(nthmkl); #pragma omp parallel obtener tamaño y posición inicial de la submatriz de A a multiplicar llamar a dgemm para multiplicar esa submatriz por B
50 Resultados con la multiplicación OpenMP+MKL
51 Resultados con la multiplicación OpenMP+MKL Tamaño MKL OpenMP+MKL Speed-up MKL/OpenMP+MKL Ben (27) (4-10) (37) (4-16) (44) 0.18 (4-24) (50) 0.41 (5-16) (48) 0.76 (6-20) (64) 5.0 (32-4) (64) 12 (32-4) (64) 22 (16-8) 3.0 Bertha (16) (2-24) (80) (5-16) (32) 0.51 (16-3) (32) 0.98 (5-16) (48) 1.7 (3-32) 1.1 Pirineus (12) (2-16) (16) 0.08 (5-12) (60) 0.28 (4-15) (60) 0.47 (5-12) (60) 0.86 (10-9) (120) 5.3 (20-6) 1.7
52 Multiplicación OpenMP+MKL, en Ben Tiempo de ejecución variando Resultados similares con otros compiladores el número de threads OpenMP y MKL y librerías (gcc 4.4 y ATLAS 3.9) Execution time with matrix size 5000 only times lower than 1/10 the sequential time Total number of threads Number of threads in the first level
53 Paralelismo multinivel - Práctica Mult.6 Programar la multiplicación de matrices cuadradas con tres niveles de paralelismo (MPI+OpenMP+MKL). Ejecutarla en Arabí con cuatro nodos y un total de 32 cores. Comprobar para distintos tamaños de matriz la mejor combinación de número de procesos MPI, threads OpenMP y threads MKL. Usar como ejemplo base los ficheros en /project/formacion/hibrida/multinivel.
54 Paralelismo multinivel - Práctica Mult.5 Programar la multiplicación de matrices cuadradas dividiendo las matrices en submatrices de la mitad de tamaño, con el esquema siguiente, donde se usan tres niveles de anidamiento OpenMP y paralelismo impĺıcito en la multiplicación y suma de matrices con MKL
55 Computación heterogénea Cuando el sistema computacional es heterogéneo: procesadores de distinta velocidad, distinta capacidad de memoria, coste distinto de acceso a memoria, varias redes de comunicación, librerías con distintas prestaciones... Cuando la computación es heterogénea: tareas con distinto coste, patrones de comunicación diferentes...
56 Sistemas heterogéneos de memoria compartida Podemos tener procesadores distintos en un sistema de memoria compartida (no en Ben-Arabí). En este caso se puede: Usar paralelismo de dos niveles: en el primer nivel se usan tantos threads como procesadores, y en el segundo nivel el número de threads es proporcional a la velocidad del procesador. Con un único nivel de paralelismo, crear tantos threads como procesadores pero asignando un volumen de cómputo a cada procesador proporcional a su velocidad.
57 Heterogeneidad en memoria compartida - Práctica HeMC.1 Suponiendo que tenemos 4 procesadores con velocidades 4, 3, 2 y 1, hacer un programa hello de manera que cada procesador salude un número de veces proporcional a su velocidad. Usar como ejemplo base el hello mpi+omp.c en /project/formacion/hibrida/hibrida. HeMC.3 Suponiendo que tenemos 4 procesadores con velocidades 4, 3, 2 y 1, hacer un programa de multiplicación de matrices de manera que cada procesador calcule un número de filas de la matriz resultado proporcional a su velocidad. Usar como ejemplo base el mmhibrida.c en /project/formacion/hibrida/hibrida.
58 Clusters heterogéneos Podemos tener clusters con nodos de distintas características (en Ben-Arabí si se utilizan conjuntamente Ben y Arabí). En centros de supercomputación, aunque se tengan distintos sistemas no se suelen utilizar como heterogéneos. Se puede: Realizar programas homogéneos, con todos los procesos con la misma carga computacional, y asignar más procesos a los procesadores con más velocidad. Hacer programas heterogéneos: un proceso por nodo, pero cada proceso con una carga computacional proporcional a la velocidad del nodo al que se asigna. Más posibilidades?
59 Cluster heterogéneos - Práctica HePM.1 Realizar alguna ejecución de la multiplicación homogénea de matrices con MPI asignando varios procesos a un mismo nodo en Arabí. HePM.4 Suponiendo que usamos 4 nodos de Arabí y que tienen velocidades 4, 3, 2 y 1, hacer un programa de multiplicación de matrices en MPI de manera que cada nodo calcule un número de filas de la matriz resultado proporcional a su velocidad. HePM.2 Utilizando la cola heterogénea de Ben-Arabí, realizar alguna ejecución de la multiplicación de matrices con MPI. Usar como ejemplos base el codigo6.10.c en /project/formacion/hibrida/heterogenea, u otro ejemplo de multiplicación de matrices con MPI, y los ficheros de /project/formacion/hibrida/sistemas.
60 General-Purpose Computation on Graphics Processing Units Procesadores gráficos en todos los sistemas computacionales. Muchas veces para juegos, pero también se pueden usar para computación. Disponen de muchos cores pequeños. Son baratos, y se puede conseguir mayores aceleraciones a un coste bajo. Pero la programación es más compleja. En algunos centros de supercomputación se incluyen GPU en los sistemas. En la actualidad no en Ben-Arabí, pero sí en el futuro. Quizás en el próximo curso se incluya.
61 Software para GPU 2006: NVIDIA introduce la arquitectura unificada (CUDA) con la presentación de la NVIDIA GeForce GPUs de NVIDIA compatibles con CUDA Modelos: GeForce, Tesla, Quadro 2009: OpenCL, GPGPU para plataformas gráficas Intenta convertirse en un estándar. Hay disponibles versiones de BLAS y otras librerías.
62 CUDA Arquitectura hardware y software: Uso de GPU, construida a partir de la replicación de un bloque constructivo básico, como acelerador con memoria integrada Estructura jerárquica de threads mapeada sobre el hardware Gestión de memoria expĺıcita Creación, planificación y ejecución transparente de miles de threads de manera concurrente Extensiones del lenguaje C/C++ junto con CUDA Runtime API
63 Arquitectura Hardware y Software GPU = N * Streaming Multiprocessors (SMs) SM = 8 * Streaming Processors (SPs)
64 Arquitectura Hardware y Software Los procesadores (SPs) Realizan operaciones escalares sobre enteros/reales 32 bits Ejecutan threads independientes pero todos deberían ejecutar la instrucción leída por la Instruction Unit (IU) en cada instante: Single Instruction Multiple Thread (SIMT), explotación de paralelismo de datos y, en menor medida, de tareas Los threads son gestionados por el hardware en cada SM: Creación y cambios de contexto con coste despreciable Se libera al programador de realizar estas tareas
65 Arquitectura Hardware y Software Las partes del código paralelizadas para ejecutarse en la GPU se denominan kernels Un kernel descompone un problema en un conjunto de subproblemas y lo mapea sobre un grid Grid: vector 1D o 2D de thread blocks. Cada thread block tiene su BID (X,Y) dentro del grid Thread blocks: vector 1D, 2D o 3D de threads. Cada thread tiene su TID (X,Y,Z) dentro de su thread block Los threads utilizan su BID y TID para determinar el trabajo que tienen que hacer (SPMD)
66 Arquitectura Hardware y Software Las partes del código paralelizadas para ejecutarse en la GPU se denominan kernels Un kernel descompone un problema en un conjunto de subproblemas y lo mapea sobre un grid Grid: vector 1D o 2D de thread blocks. Cada thread block tiene su BID (X,Y) dentro del grid Thread blocks: vector 1D, 2D o 3D de threads. Cada thread tiene su TID (X,Y,Z) dentro de su thread block Los threads utilizan su BID y TID para determinar el trabajo que tienen que hacer (SPMD)
67 Modelo de memoria
68 Ejemplo Cálculo de y = αx +y (saxpy): void saxpy serial(int n,float *y,float alpha,float *x) { for(int i=0;i<n;i++) y[i]=alpha*x[i]+y[i]; } /* Llamada código secuencial */ saxpy serial(n,y,2.0,x); global /* Código GPU */ void saxpy parallel(int n,float *y,float alpha,float *x) { int i=blockidx.x*blockdim.x+threadidx.x; if (i<n) y[i]=alpha*x[i]+y[i]; } /* Llamada código paralelo desde código CPU */ int nblocks=(n+255)/256; saxpy parallel<<<nblocks,256>>>(n,y,2.0,x);
69 Ejecución
70 Prácticas Realizar las pácticas indicadas en los apartados de Sistemas, Paralelismo anidado, Programación híbrida, Paralelismo multinivel, y Computación heterogénea en memoria compartida y cluster. Se pueden usar los ejemplos que se encuentran en /project/formacion. Primero hacer la Hibr.1 A continuación, cada uno puede realizar los ejercicios propuestos según el orden en que más le interesen, pero se sugiere realizarlos de menor a mayor valor de dificultad estimado (el número que aparece en cada ejercicio). Los que no puedan asistir a esta sesión tendrán que realizar al menos todos los ejercicios 1 y enviar un resumen del trabajo hecho. Consultas y envío a
Heterogénea y Jerárquica
Metodología de la Programación Paralela 2015-2016 Facultad Informática, Universidad de Murcia Computación Híbrida, Heterogénea y Jerárquica Contenidos 1 Sistemas 2 Paralelismo anidado 3 Programación híbrida
Seminario II: Introducción a la Computación GPU
Seminario II: Introducción a la Computación GPU CONTENIDO Introducción Evolución CPUs-Evolución GPUs Evolución sistemas HPC Tecnologías GPGPU Problemática: Programación paralela en clústers heterogéneos
FUNDAMENTOS DE COMPUTACIÓN PARA CIENTÍFICOS. CNCA Abril 2013
FUNDAMENTOS DE COMPUTACIÓN PARA CIENTÍFICOS CNCA Abril 2013 6. COMPUTACIÓN DE ALTO RENDIMIENTO Ricardo Román DEFINICIÓN High Performance Computing - Computación de Alto Rendimiento Técnicas, investigación
Arquitecturas GPU v. 2013
v. 2013 Stream Processing Similar al concepto de SIMD. Data stream procesado por kernel functions (pipelined) (no control) (local memory, no cache OJO). Data-centric model: adecuado para DSP o GPU (image,
Modelo de aplicaciones CUDA
Modelo de aplicaciones CUDA Utilización de GPGPUs: las placas gráficas se utilizan en el contexto de una CPU: host (CPU) + uno o varios device o GPUs Procesadores masivamente paralelos equipados con muchas
GPU IMPLEMENTATIONS OF SCHEDULING HEURISTICS FOR HETEROGENEOUS COMPUTING ENVIRONMENTS
GPU IMPLEMENTATIONS OF SCHEDULING HEURISTICS FOR HETEROGENEOUS COMPUTING ENVIRONMENTS MAURO CANABÉ SERGIO NESMACHNOW Centro de Cálculo, Facultad de Ingeniería Universidad de la República, Uruguay GPU IMPLEMENTATIONS
Programación Híbrida e Introducción a la Programación de GPUs
Programación Híbrida e Introducción a la Programación de GPUs Fernando Robles Morales Instituto Nacional de Medicina Genómica Enrique Cruz Martínez Universidad Autónoma de la ciudad de México CONTENIDO
Cómputo en paralelo con OpenMP 1
Cómputo en paralelo con OpenMP 1 Miguel Vargas-Félix miguelvargas@cimat.mx http://www.cimat.mx/~miguelvargas CIMAT, September 2, 2015 1/34 Velocidad de los procesadores de escritorio Recientemente, la
High Performance Computing and Architectures Group
HPCA Group 1 High Performance Computing and Architectures Group http://www.hpca.uji.es Universidad Jaime I de Castellón ANACAP, noviembre de 2008 HPCA Group 2 Generalidades Creado en 1991, al mismo tiempo
Módulo: Modelos de programación para Big Data
Program. paralela/distribuida Módulo: Modelos de programación para Big Data (título original: Entornos de programación paralela basados en modelos/paradigmas) Fernando Pérez Costoya Introducción Big Data
Computación Matricial y Paralela
Computación Matricial y Paralela Programación híbrida Javier Cuenca Dpto. de Ingeniería y Tecnología de Computadores Domingo Giménez Dpto. de Informática y Sistemas Universidad de Murcia http://dis.um.es/~domingo
Ingeniero en Informática
UNIVERSIDAD DE ALMERÍA Ingeniero en Informática CLÚSTER DE ALTO RENDIMIENTO EN UN CLOUD: EJEMPLO DE APLICACIÓN EN CRIPTOANÁLISIS DE FUNCIONES HASH Autor Directores ÍNDICE 1. Introducción 2. Elastic Cluster
Introducción. Por último se presentarán las conclusiones y recomendaciones pertinentes.
Introducción En el presente documento se explicarán las consideraciones realizadas para implementar la convolución bidimensional en la arquitectura CUDA. En general se discutirá la metodología seguida
Arquitectura de Computadores: Exámenes y Controles
2º curso / 2º cuatr. Grado en Ing. Informática Doble Grado en Ing. Informática y Matemáticas Arquitectura de Computadores: Exámenes y Controles Examen de Prácticas AC 05/07/2013 resuelto Material elaborado
Programación híbrida en arquitecturas cluster de multicore. Escalabilidad y comparación con memoria compartida y pasaje de mensajes.
Programación híbrida en arquitecturas cluster de multicore. Escalabilidad y comparación con memoria compartida y pasaje de mensajes. Fabiana Leibovich, Armando De Giusti, Marcelo Naiouf, Laura De Giusti,
Ejemplos de optimización para Kepler. 1. Balanceo dinámico de la carga. Contenidos de la charla [18 diapositivas]
Ejemplos de optimización para Kepler Manuel Ujaldón Nvidia CUDA Fellow Dpto. Arquitectura de Computadores Universidad de Málaga Contenidos de la charla [18 diapositivas] 1. Balanceo dinámico de la carga.
CLUSTER FING: ARQUITECTURA Y APLICACIONES
CLUSTER FING: ARQUITECTURA Y APLICACIONES SERGIO NESMACHNOW Centro de Cálculo, Instituto de Computación FACULTAD DE INGENIERÍA, UNIVERSIDAD DE LA REPÚBLICA, URUGUAY CONTENIDO Introducción Clusters Cluster
Técnicas SuperEscalares en la Paralelización de Bibliotecas de Computación Matricial sobre Procesadores Multinúcleo y GPUs
Técnicas SuperEscalares en la Paralelización de Bibliotecas de Computación Matricial sobre Procesadores Multinúcleo y GPUs Enrique S. Quintana-Ortí quintana@icc.uji.es High Performance Computing & Architectures
4. Programación Paralela
4. Programación Paralela La necesidad que surge para resolver problemas que requieren tiempo elevado de cómputo origina lo que hoy se conoce como computación paralela. Mediante el uso concurrente de varios
High Performance Computing y Big Data en AWS. +info: (http://gac.udc.es) HPC y Big Data en AWS 16 Abril, 2012 1 / 14
High Performance Computing y Big Data en AWS +info: (http://gac.udc.es) HPC y Big Data en AWS 16 Abril, 212 1 / 14 High Performance Computing High Performance Computing (HPC) Afonta grandes problemas empresariales,
Solving Dense Linear Systems on Platforms with Multiple Hardware Accelerators
Solving Dense Linear Systems on Platforms with Multiple Hardware Accelerators Maribel Castillo, Francisco D. Igual, Rafael Mayo, Gregorio Quintana-Ortí, Enrique S. Quintana-Ortí, Robert van de Geijn Grupo
2º curso / 2º cuatr. Arquitectura de Computadores. Grado en Ing. Informática. Seminario 1. Herramientas de programación paralela I: Directivas OpenMP
2º curso / 2º cuatr. 2º curso / 2º cuatr. Grado en Ing. Informática Arquitectura de Computadores Seminario 1. Herramientas de programación paralela I: Directivas OpenMP 2 Qué es OpenMP? De dónde viene
Computación de Propósito General en Unidades de Procesamiento Gráfico GPGPU
Computación de Propósito General en Unidades de Procesamiento Gráfico () E. Dufrechou, P. Ezzatti M. Pedemonte Práctico Programación con CUDA Práctica 0: Ejecución del ejemplo visto en teórico (suma de
Programación en Paralelo con MPI en Clusters Linux
Programación en Paralelo con MPI en Clusters Linux Francisco Javier Rodríguez Arias 13 de marzo de 2006 Problema y Motivación En física se requiere hacer muchos cálculos. Para eso se hacen programas de
CLUSTER FING: PARALELISMO de MEMORIA DISTRIBUIDA
CLUSTER FING: PARALELISMO de MEMORIA DISTRIBUIDA SERGIO NESMACHNOW Centro de Cálculo, Instituto de Computación FACULTAD DE INGENIERÍA, UNIVERSIDAD DE LA REPÚBLICA, URUGUAY CONTENIDO Introducción: arquitecturas
Implementación de un Cluster de Computadoras con software libre para Computación Científica en Jicamarca
Implementación de un Cluster de Computadoras con software libre para Computación Científica en Jicamarca A.Zamudio M. Milla Contenido de la Presentación 1 Radio Observatorio de Jicamarca 2 3 4 5 6 Índice
Resolución de problemas en paralelo
Resolución de problemas en paralelo Algoritmos Paralelos Tema 1. Introducción a la computación paralela (segunda parte) Vicente Cerverón Universitat de València Resolución de problemas en paralelo Descomposición
EL CLUSTER FING: COMPUTACIÓN DE ALTO DESEMPEÑO EN FACULTAD DE INGENIERÍA
EL CLUSTER FING: COMPUTACIÓN DE ALTO DESEMPEÑO EN FACULTAD DE INGENIERÍA SERGIO NESMACHNOW Centro de Cálculo, Instituto de Computación FACULTAD DE INGENIERÍA, UNIVERSIDAD DE LA REPÚBLICA, URUGUAY EL CLUSTER
Soluciones para entornos HPC
Dr.. IT Manager / Project Leader @ CETA-Ciemat abelfrancisco.paz@ciemat.es V Jornadas de Supercomputación y Avances en Tecnología INDICE 1 2 3 4 HPC Qué? Cómo?..................... Computación (GPGPU,
Paralelización de la factorización LDL T usando el lenguaje de programación paralela ZPL
REVISTA INGENIERÍA UC. Vol. 15, N o 2, 72-80, 2008 Paralelización de la factorización LDL T usando el lenguaje de programación paralela ZPL Edwin Vargas, Enrique Flores, Demetrio Rey Lago Instituto de
Arquitecturas y programación de procesadores gráficos. Nicolás Guil Mata Dpto. de Arquitectura de Computadores Universidad de Málaga
Arquitecturas y programación de procesadores gráficos Dpto. de Arquitectura de Computadores Universidad de Málaga Indice Arquitectura de las GPUs Arquitectura unificada Nvidia: GT200 Diagrama de bloques
Kepler. 1. Presentación de la arquitectura. Índice de contenidos [25 diapositivas] Kepler, Johannes (1571-1630)
Índice de contenidos [25 diapositivas] Manuel Ujaldón Nvidia CUDA Fellow Dpto. Arquitectura de Computadores Universidad de Málaga 1. Presentación de la arquitectura [3] 2. Los cores y su organización [7]
Procesamiento de imágenes en GPUs mediante CUDA. I. Introducción. Indice de contenidos
Procesamiento de imágenes en GPUs mediante CUDA Manuel Ujaldón Martínez Nvidia CUDA Fellow Departamento de Arquitectura de Computadores Universidad de Málaga Indice de contenidos 1. Introducción. [2] 2.
Una experiencia de iniciación al paralelismo en segundo curso del Grado de Ingeniería Informática
Actas Simposio-Taller JENUI 2012, Ciudad Real, 10-13 de julio 2012 I.S.B.N. 10: 84-695-3941-8 I.S.B.N. 13:978-84-695-3941-5 Páginas 49-56 Una experiencia de iniciación al paralelismo en segundo curso del
Utilización de la programación paralela en procesadores gráficos para el cálculo científico.
Utilización de la programación paralela en procesadores gráficos para el cálculo científico. EMNO 2013 Rolando E. Rodríguez Fernández Medicina Computacional, Instituto de Nefrología. y Facultad de Física,
Procesadores Gráficos: OpenCL para programadores de CUDA
Procesadores Gráficos: para programadores de CUDA Curso 2011/12 David Miraut david.miraut@urjc.es Universidad Rey Juan Carlos April 24, 2013 Indice Estándar Modelo de de El lenguaje programa de Inicialización
Grupo de Computación de Altas Prestaciones GCAPULL, Univers. GCAPULL, Universidad de La Laguna, Tenerife
Grupo de Computación de Altas Prestaciones GCAPULL, Universidad de La Laguna, Tenerife Febrero 2010, Alicante Contents El grupo 1 El grupo 2 3 4 Composición 6 doctores 7 alumnos en fase de tesis Información
PROGRAMACIÓN AVANZADA DE GPUs PARA APLICACIONES CIENTÍFICAS
Grupo de Ing. Electrónica aplicada a Espacios INteligentes y TRAnsporte Área Audio-Visual PROGRAMACIÓN AVANZADA DE GPUs PARA APLICACIONES CIENTÍFICAS Torrevieja (Alicante) Del 19 al 22 de Julio Álvaro
CAR. http://acarus.uson.mx/cursos2013/car.htm
CAR http://acarus.uson.mx/cursos2013/car.htm Sistemas de CAR en la UNISON Responsable : María del Carmen Heras Sánchez Asesores Técnicos : Aracely Dzul Campos Daniel Mendoza Camacho Yessica Vidal Quintanar
Arquitecturas y Computación de Alto Rendimiento SISTEMAS PARA COMPUTACIÓN DE ALTO RENDIMIENTO. Índice
Arquitecturas y Computación de Alto Rendimiento SISTEMAS PARA COMPUTACIÓN DE ALTO RENDIMIENTO 1 Índice 1. Necesidades de cómputo. Exascale. Arquitecturas de altas prestaciones. Top 500. Green 500 2. Memoria
:Arquitecturas Paralela basada en clusters.
Computación de altas prestaciones: Arquitecturas basadas en clusters Sesión n 1 :Arquitecturas Paralela basada en clusters. Jose Luis Bosque 1 Introducción Computación de altas prestaciones: resolver problemas
Computacion de Alto Performance
Computacion de Alto Performance Abraham Zamudio Abraham Zamudio Computacion de Alto Performance 1/47 Indice 1 Algunos Aspectos Teoricos 2 Paralelismo Computacional 3 Linux Cluster Hardware Software 4 MPICH
Computación heterogénea y su programación. 1. Introducción a la computación heterogénea. Indice de contenidos [38 diapositivas]
Computación heterogénea y su programación Manuel Ujaldón Nvidia CUDA Fellow Departmento de Arquitectura de Computadores Universidad de Málaga (España) Indice de contenidos [38 diapositivas] 1. Introducción
Capítulo 5: Comparación con ScaLAPACK
Capítulo 5: Comparación con ScaLAPACK En este capítulo se presentan dos aspectos importantes en cuanto a la validez y utilización de los aportes de esta tesis: 1) Aplicación de los principios de paralelización
Programación Paralela y Distribuida
Programación Paralela y Distribuida Cores, Threads and Nodes Pedro Antonio Varo Herrero pevahe@gmail.com Pedro Antonio Varo Herrero Estudiante 4º Curso - Universidad de Sevilla Grado Ing. Informática Tecnologías
Intel XeonPhi Workshop
Intel XeonPhi Workshop Elena Núñez-González Unidad Informática Científica - CIEMAT Madrid, 11 de Febrero de 2015 Evento Lugar, Fecha Índice Introducción MIC Intel Xeon Phi Arquitectura Intel Xeon Phi Entorno
Tarjetas gráficas para acelerar el cómputo complejo
LA TECNOLOGÍA Y EL CÓMPUTO AVANZADO Tarjetas gráficas para acelerar el cómputo complejo Tarjetas gráficas para acelerar el cómputo complejo Jorge Echevarría * La búsqueda de mayor rendimiento A lo largo
Técnicas de paralelización de código para robots basados en emociones
1 UNIVERSIDAD POLITECNICA DE VALENCIA G R A D O E N I N G E N I E R Í A I N F O R M Á T I C A Técnicas de paralelización de código para robots basados en emociones TRABAJO FINAL DE GRADO Autor: Francisco
Simulación de colisiones con deformación en paralelo
Simulación de colisiones con deformación en paralelo 1 Victor León Higuita Cardona Juan Diego Toro Cano Universidad EAFIT Escuela de ingeniería Departamento de Ingeniería de Sistemas Medellín 9 de junio
Múltiples GPU (y otras chauchas)
Múltiples GPU (y otras chauchas) Clase 16, 21/11/2013 http://fisica.cab.cnea.gov.ar/gpgpu/index.php/en/icnpg/clases Carlos Bederián bc@famaf.unc.edu.ar IFEG-CONICET, FaMAF-UNC Motivación No desperdiciar
Bloque IV. Prácticas de programación en CUDA. David Miraut Marcos García Ricardo Suárez
Bloque IV Prácticas de programación en CUDA David Miraut Marcos García Ricardo Suárez Control de flujo Situaciones no tratadas Claves con tamaños diferentes. Cada Wrap debería acceder a claves del mismo
Talleres CLCAR. CUDA para principiantes. Título. Mónica Liliana Hernández Ariza, SC3UIS-CRC NVIDIA Research Center monicalilianahernandez8@gmail.
a CUDA para principiantes Mónica Liliana Hernández Ariza, SC3UIS-CRC NVIDIA Research Center monicalilianahernandez8@gmail.com Tener un primer encuentro práctico con la programación en CUDA para personas
Desarrollo de un cluster computacional para la compilación de. algoritmos en paralelo en el Observatorio Astronómico.
Desarrollo de un cluster computacional para la compilación de algoritmos en paralelo en el Observatorio Astronómico. John Jairo Parra Pérez Resumen Este artículo muestra cómo funciona la supercomputación
Middlewar Middlew es par ar a es par Sistemas de Alto Re R ndimiento José M. Peña
Middlewares para Sistemas de Alto Rendimiento José M. Peña Contenidos Middlewares: Ejemplo lenguajes/entornos de programación: Lenguaje de programación paralela: OpenMP Ejemplos de servicios HPC: Sistemas
Arquitecturas basadas en computación gráfica (GPU)
Arquitecturas basadas en computación gráfica (GPU) Francesc Guim Ivan Rodero PID_00184818 CC-BY-NC-ND PID_00184818 Arquitecturas basadas en computación gráfica (GPU) Los textos e imágenes publicados en
TUTORIAL: COMPUTACIÓN de ALTO DESEMPEÑO
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 CONTENIDO Introducción Computadores paralelos
Taller Computación Altas Prestaciones. Pedro Antonio Varo Herrero
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
GPGPU Avanzado. Sistemas Complejos en Máquinas Paralelas. Esteban E. Mocskos (emocskos@dc.uba.ar) 5/6/2012
Sistemas Complejos en Máquinas Paralelas GPGPU Avanzado Esteban E. Mocskos (emocskos@dc.uba.ar) Facultad de Ciencias Exactas y Naturales, UBA CONICET 5/6/2012 E. Mocskos (UBA CONICET) GPGPU Avanzado 5/6/2012
Programación Concurrente
Master en Computación Programación Concurrente Bloque II: Programación concurrente en POSIX Tema 1. Introducción al estándar POSIX Tema 3. Gestión de Threads Tema 4. Gestión del Tiempo Tema 5. Planificación
Computación de altas prestaciones aplicada al cálculo de variaciones en genómica
UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE INGENIERÍA INFORMÁTICA MÁSTER UNIVERSITARIO EN TECNOLOGÍAS INFORMÁTICAS AVANZADAS TRABAJO FIN DE MÁSTER Computación de altas prestaciones aplicada
Nicolás Zarco Arquitectura Avanzada 2 Cuatrimestre 2011
Clusters Nicolás Zarco Arquitectura Avanzada 2 Cuatrimestre 2011 Introducción Aplicaciones que requieren: Grandes capacidades de cómputo: Física de partículas, aerodinámica, genómica, etc. Tradicionalmente
UNIVERSIDAD CARLOS III DE MADRID PARALELIZACIÓN PARA EL ALGORITMO DE LOS FILTROS DE KALMAN. Trabajo Fin de Grado. Septiembre de 2012
USO DE TÉCNICAS DE PARALELIZACIÓN PARA EL ALGORITMO DE LOS FILTROS DE KALMAN Trabajo Fin de Grado Septiembre de 2012 Autor: Javier Rodríguez Arroyo Tutor: Luis Miguel Sánchez García Co-tutor: Javier Fernández
Computación Científica de Alto Desempeño
Computación Científica de Alto Desempeño Un acercamiento pragmático (sólo es verdadero aquello que funciona) Edison Montoya Benemérita Universidad Autónoma de Puebla Febrero 4 de 2015 Computación en Paralelo
Taller: Introducción a GPU's y Programación CUDA para HPC
Taller: Introducción a GPU's y Programación CUDA para HPC Amilcar Meneses Viveros Departamento de Computación CINVESTAV-IPN / LUFAC Computación Julio 2011 CONTENIDO I.- INTRODUCCION A GPU's Y CUDA 1.1
CUDA Overview and Programming model
Departamento de Ciencias de la computación Universidad de Chile Modelado en 3D y sus Aplicaciones en Realidad Virtual CC68W CUDA Overview and Programming model Student: Juan Silva Professor: Dr. Wolfram
CO n el tiempo, los ordenadores estándar han ido. Evaluación comparativa de modelos de programación paralela en arquitectura de memoria compartida
Evaluación comparativa de modelos de programación paralela en arquitectura de memoria compartida Luis Miguel Sánchez 1, Javier Fernández 2, Rafael Sotomayor 3 y J. Daniel García 4 Resumen Hoy día, la mayoría
SUMA de Vectores: Hands-on
SUMA de Vectores: Hands-on Clase X http://fisica.cab.cnea.gov.ar/gpgpu/index.php/en/icnpg/clases Algunas preguntas practicas (1) Que pasa si los vectores a sumar son muy grandes? (2) Como saber en que
PCI 2010 Acción Preparatoria. Computación Avanzada en Aplicaciones Biomédicas. (High Performance Computing applied to Life Sciences)
PCI 2010 Acción Preparatoria Computación Avanzada en Aplicaciones Biomédicas CaaB (High Performance Computing applied to Life Sciences) Descripción general Participantes Universidad de Málaga, España CIEMAT,
Yersinio Jiménez Campos Analista de datos Banco Nacional de Costa Rica
Fundamentos Título de de Big la Data presentación utilizando MATLAB Yersinio Jiménez Campos Analista de datos Banco Nacional de Costa Rica 1 Agenda Qué es Big Data? Buenas prácticas en el manejo de memoria.
Librería Thrust. Clase 4. http://fisica.cab.cnea.gov.ar/gpgpu/index.php/en/icnpg/clases
Librería Thrust Clase 4 http://fisica.cab.cnea.gov.ar/gpgpu/index.php/en/icnpg/clases Hasta aquí... CUDA C/C++ Control de bajo nivel del mapeo al hardware Desarrollo de algoritmos de alta performance.
Tema 1. Hardware. Fundamentos de Informática Grado en Ingeniería Mecánica
Tema 1. Hardware. Fundamentos de Informática Grado en Ingeniería Mecánica Definición de computador Máquina electrónica de propósito general utilizada para procesar información El computador moderno se
Paralelización del código Stampack v7.10. W.Castelló F. Flores
Paralelización del código Stampack v7.10 W.Castelló F. Flores Publicación CIMNE Nº-362, Julio 2011 Paralelización del código Stampack v7.10 W. Castelló F. Flores Publicación CIMNE Nº-362, Julio 2011 Centro
Introduccion al Lenguaje C. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia
Introduccion al Lenguaje C Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia Introducción C es un lenguaje de programación creado en 1972 por
Cloud Computing Systems for Cracking. Elías Grande Rubio Alberto Pérez Reyes Jesús Javier Sánchez Villamor
Cloud Computing Systems for Cracking Elías Grande Rubio Alberto Pérez Reyes Jesús Javier Sánchez Villamor Agenda Problemática John The Ripper THC-Hydra Objetivos Arquitectura de la solución Ataque Cloud
Búsqueda por similitud en espacios métricos sobre plataformas multi-core (CPU y GPU)
Búsqueda por similitud en espacios métricos sobre plataformas multi-core (CPU y GPU) (Tesis presentada y aprobada en la Escuela de Postgrado de la Facultad de Ciencias Físicas y Matemáticas de la Universidad
CURSOS DE VERANO 2014
CURSOS DE VERANO 2014 CLOUD COMPUTING: LA INFORMÁTICA COMO SERVICIO EN INTERNET LA PLATAFORMA GOOGLE CLOUD PLATFORM. GOOGLE APP ENGINE Pedro A. Castillo Valdivieso Universidad de Granada http://bit.ly/unia2014
Contenidos. Sistemas operativos Tema 3: Estructura del sistema operativo. Componentes típicos de un SO. Gestión de procesos.
Contenidos Sistemas operativos Tema 3: Estructura del sistema operativo Componentes típicos del SO Servicios del SO Llamadas al sistema Programas del sistema El núcleo o kernel Modelos de diseño del SO
Introducción. TEMA 3: Clusters de Computadores Personales
Introducción TEMA 3: Clusters de Computadores Personales Laboratorio de Arquitecturas Avanzadas de Computadores 5º de Ingeniería Superior de Informática 2008/09 Alberto Sánchez alberto.sanchez@urjc.es
Escuela Politécnica Ingeniería en Informática
UNIVERSIDAD DE EXTREMADURA Escuela Politécnica Ingeniería en Informática OpenCL frente a CUDA para análisis de imágenes hiperespectrales diciembre, 2011 2 UNIVERSIDAD DE EXTREMADURA Escuela Politécnica
Tema 1. Introducción a JAVA
Tema 1. Introducción a JAVA Historia Características Plataforma Java Entorno de desarrollo Ejemplo: Hola mundo Estructura general de un programa Java 1 Historia de Java (i) Surge en 1991: Sun Microsystems
Perspectivas de la Computación Científica. Clusters, Grids y Clouds. Desarrollos y retos Raúl Ramos Pollán Universidad Nacional de Colombia
Perspectivas de la Computación Científica. Clusters, Grids y Clouds. Desarrollos y retos Raúl Ramos Pollán Universidad Nacional de Colombia 1 Computación Científica La Ciencia e Ingeniería Basada en la
Cómputo en paralelo con MPI
Cómputo en paralelo con MPI Miguel Vargas-Félix miguelvargas@cimat.mx CIMAT, October 9, 2015 1/35 Clusters Beowulf Master node External network Slave nodes Network switch Características: Tecnología estandar
Arquitectura de aceleradores. Carlos Bederián IFEG CONICET GPGPU Computing Group FaMAF UNC bc@famaf.unc.edu.ar
Arquitectura de aceleradores Carlos Bederián IFEG CONICET GPGPU Computing Group FaMAF UNC bc@famaf.unc.edu.ar Contenidos Cómo llegamos hasta acá Qué hay ahora Qué hace Cómo lo uso Hacia dónde parece que
GANETEC SOLUTIONS HPC Farmacéuticas
GANETEC SOLUTIONS HPC Farmacéuticas La integración de tecnologías HPC en el sector Farmacéutico y de la Bioinformática ha permitido grandes avances en diversos campos. NUESTRA VISIÓN Estas nuevas posibilidades
Universidad de Córdoba. Trabajo de Fin de Máster
Universidad de Córdoba Máster en Sistemas Inteligentes Trabajo de Fin de Máster Minería de Reglas de Asociación en GPU Córdoba, Julio de 2013 Autor: Alberto Cano Rojas Director: Dr. Sebastián Ventura Soto
UNIVERSIDAD DE MAGALLANES FACULTAD DE INGENIERÍA DEPARTAMENTO DE INGENIERÍA EN COMPUTACIÓN. Cálculo de Índice de Similidud Estructural
UNIVERSIDAD DE MAGALLANES FACULTAD DE INGENIERÍA DEPARTAMENTO DE INGENIERÍA EN COMPUTACIÓN Cálculo de Índice de Similidud Estructural Manuel Cruz Pillancari 2010 La presente Memoria de Titulación ha sido
DE ntro de la comunidad científica que. Factores de rendimiento en aplicaciones híbridas (MPI+OpenMP)
Factores de rendimiento en aplicaciones híbridas (MPI+OpenMP) Abel Castellanos 1, Eduardo César 1, Anna Sikora 1, Joan Sorribes 1, Andreu Moreno Vendrell 2, Tomás Margalef 3 Resumen En la actualidad, existe
Qué es y qué no es un sistema distribuido? M.C. Juan Carlos Olivares Rojas
Qué es y qué no es un sistema distribuido? M.C. Juan Carlos Olivares Rojas Distribuir Según el diccionario: dividir una cosa entre varios designando lo que a cada uno corresponde Problemática: muchas tecnologías
Esquema de Paralelización Híbrida para Máquinas de
Departamento de Arquitectura de Computadores y Automática Universidad Complutense de Madrid Esquema de Paralelización Híbrida para Máquinas de Búsqueda Carolina Bonacic Castro Director: Manuel Prieto Proyecto
Una experiencia de iniciación al paralelismo en segundo curso del Grado de Ingeniería Informática
Una experiencia de iniciación al paralelismo en segundo curso del Grado de Ingeniería Informática Manuel E. Acacio, Javier Cuenca, Lorenzo Fernández, Ricardo Fernández-Pascual Departamento de Ingeniería
LAB2. Jerarquía de Memoria. Laboratorio de Arquitectura e Ingeniería de Computadores. Valentin Puente. Revisión 1.1: 02-Marzo-2010
Jerarquía de Memoria Laboratorio de Arquitectura e Ingeniería de Computadores Valentin Puente 10 Revisión 1.1: 02-Marzo-2010 1 INTRODUCCIÓN Y OBJETIVOS El objetivo fundamental de esta práctica es poner
GRUPOS DE INVESTIGACIÓN EN ARQUITECTURA DE COMPUTADORES GAC-USC y GAC-UDC
GRUPOS DE INVESTIGACIÓN EN ARQUITECTURA DE COMPUTADORES GAC-USC y GAC-UDC GAC-USC: Departamento de Electrónica y Computación http://www.ac.usc.es GAC-UDC: Departamento de Electrónica y Sistemas http://gac.des.udc.es
UNIVERSIDAD DEL VALLE DE MÉXICO PROGRAMA DE ESTUDIO DE LICENCIATURA PRAXIS MES XXI
UNIVERSIDAD DEL VALLE DE MÉXICO PROGRAMA DE ESTUDIO DE LICENCIATURA PRAXIS MES XXI NOMBRE DE LA ASIGNATURA: SUPERCÓMPUTO FECHA DE ELABORACIÓN: ENERO 2005 ÁREA DEL PLAN DE ESTUDIOS: AS ( ) AC ( ) APOBL
Computación de Propósito General en Unidades de Procesamiento Gráfico GPGPU
Computación de Propósito General en Unidades de Procesamiento Gráfico () R. Bayá, E. Dufrechou, P. Ezzattiy M. Pedemonte Clase 1 Introducción Contenido Un poco de historia El pipeline gráfico Tarjetas
SISTEMAS DE MULTIPROCESAMIENTO
SISTEMAS DE MULTIPROCESAMIENTO Tema 1 Introducción 5º Curso de Automática y Electrónica Industrial. 1 Contenido Tema 1 Aplicaciones Incremento de las prestaciones Clasificación de los ordenadores en función
OPTIMIZACIÓN DE ALGORITMOS PARA PROCESADO DE IMÁGENES CON GPUs
MÁSTER UNIVERSITARIO EN INGENIERÍA INFORMÁTICA UNIVERSIDAD POLITÉCNICA DE MADRID E.T.S. INGENIEROS INFORMÁTICOS OPTIMIZACIÓN DE ALGORITMOS PARA PROCESADO DE IMÁGENES CON GPUs TRABAJO FIN DE MÁSTER AUTOR
Instituto Politécnico Nacional
MARCO TEÓRICO] Junio de 2012 Instituto Politécnico Nacional Centro de Investigación en Computación Paralelización de un subconjunto de consultas SQL con unión natural utilizando una GPU TESIS QUE PARA
UNA NUEVA GENERACIÓN: HÍBRIDOS CPU/GPU. Microprocesadores para Comunicaciones. Paloma Monzón Rodríguez 42217126M
UNA NUEVA GENERACIÓN: HÍBRIDOS CPU/GPU Microprocesadores para Comunicaciones 2010 Paloma Monzón Rodríguez 42217126M Índice 1. Introducción... 3 2. Unidad Central de Procesamiento (CPU)... 4 Arquitectura
Mendieta. Carlos Bederián bc@famaf.unc.edu.ar IFEG-CONICET, FaMAF-UNC WHPC13
Mendieta Carlos Bederián bc@famaf.unc.edu.ar IFEG-CONICET, FaMAF-UNC 1 Antes que nada ssh user@200.16.18.210 2 Especificaciones - Nodo Supermicro 1027GR-TRF 1U de altura Dual socket 2011 Fuentes de 1820W