Preparación y Adaptación de Códigos Científicos para su Ejecución Paralela TICAL 2018
|
|
- Estefania Toledo
- hace 5 años
- Vistas:
Transcripción
1 Preparación y Adaptación de Códigos Científicos para su Ejecución Paralela TICAL 2018 Gilberto Díaz gilberto.diaz@uis.edu.co Universidad Industrial de Santander Centro de Súper Computación y Cálculo Científico (SC3) Bucaramanga - Colombia
2 Eterna Necesidad El software científico de cualquier área debe ejecutarse de forma ágil y eficiente.
3 Uno de los objetivos principales de todo software científico es reducir el tiempo de ejecución para obtener resultados en tiempos razonables. Reportes de Clima Alertas de Tsunami Difusión de enfermedades Etc. Eterna Necesidad
4 Actualmente existen distintas técnicas especializadas para reducir el tiempo de procesamiento de los datos. Técnicas para Acelerar Algoritmos
5 Técnicas para Acelerar Algoritmos Aceleración de algoritmos Código eficiente Compiladores Paralelismo Funcional Paralelismo de Datos Redes de alto desempeño Baja latencia Almacenamiento de alto desempeño Sistemas de Archivos Paralelos
6 Técnicas para Acelerar Algoritmos Aceleración de algoritmos Código eficiente Compiladores Paralelismo Funcional Paralelismo de Datos Estrategias para acelerar el código original Redes de alto desempeño Baja latencia Almacenamiento de alto desempeño Sistemas de Archivos Paralelos
7 Técnicas para Acelerar Algoritmos Para programar un código científico que se ejecute rápido, lamentablemente/ afortunadamente, se debe conocer el hardware donde se va a ejecutar. L2 A ALU C L2 Processor L1 L2 L1 B A B ALU C L1 L2 L1 Prefetch device L3 RAM A B A B ALU C ALU C
8 Técnicas para Acelerar Algoritmos Entre las estrategias tenemos Evitar saltos en el código Uso de memoria dinámica Aprovechar la meoria cache Linealizar estructuras de datos Especificar la arquitectura en tiempo de compilación
9 Evitar Saltos en el Código Los científicos generalmente no cuentan con formación en programación, sin embargo, escriben muchos códigos para modelar situaciones físicas. Esto genera programas ineficientes IF(NC5.EQ.1) GO TO END DO CONTINUE WRITE(*,*)'*** Computation Terminated ***'..
10 Uso de Memoria Dinámica Usar estructuras de datos de tamaño adecuado evita el mal uso de la memoria RAM. #define TAM float var[tam];. for(i=0; i<10; i++){ var[i] = x*pi;
11 Aprovechar la Memoria Cache Usar memoria contínua Matriz::Matriz(const int f, const int c){ int i, j; filas = f; columnas = c; elems = new float * [filas]; for(i=0; i<filas; i++){ elems[i] = new float[columnas]; } } Matriz::Matriz(const int f, const int c){ int i, j; filas = f; columnas = c; elems = new float * [filas]; elems[0] = new float [filas*columnas]; for(i=0; i<filas; i++) elems[i] = elems[0] + i * columnas; }
12 Aprovechar la Memoria Cache Intercambiar estructuras de repetición (loop interchange) for(i=0; i<filas; i++){ for(j=0;j<cols;j++){... } for(j=0; j<cols; j++){ for(j=0;i<filas;i++){... }
13 Aprovechar la Memoria Cache Integrar estructuras de repetición (loop fusion) for(i=0; i<tam; i++) c[i] = d[i]+3.0; for(i=0; i<tam; i++) a[i] = b[i]*4.0; for(i=0; i<tam; i++){ c[i] = d[i]+3.0; a[i] = b[i]*4.0; }
14 Linealizar Estructuras de Datos for(i=0; i<res.filas; i++) for(j=0; j<res.cols; j++) for(k=0; k<res.cols; k++) res.elems[i][j] = res.elems[i][j] + this->elems[i][k]* m.elems[k][j]; for(i=0; i<res.filas*res.cols; i++) for(j=0; j<res.filas; j++) res.elems[i] = res.elems[i]+ this->elems[j]* m.elems[j*m.colus];
15 Banderas de Optimización del Compilador CFLAGS="-march=corei7-avx -O2 -pipe"
16 Acelerar Algoritmos Utilicemos un ejemplo de rendering para explicar como podemos resolver un problema de forma más rápido
17 Acelerar Algoritmos Podemos dividir el problema en trozos más pequeños
18 Acelerar Algoritmos Y asignar cada trozo a un procesador distinto. Así, cada procesador resuelve más rápido un problema más pequeño en menor tiempo.
19 Paralelismo de Datos Acelerar Algoritmos a 00 a 01 a 02 b 00 b 01 b 02 c 00 c 01 c 02 a 10 a 11 a 12 x b 10 b 11 b 12 = c 10 c 11 c 12 a 20 a 21 a 22 b 20 b 21 b 22 c 20 c 21 c 22
20 Paralelismo de Datos Acelerar Algoritmos a 00 a 01 a 02 b 00 b 01 b 02 c 00 c 01 c 02 a 10 a 11 a 12 x b 10 b 11 b 12 = c 10 c 11 c 12 a 20 a 21 a 22 b 20 b 21 b 22 c 20 c 21 c 22
21 Paralelismo de Datos Acelerar Algoritmos a 00 a 01 a 02 b 00 b 01 b 02 c 00 c 01 c 02 a 10 a 11 a 12 x b 10 b 11 b 12 = c 10 c 11 c 12 a 20 a 21 a 22 b 20 b 21 b 22 c 20 c 21 c 22
22 Paralelismo de Datos Acelerar Algoritmos a 00 a 01 a 02 b 00 b 01 b 02 c 00 c 01 c 02 a 10 a 11 a 12 x b 10 b 11 b 12 = c 10 c 11 c 12 a 20 a 21 a 22 b 20 b 21 b 22 c 20 c 21 c 22
23 Paralelismo de Datos Acelerar Algoritmos c00 = a00b00 + a01b10 + a02b20 c01 = a00b01 + a01b11 + a02b21 c02 = a00b02 + a01b12 + a02b22... c22 = a20b02 + a21b12 + a22b22
24 Paralelismo de Datos Acelerar Algoritmos c00 = a00b00 + a01b10 + a02b20 c01 = a00b01 + a01b11 + a02b21 c02 = a00b02 + a01b12 + a02b22... c22 = a20b02 + a21b12 + a22b22
25 Acelerar Algoritmos Más formalmente Ecuación de Calor Discretizar Codificar for(i=0; i<n; i++) a[i] = b[i] + c[i];
26 Acelerar Algoritmos Acelerar un algoritmo implica generar varios hilos de ejecución utilizando diferentes técnicas. for(i=0; i<n; i++) a[i] = b[i] + c[i]; a[0] = b[0] + c[0];. a[n] = b[n] + c[n]; a[0] = b[0] + c[0]; a[1] = b[1] + c[1];.. a[m] = b[m] + c[m];.. a[n] = b[n] + c[n];
27 Modelos de Programación Paralela Un modelo de programación paralela o paradigma es un conjunto de tecnologías de software que permiten expresar algoritmos paralelos para implantar aplicaciones en la arquitectura adecuada.
28 Modelos de Programación Paralela Un modelo de programación paralela incluye distintas áreas: Aplicaciones Lenguajes de programación Compiladores Bibliotecas Sistemas de comunicación Dispositivos de I/O paralelos
29 Modelos de Programación Paralela Hoy en día es muy difícil realizar un programa paralelo de forma automática. Por esto, el usuario debe escoger el modelo apropiado, o una mezcla de ellos, para construir su programa
30 Modelos de Programación Paralela Un modelo de programación paralela es implemenntado de distintas formas: Como bibliotecas invocadas desde programas tradicionales Como extensiones de lenguajes de programación Como modelos de ejecución completamente nuevos
31 Modelos de Programación Paralela Una primera categorización de estos modelos se realiza de acuerdo al manejo de la memoria: Memoria compartida (shared memory) Memoria distribuida (distributed memory) Memoria compartida distribuida (distributed shared memory)
32 Memoria Compartida en Procesadores Tradicionales Los hilos se comunican utilizando la memoria Cores Procesadores GPUs Posix Threads OpenMP RAM
33 Memoria Compartida (OpenMP) OpenMP es un API conformado por tres elementos Directivas del compilador: es un conjunto de instrucciones que le permite al programador comunicarse con el compilador Biblioteca de funciones: rutinas para gestionar los parámetros paralelos: número de hilos participantes y en ID actual Variables de ambiente:
34 Memoria Compartida (OpenMP) OpenMP está disponible para C C++ Fortran
35 Memoria Compartida (OpenMP) El hilo de control se divide así mismo tantas veces como lo necesite (modelo fork-join) Master Thread Regiones paralelas
36 Memoria Compartida (OpenMP) La mayoría de los bloques de OpenMP son directivas del compilador llamadas pragmas Los pragmas definen las regiones paralelas C/C++ : #pragma omp parallel { code } #pragma omp parallel thread1 thread2 thread3
37 Memoria Compartida (OpenMP) #pragma omp parallel for for (i=0; i<n; i++){ Do_Work(i); }
38 Memoria Compartida Usando Aceleradores Los hilos se comunican utilizando la memoria CUDA OpenCL OpenACC Procesadores GPUs Cores RAM
39 Memoria Compartida (CUDA) Hay una amplia diferencia entre un procesador tradicional y los procesadores de los aceleradores (GPU): La mayoría de los transistores en una GPU están dedicados a procesamiento. En un CPU hay muchos transistores que deben gestionar el flujo de datos, la memoria chache, etc. Control UAL UAL UAL UAL Cache RAM RAM
40 Memoria Compartida (CUDA) CUDA es una tecnología que permite utilizar el poder de procesamiento masivamente paralelo de las GPUs de NVIDIA. Es un modelo de programación desarrollado por NVIDIA para sus GPUs. CUDA es una extensión del leguaje C para programación GPU.
41 Memoria Compartida (CUDA) La programación GPU, especialmente CUDA, es apropiada para enfrentar problemas donde la descomposición de dominio sea mayoritariamente la fuente de paralelismo
42 Memoria Compartida (CUDA) Jerarquía de los hijos de ejecución en CUDA Grid 0,0 0,1 0,2 1,0 1,1 1,2 2,0 2,1 2,2 Block 0,0 0,1 1,0 1,1 Thread
43 Memoria Compartida (CUDA Jerarquía de Memoria) Core 1 Registers Cache L1 Cache L2 CPU Core 2 Registers Cache L1 Cache L2 Bloque (0,0) GPU Bloque (1,0) Memoria Compartida Memoria Compartida Registros Registros Registros Registros Hilo (0,0) Hilo (1,0) Hilo (0,0) Hilo (1,0) Cache L3 Memoria Global Memoria Constante Memoria RAM
44 Memoria Compartida (CUDA) Multiplicación de matrices en un leguaje tradiconal #define N 20 float c[n][n]; void mulmat(float a[n][n], float b[n][n]){ int i,j,k; for(i=0; i<n; i++) for(j=0; j<n; j++) for(k=0; k<n; k++) c[i][j] = c[i][j] + a[i][k]*b[k][j]; }
45 Memoria Compartida (CUDA) El kernel correspondiente para la multiplicación de matrices es: global void MatrixMult(float *Md, float *Nd, float *Pd, int Width){ //Cálculo del índice de fila de Pd y M int Row blockidx.y * TILE_WIDTH + threadidx.y; //Cálculo del índice de columna de Pd y N int Col blockidx.x * TILE_WIDTH + threadidx.x; float Pvalue = 0; for( int k = 0; k < Width; ++k ) Pvalue += Md[Row*Width+k] * Nd[k*Width+Col]; Pd[Row*Width*Col] = Pvalue; }
46 Memoria Compartida (OpenACC) Es un estándar diseñado para simplificar la programación paralela de sistemas heterogéneos de CPU/GPU. Está disponible sólo para el juego de compiladores de PGI
47 Memoria Compartida (OpenACC) #pragma acc kernels { #pragma acc loop independent collapse(2) for ( int j = 1; j < n-1; j++ ) { for ( int i = 1; i < m-1; i++ ) { Anew[j][i] = 0.25 * (A[j][i+1] + A [j][i-1] + A[j-1][i] + A[j+1][i]); error = max (error,fabs(anew[j][i] - A[j][i])); } } } }
48 Memoria Distribuida (MPI) Cuando los recursos de un sólo computador no son sufcientes, entonces es necesario acudir a los recursos de otros computadores
49 Memoria Distribuida (MPI) Los hilos se comunican utilizando mensajes por la red MPI Cores GPUs Cores Procesadores RAM Cores GPUs Cores Procesadores RAM
50 Memoria Compartida Distribuida (Modelo Híbrido) Los hilos se comunican utilizando mensajes por la red y la memoria Cores GPUs Cores Procesadores RAM Cores GPUs Cores Procesadores RAM
51 Sistemas de Archivos Paralelos Lustre PVFS GPFS BeeFS File Asfdjlsfsdfkjsdfjsdhners Werweiujoifdsfshgvbcvs Sdfsjdfañsdfjdhegbdbbcv Sdfsdjflkjsdfskdjf asdfkj sdfkjasdfijwerlkjsdfasdfj
Modelos de Programación Paralela Prof. Gilberto Díaz
Universisdad de Los Andes Facultad de Ingeniería Escuela de Sistemas Modelos de Programación Paralela Prof. Gilberto Díaz gilberto@ula.ve Departamento de Computación, Escuela de Sistemas, Facultad de Ingeniería
Más detallesCUDA: MODELO DE PROGRAMACIÓN
CUDA: MODELO DE PROGRAMACIÓN Autor: Andrés Rondán Tema: GPUGP: nvidia CUDA. Introducción En Noviembre de 2006, NVIDIA crea CUDA, una arquitectura de procesamiento paralelo de propósito general, con un
Más detallesCÓMPUTO DE ALTO RENDIMIENTO EN MEMORIA COMPARTIDA Y PROCESADORES GRÁFICOS
CÓMPUTO DE ALTO RENDIMIENTO EN MEMORIA COMPARTIDA Y PROCESADORES GRÁFICOS Leopoldo N. Gaxiola, Juan J. Tapia Centro de Investigación y Desarrollo de Tecnología Digital Instituto Politécnico Nacional Avenida
Más detallesIntroducción a Cómputo Paralelo con CUDA C/C++
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO Facultad de Ingeniería Introducción a Cómputo Paralelo con CUDA C/C++ Laboratorio de Intel y Cómputo de alto desempeño Elaboran: Revisión: Ing. Laura Sandoval Montaño
Más detallesAlejandro Molina Zarca
Compute Unified Device Architecture (CUDA) Que es CUDA? Por qué CUDA? Dónde se usa CUDA? El Modelo CUDA Escalabilidad Modelo de programación Programación Heterogenea Memoria Compartida Alejandro Molina
Más detallesGPGPU ( GENERAL PURPOSE COMPUTING ON GRAPHICS PROCESSING UNITS)
26 GPGPU ( GENERAL PURPOSE COMPUTING ON GRAPHICS PROCESSING UNITS) Técnica GPGPU consiste en el uso de las GPU para resolver problemas computacionales de todo tipo aparte de los relacionados con el procesamiento
Más detallesFrancisco Javier Hernández López
Francisco Javier Hernández López fcoj23@cimat.mx http://www.cimat.mx/~fcoj23 Ejecución de más de un cómputo (cálculo) al mismo tiempo o en paralelo, utilizando más de un procesador. Arquitecturas que hay
Más detallesFrancisco J. Hernández López
Francisco J. Hernández López fcoj23@cimat.mx Ejecución de más de un cómputo (cálculo) al mismo tiempo o en paralelo, utilizando más de un procesador. Sistema de Cómputo Paralelo Hardware Parallel programming:
Más detallesTEMA 2: PROGRAMACIÓN PARALELA (I)
Grupo de Arquitectura de Computadores, Comunicaciones y Sistemas ARQUITECTURA DE COMPUTADORES II AUTORES: David Expósito Singh Florin Isaila Daniel Higuero Alonso-Mardones Javier García Blas Borja Bergua
Más detallesCUDA (Compute Unified Device Architecture)
CUDA (Compute Unified Device Architecture) Alvaro Cuno 23/01/2010 1 CUDA Arquitectura de computación paralela de propósito general La programación para la arquitectura CUDA puede hacerse usando lenguaje
Más detallesCARACTERIZACION DE PROBLEMAS A SOLUCIONAR MEDIANTE PROGRAMACIÓN MULTIPROCESO DE MEMORIA COMPARTIDA. Autor ERIKA VIVIANA RIAÑO BEJAR
CARACTERIZACION DE PROBLEMAS A SOLUCIONAR MEDIANTE PROGRAMACIÓN MULTIPROCESO DE MEMORIA COMPARTIDA Autor ERIKA VIVIANA RIAÑO BEJAR Director JOSE ORLANDO MALDONADO BAUTISTA DEPARTAMENTO DE INGENIERÍAS ELÉCTRICA
Más detallesPrimeros pasos con CUDA. Clase 1
Primeros pasos con CUDA Clase 1 Ejemplo: suma de vectores Comencemos con un ejemplo sencillo: suma de vectores. Sean A, B y C vectores de dimensión N, la suma se define como: C = A + B donde C i = A i
Más detallesIntroducción a la Programación de Memoria Compartida.. con OpenMP
Introducción a la Programación de Memoria Compartida.. con OpenMP Carlos Jaime BARRIOS HERNANDEZ, PhD. Escuela de Ingeniería de Sistemas e Informática Universidad Industrial de Santander Las herramientas
Más detallesSistemas Complejos en Máquinas Paralelas
Sistemas Complejos en Máquinas Paralelas Clase 1: OpenMP Francisco García Eijó Departamento de Computación - FCEyN UBA 15 de Mayo del 2012 Memoria compartida Las mas conocidas son las máquinas tipo Symmetric
Más detallesArquitecturas GPU v. 2015
v. 2015 http://en.wikipedia.org/wiki/graphics_processing_unit http://en.wikipedia.org/wiki/stream_processing http://en.wikipedia.org/wiki/general-purpose_computing_on_graphics_processing_ units http://www.nvidia.com/object/what-is-gpu-computing.html
Más detallesComputació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
Más detallesCLUSTER FING: ARQUITECTURA Y APLICACIONES
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
Más detallesFrancisco J. Hernández López
Francisco J. Hernández López fcoj23@cimat.mx 2 Procesadores flexibles de procesamiento general Se pueden resolver problemas de diversas áreas: Finanzas, Gráficos, Procesamiento de Imágenes y Video, Algebra
Más detallesGPU-Ejemplo CUDA. Carlos García Sánchez
Carlos García Sánchez 1 2 Contenidos Motivación GPU vs. CPU GPU vs. Vectoriales CUDA Sintaxis Ejemplo 2 3 Motivación Computación altas prestaciones: www.top500.org 1º: Titan (300mil AMD-Opteron + 19mil
Más detallesTaller de Programación Paralela
Taller de Programación Paralela Departamento de Ingeniería Informática Universidad de Santiago de Chile April 17, 2008 Motivación Programar aplicaciones paralelas no es una tarea trivial. Paralelismo
Más detallesSISTEMAS PARALELOS Y DISTRIBUIDOS. 3º GRADO EN ING. INFORMÁTICA. ING. COMPUTADORES PRÁCTICA 8: INTRODUCCIÓN A OPENMP.
SISTEMAS PARALELOS Y DISTRIBUIDOS. 3º GRADO EN ING. INFORMÁTICA. ING. COMPUTADORES PRÁCTICA 8: INTRODUCCIÓN A OPENMP. 1. OBJETIVOS Y PREPARACIÓN. En la actualidad los multiprocesadores en un solo chip
Más detallesARQUITECTURA DE SISTEMAS PARALELOS 2. 4º INGENIERÍA INFORMÁTICA. PRÁCTICA 4. PROGRAMACION PARALELA CON openmp.
ARQUITECTURA DE SISTEMAS PARALELOS 2. 4º INGENIERÍA INFORMÁTICA. PRÁCTICA 4. PROGRAMACION PARALELA CON openmp. 1. OBJETIVOS Y PREPARACIÓN. En la actualidad los multiprocesadores en un solo chip (denominados
Más detallesIntroducció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
Introducción a la Arquitectura y Plataforma de Programación de Cómputo Paralelo CUDA (36 hrs) I Presentación: Instructor M. en C. Cristhian Alejandro Ávila-Sánchez CUDA (Compute Unified Device Architecture)
Más detallesINTRODUCCIÓN A LA PROGRAMACIÓN EN CUDA. Francisco Javier Hernández López
INTRODUCCIÓN A LA PROGRAMACIÓN EN CUDA Francisco Javier Hernández López http://www.cimat.mx/~fcoj23 Guanajuato, Gto. Noviembre de 2012 Introducción a la Programación en CUDA 2 Qué es el Cómputo Paralelo
Más detallesTema 3 GPUs: Introducción
Tema 3 GPUs: Introducción Alberto Ros Bardisa Tema 3 GPUs Alberto Ros Bardisa 1 / 15 Agenda 1 GPUs: Introducción 2 GP-GPU 3 Ejemplos comerciales 4 Conclusiones Tema 3 GPUs Alberto Ros Bardisa 2 / 15 Agenda
Más detallesCDI Arquitecturas que soportan la concurrencia. granularidad
granularidad Se suele distinguir concurrencia de grano fino es decir, se aprovecha de la ejecución de operaciones concurrentes a nivel del procesador (hardware) a grano grueso es decir, se aprovecha de
Más detallesSimulaciones Astrofísicas en GPU's
Simulaciones Astrofísicas en GPU's CÓDIGO MAGNETOHIDRODINÁMICO FARGO3D & Frédéric Masset WHPC 2014 GPU's? Las GPU's están desarrolladas para el procesamiento eficiente de imágenes. Operaciones entre vecinos
Más detallesComputación en Manycores
Computación en Manycores Metodología de la Programación Paralela Contenidos 1 Sistemas 2 GPGPU 3 Intel Xeon Phi 4 Prácticas GPU: Graphic Processing Units Inicialmente para procesamiento de gráficos. También
Más detallesIntroducción a los Sistemas Multiprocesadores
Introducción a los Sistemas Multiprocesadores Multiprocesadores estilo Von Neumann Modelos de Organización Modelos de Programación Clasificación de los Multiprocesadores Por qué Sistemas Multiprocesadores?
Más detallesModelo 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
Más detallesEjemplos de optimización para Kepler Contenidos de la charla [18 diapositivas]
Ejemplos de optimización para Kepler Contenidos de la charla [18 diapositivas] RIO 2014 Río Cuarto (Argentina), 20 de Febrero, 2014 1. 2. 3. 4. 5. 6. Balanceo dinámico de la carga. [2] Mejorando el paralelismo
Más detallesMultiplicación de Matrices en Sistemas cc-numa Multicore. Autor: Jesús Cámara Moreno Director: Domingo Giménez Cánovas
Multiplicación de Matrices en Sistemas cc-numa Multicore Autor: Jesús Cámara Moreno Director: Domingo Giménez Cánovas Índice de Contenido 1. Introducción 2. Línea de Investigación 3. Sistemas Empleados
Más detallesArquitecturas de Altas Prestaciones y Supercomputación
Arquitecturas de Altas Prestaciones y Supercomputación Presentación del itinerario Julio de 2014 Arquitecturas de Altas Prestaciones y Supercomputación Julio de 2014 1 / 15 Agenda Introducción 1 Introducción
Más detallesEs una API (Aplication Program Interface) que se usa para paralelismo basado en hilos múltiples en entornos de memoria compartida
Algo de OPENMP Memoria Compartida Threads O hilos, se definen como flujos de instrucciones independientes, que se ejecutan separadamente del programa principal. Con estos hilos se aprovecha mucho una máquina
Más detallesINTRODUCCIÓN A LA PROGRAMACIÓN DE GPUS CON CUDA
INTRODUCCIÓN A LA PROGRAMACIÓN DE GPUS CON CUDA Francisco Igual Peña León, 10 de mayo de 2011 PLANIFICACIÓN 1. Miércoles: Conceptos introductorios 1. Breve presentación de conceptos básicos 2. Ejercicios
Más detallesPROGRAMACIÓN PARALELA. Modelos de programación paralela Paradigmas de programación paralela
PROGRAMACIÓN PARALELA Modelos de programación paralela Paradigmas de programación paralela Tipos de paralelismo Paso de mensajes Paralelismo de datos Memoria compartida Paradigmas de programación paralela
Más detallesPROGRAMACIÓ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
Más detallesModelos de computadores paralelos
Modelos de computadores paralelos Domingo Giménez Departamento de Informática y Sistemas Universidad de Murcia, Spain dis.um.es/~domingo Universidad de Murcia 1 Contenido Programación paralela Modelos
Más detallesPlan 95 Adecuado DEPARTAMENTO: ELECTRÓNICA CLASE: ELECTIVA DE ESPECIALIDAD ÁREA: TÉCNICAS DIGITALES HORAS SEM.: 4 HS. HORAS / AÑO: 64 HS.
Plan 95 Adecuado ASIGNATURA: COMPUTACIÓN PARALELA CON PROCESADORES GRÁFICOS CODIGO: 95-0409 DEPARTAMENTO: ELECTRÓNICA CLASE: ELECTIVA DE ESPECIALIDAD ÁREA: TÉCNICAS DIGITALES HORAS SEM.: 4 HS. HORAS /
Más detallesCómputo paralelo con openmp y C
Cómputo paralelo con openmp y C Sergio Ivvan Valdez Peña Guanajuato, México. 13 de Marzo de 2012 Sergio Ivvan Valdez Peña Cómputo Guanajuato, paralelo conméxico. openmp y () C 13 de Marzo de 2012 1 / 27
Más detallesEsquemas algorítmicos paralelos - Particionado y Paralelismo de Datos
Metodología de la Programación Paralela 2015-2016 Facultad Informática, Universidad de Murcia Esquemas algorítmicos paralelos - Particionado y Paralelismo de Datos Domingo Giménez (Universidad de Murcia)
Más detallesMAGMA. Matrix Algebra on GPU and Multicore Architecture. Ginés David Guerrero Hernández
PLASMA GPU MAGMA Rendimiento Trabajo Futuro MAGMA Matrix Algebra on GPU and Multicore Architecture Ginés David Guerrero Hernández gines.guerrero@ditec.um.es Grupo de Arquitecturas y Computación Paralela
Más detallesIntroducción a los sistemas de Multiprocesamiento Prof. Gilberto Díaz
Universisdad de Los Andes Facultad de Ingeniería Escuela de Sistemas Introducción a los sistemas de Multiprocesamiento Prof. Gilberto Díaz gilberto@ula.ve Departamento de Computación, Escuela de Sistemas,
Más detallesTAREA 1. INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS.
1 TAREA 1. INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS. 1- Cuáles son las principales funciones de un sistema operativo? Los Sistemas Operativos tienen como objetivos o funciones principales lo siguiente; Comodidad;
Más detallesSegunda Parte: TECNOLOGÍA CUDA
Segunda Parte: (compute unified device architecture) 12 I. CUDA CUDA es una arquitectura de cálculo paralelo de NVIDIA que aprovecha la potencia de la GPU (unidad de procesamiento gráfico) para proporcionar
Más detallesProgramación Gráfica de Altas Prestaciones
rogramación Gráfica de Altas restaciones lataformas de altas prestaciones para Infomática Gráfica. Máster de Desarrollo de Software Depto. de Lenguajes y Sistemas Informáticos lsi.ugr.es/~jmantas/ga 1.
Más detallesMultiprocesamiento en lenguaje C Introducción a Open Multiprocessing (OpenMP)
Multiprocesamiento en lenguaje C Introducción a Open Multiprocessing (OpenMP) Pertinencia de la enseñanza del cómputo paralelo en el currículo de las ingenierías Algunas preguntas Qué es un proceso? Qué
Más detallesComputación de Propósito General en Unidades de Procesamiento Gráfico GPGPU. Clase 0 Lanzamiento del Curso. Motivación
Computación de Propósito General en Unidades de Procesamiento Gráfico () Pablo Ezzatti, Martín Pedemonte Clase 0 Lanzamiento del Curso Contenido Evolución histórica en Fing Infraestructura disponible en
Más detallesGuía y fundamentos de la programación en paralelo
Revista en Telecomunicaciones Guía y fundamentos e Informática, de la programación Vol. 2, No. en 4 p. paralelo 81-97 Medellín - Colombia. Julio - Diciembre de 2012, ISSN 2215-8200 Guía y fundamentos de
Más detallesNociones básicas de computación paralela
Nociones básicas de computación paralela Javier Cuenca 1, Domingo Giménez 2 1 Departamento de Ingeniería y Tecnología de Computadores Universidad de Murcia 2 Departamento de Informática y Sistemas Universidad
Más detallesHerramientas para el estudio de prestaciones en clusters de computación científica, aplicación en el Laboratorio de Computación Paralela
Introducción Herramientas Estudio Conclusiones Herramientas para el estudio de prestaciones en clusters de computación científica, aplicación en el Laboratorio de Computación Paralela Ingeniería en Informática
Más detallesCUDA 5.5 y Visual Studio Express 2012 para Escritorio. Primeros pasos.
CUDA 5.5 y Visual Studio Express 2012 para Escritorio. Primeros pasos. La nueva versión de CUDA 5.5 es completamente compatible con la plataforma de desarrollo Visual Studio Express 2012 para escritorio
Más detallesProgramación en Intel Xeon Phi
Programación en Intel Xeon Phi David Corbalán Navarro Máster en Nuevas Tecnologías de la Informática Índice Introducción al paralelismo Niveles de paralelismo Paradigmas de programación paralela Manycores
Más detallesPARADIGMA y LENGUAJES DE PROGRAMACIÓN
CATEDRA CARRERA: PARADIGMA y LENGUAJES DE PROGRAMACIÓN LICENCIATURA EN SISTEMAS DE INFORMACION FACULTAD DE CIENCIAS EXACTAS QUIMICAS Y NATURALES UNIVERSIDAD NACIONAL DE MISIONES Año 2017 2do Cuatrimestre
Más detallesINTRODUCCIÓN A LA COMPUTACIÓN PARALELA CON GPUS
INTRODUCCIÓN A LA COMPUTACIÓN PARALELA CON GPUS Sergio Orts Escolano sorts@dtic.ua.es Vicente Morell Giménez vmorell@dccia.ua.es Universidad de Alicante Departamento de tecnología informática y computación
Más detallesLusitania. Pensando en Paralelo. César Gómez Martín
Lusitania Pensando en Paralelo César Gómez Martín cesar.gomez@cenits.es www.cenits.es Esquema Introducción a la programación paralela Por qué paralelizar? Tipos de computadoras paralelas Paradigmas de
Más detallesParalelismo. MPI Paso de mensajes. Francisco García Sánchez Departamento de Informática y Sistemas
Paralelismo MPI Paso de mensajes Francisco García Sánchez Departamento de Informática y Sistemas Contenido Introducción 1) Uso de MPI 2) Multiplicación de matrices 3) Ordenación por mezcla 4) Programación
Más detallesMETODOLOGÍA DE LA PROGRAMACIÓN PARALELA. Modelos de programación paralela Paradigmas de programación paralela
METODOLOGÍA DE LA PROGRAMACIÓN PARALELA Modelos de programación paralela Paradigmas de programación paralela Tipos de paralelismo Paso de mensajes Paralelismo de datos Memoria compartida Tipos de paralelismo
Más detalles1 Primitivas básicas de OpenMP
1 Primitivas básicas de OpenMP Consultar la página oficial de la plataforma OpenMP http://www.openmp.org/drupal/ Pragmas Es una directiva para el compilador que permite la definición de nuevas directivas
Más detallesOpenMP. Qué es OpenMP?
OpenMP Qué es OpenMP? Modelo de programación paralela Paralelismo de memoria compartida Soporta el paralelismo por datos Escalable Permite paralelización incremental Extensiones a lenguajes de programación
Más detallesIntroducción a la Programación Paralela
Proyecto Universidad-Secundaria Incorporación de contenidos de programación paralela en la rama de tecnologías informáticas Facultad Informática, Universidad de Murcia e Instituto de Enseñanza Secundaria
Más detallesParalelismo en monoprocesadores. Introducción
Paralelismo en monoprocesadores Introducción Profesor: Mag. Marcelo Tosini Cátedra: Arquitectura Computadoras y técnicas Digitales Carrera: Ingeniería Sistemas Ciclo: 4º año 1 Técnicas para mejorar el
Más detallesComputación de Altas Prestaciones Sistemas computacionales
Computación de Altas Prestaciones Sistemas computacionales Domingo Giménez Departamento de Informática y Sistemas Universidad de Murcia, Spain dis.um.es/~domingo Universidad de Murcia 1 Motivación Problemas
Más detallesEsquemas algorítmicos paralelos - Particionado y Paralelismo de Datos
Metodología de la Programación Paralela Facultad Informática, Universidad de Murcia Esquemas algorítmicos paralelos - Particionado y Paralelismo de Datos Domingo Giménez (Universidad de Murcia) 1 / 31
Más detallesUna Biblioteca Numérica Paralela para UPC
1/32 Una Biblioteca Numérica Paralela para UPC Jorge González-Domínguez 1 *, María J. Martín 1, Guillermo L. Taboada 1, Juan Touriño 1, Ramón Doallo 1, Andrés Gómez 2 1 Grupo de Arquitectura de Computadores
Más detalles48 ContactoS 84, (2012)
48 ContactoS 84, 47 55 (2012) Recibido: 31 de enero de 2012. Aceptado: 03 de mayo de 2012. Resumen En los últimos años la tecnología de las unidades de procesamiento de gráficos (GPU-Graphics Processsing
Más detallesComputació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. Pedemontey J.P. Silva Clases 4 Programación Contenido Modelo de programación Introducción Programación
Más detallesEntornos de programación paralela basados en modelos/paradigmas
Program. paralela/distribuida Entornos de programación paralela basados en modelos/paradigmas Sobre la programación paralela 1 Índice Reflexiones sobre la programación paralela MapReduce Propuesta original
Más detallesComputación en procesadores gráficos
Programación con CUDA Ejercicio 8 José Antonio Martínez García Francisco M. Vázquez López Manuel Ujaldón Martínez Portada Ester Martín Garzón Universidad de Almería Arquitectura de las GPUs Contenidos
Más detallesMultiprocesadores de Memoria Compartida
Arquitectura (10/11) Multiprocesadores Memoria Compartida Características MMC Res Interconexión para MMC Programación MMC Tipos MMC 1 Arquitectura (10/11) Características MMC Prestaciones (MMC) = f (coste
Más detallesGuía docente de la asignatura
Asignatura Materia Módulo Titulación COMPUTACION PARALELA COMPLEMENTOS DE INGENIERÍA DE COMPUTADORES (vacío) GRADO EN INGENIERÍA INFORMÁTICA Plan 464 Código 45218 Periodo de impartición 1 er. CUATRIMESTRE
Más detallesDESARROLLO DE APLICACIONES EN CUDA
DESARROLLO DE APLICACIONES EN CUDA Curso 2014 / 15 Procesadores Gráficos y Aplicaciones en Tiempo Real Alberto Sánchez GMRV 2005-2015 1/30 Contenidos Introducción Debugging Profiling Streams Diseño de
Más detallesUnidad I: Organización del Computador. Ing. Marglorie Colina
Unidad I: Organización del Computador Ing. Marglorie Colina Arquitectura del Computador Atributos de un sistema que son visibles a un programador (Conjunto de Instrucciones, Cantidad de bits para representar
Más detallesArquitecturas 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,
Más detallesEjemplos 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.
Más detallesV. OPTIMIZACIÓN PARA COMPUTACIÓN GPU EN CUDA
V. OPTIMIZACIÓN PARA COMPUTACIÓN GPU EN CUDA La arquitectura de una GPU es básicamente distinta a la de una CPU. Las GPUs están estructuradas de manera paralela y disponen de un acceso a memoria interna
Más detallesEvolución del software y su situación actual
Evolución del software y su situación actual El software es el conjunto de programas que permite emplear la PC, es decir, es el medio de comunicación con la computadora, el control de sus funciones y su
Más detallesParalelización sobre GPU del Algoritmo de Eliminación de Gauss-Jordan para la Solución de Sistemas de Ecuaciones Lineales
Paralelización sobre GPU del Algoritmo de Eliminación de Gauss-Jordan para la Solución de Sistemas de Ecuaciones Lineales Edgar Quispe Ccapacca edgar.edqc@gmail.com Escuela Profesional de Ingeniería de
Más detallesDivide y Vencerás Programación Dinámica
Metodología de la Programación Paralela Facultad Informática, Universidad de Murcia Esquemas algorítmicos paralelos: Divide y Vencerás Programación Dinámica Domingo Giménez (Universidad de Murcia) 1 /
Más detallesComputación Matricial y Paralela
Computación Matricial y Paralela Programación en Memoria Compartida Javier Cuenca Dpto. de Ingeniería y Tecnología de Computadores Domingo Giménez Dpto. de Informática y Sistemas Universidad de Murcia
Más detallesParalelización especulativa
Sergio Aldea Departamento de Informática Universidad de Valladolid sergio@infor.uva.es MUI-TIC, curso 2013-2014 1 / 48 Índice Conceptos fundamentales Ejecución especulativa por software Especulación +
Más detallesUNIDAD II Metodología de programación paralela. Lic. Jesús Germán Andrés PAUTSCH - FCEQyN - UNaM
UNIDAD II Metodología de programación paralela UNIDAD II: Metodología de programación paralela Metodología de programación paralela Algunos conceptos que nos ayudarán a entender mejor el tema. Modelos
Más detallesTile64 Many-Core. vs. Intel Xeon Multi-Core
Tile64 Many-Core vs. Intel Xeon Multi-Core Comparación del Rendimiento en Bioinformática Myriam Kurtz Francisco J. Esteban Pilar Hernández Juan Antonio Caballero Antonio Guevara Gabriel Dorado Sergio Gálvez
Más detallesSistemas Operativos. Procesos
Sistemas Operativos Procesos Agenda Proceso. Definición de proceso. Contador de programa. Memoria de los procesos. Estados de los procesos. Transiciones entre los estados. Bloque descriptor de proceso
Más detallesProgramación Paralela
Programación Paralela 4º Grado Ing. Informática Depto. de Lenguajes y Sistemas Informáticos Universidad de Granada Datos de la Asignatura PÁGINAS WEB: Web de material docente: http://lsi.ugr.es/~jmantas/ppr/
Más detallesUNIDAD II. Software del Computador. Ing. Yesika Medina Ing. Yesika Medina
UNIDAD II Software del Computador SOFTWARE Se denomina software a todos los componentes intangibles de una computadora, formados por el conjunto de programas y procedimientos necesarios para hacer posible
Más detallesIntroducción a Cómputo Paralelo con CUDA C/C++
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO Facultad de Ingeniería Introducción a Cómputo Paralelo con CUDA C/C++ Laboratorio de Intel para la Academia y Cómputo de alto desempeño Elaboran: Revisión: Ing.
Más detallesGuía práctica de estudio 11 Introducción a OpenMP.
Guía práctica de estudio 11 Introducción a OpenMP. Elaborado por: Revisión: Ing. Laura Sandoval Montaño Facultad de Ingeniería U.N.A.M. Guía Práctica 11 Estructura de datos y Algoritmos II Introducción
Más detallesSistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria
1.2. Jerarquía de niveles de un computador Qué es un computador? Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria Es un sistema tan complejo
Más detallesOrganización del Sistema Operativo
del Sistema Operativo Sistemas Operativos Pontificia Universidad Javeriana Febrero de 2010 del Sistema Operativo Funciones Básicas Funciones Básicas Perspectivas del Computador Responsabilidades del SO
Más detallesModelos de Programación Paralela
Modelos de Programación Paralela Modelos de Programación para Multiprocesadores El Modelo de Variables Compartidas Expresión del Paralelismo en el Modelo de Variables Compartidas Primitivas de Sincronización
Más detallesHPC: Aplicaciones y Software
HPC: Aplicaciones y Software Heredado HPC: Aplicaciones y Software Fernando G. Tinetti III-LIDI, Fac. de Informática, UNLP Comisión de Inv. Científicas, Bs. As. fernando@info.unlp.edu.ar Aplicaciones y
Más detallesRelación de Ejercicios. Programación Paralela 4º de Grado en Ingeniería Informática.
1. Por qué el modelo de programación que se sigue al programar con MPI es independiente de la asignación? 2. Describir gráficamente una solución eficiente para realizar una operación de reducción global
Más detallesPRÁCTICA DE LABORATORIO 4 Programación Orientada a Objetos
ESCUELA DE INGENIERÍA DE SISTEMAS DEPARTAMENTO DE COMPUTACIÓN PROGRAMACIÓN 2 PRÁCTICA DE LABORATORIO 4 Programación Orientada a Objetos Contenido Introducción...1 Objeto...2 Atributo...2 Métodos...2 Clase...3
Más detallesOptimización de Rutinas Multinivel de Álgebra Lineal en Sistemas Multicore
Máster en Nuevas Tecnologías en Informática Facultad de Informática Universidad de Murcia Optimización de Rutinas Multinivel de Álgebra Lineal en Sistemas Multicore Autor: Jesús Cámara Moreno Directores:
Más detallesIntroducción a la Computación Paralela
Metodología de la Programación Paralela Facultad Informática, Universidad de Murcia Introducción a la Computación Paralela Bibliografía básica Introducción Del curso, capítulos 1 a 6 De esta sesión, capítulos
Más detalles