Explotando el rendimiento de la GPU FLOPS pico en doble precisión
|
|
- Óscar Farías Rojo
- hace 6 años
- Vistas:
Transcripción
1 Rendimiento pico en GPU vs. CPU Explotando el rendimiento de la GPU FLOPS pico en doble precisión Curso de CUDA Málaga, 13 de Julio de 2017 GPU 6x mejor en double : Manuel Ujaldón GPU: 3000 GFLOPS CPU: 500 GFLOPS CAtedrático de Univ. de Málaga CUDA Nvidia Ancho de banda GPU 6x ancho de banda: 7 GHz x 48 bytes = 336 GB/s. 2 GHz x 32 bytes = 64 GB/s. 2 El ancho de banda en un viaje de Málaga a Madrid (500 km) GFLOPS frente a la velocidad de mi coche Máxima: Tiempo efectivo en tren: 250 km/h. Preliminares: 3 minutos. Viaje: 2 horas, 30 minutos. Salida: 2 minutos. TOTAL: 2 horas, 35 minutos. Media después de 10 años de uso: 50 km/h. 200 km/h Tiempo efectivo en avión: Regularmente utilizo mi coche al 20% de su rendimiento pico. Debería estar decepcionado? Preliminares: 90 minutos. Viaje: 50 minutos. Salida: 30 minutos. TOTAL: 2 horas, 50 minutos ( y aún estás muy lejos del centro!) km/h 4
2 El ritmo en la ejecución de instrucciones: Del SM de Femi al SMX de Kepler El multiprocesador SMX en detalle Planificación y emisión de instrucciones en warps Front-end Ejecución de instrucciones. 512 unidades funcionales: para aritmética entera para aritmética s.p para aritmética d.p para carga/almacen para SFUs (log,sqrt, ) Back-end Acceso a memoria Interfaz 5 6 Expresando todo el paralelismo Tetris (baldosa = warp_instr.): - Emite 4 warp_instrs. - Ejecuta hasta 10 warps = 320 hilos. - Warp_instrs. son simétricos y se ejecutan todos en 1 ciclo. Correspondencia de colores: para instrucciones int. para instrs. float. double. Emite 4 warp_instrs. load/store. log/sqrt. El jugador planifica los warps! Se pueden rotar las fichas si no hay dependencias entre sus 4 warps Ejecuta hasta 10 warp_instrs. instr. warp G80: Tarda 4 ciclos en ejecutar cada warp_instrs. G80: 16 U.F. Ejemplo: Kernel con bloques de 384 hilos (12 warps). Fermi: - Emite 2. - Ejecuta hasta 5. SM en Fermi: 100 U.F. paralelas. Bloque 0: Bloque 1: sub fmadd fdiv64 load sqrt Kepler: - Emite 4 warps x 2 instrs. - Ejecuta hasta 16 warp_instrs. (512 unidades funcionales). 6x32 = 192 ALUs 192 FPU SP 64 FPU DP SMX en Kepler: 512 U.F. paralelas. 32 SFU 32 LD/ST 7 Paralelismo en SMX: A nivel de hilo (TLP) y a nivel de instrucción (ILP) Incrementar paralelismo verticalmente con ILP: Si las instrs. son más independientes Incrementar el paralelismo horizontalmente a través del TLP: Más warps concurrentes (bloques más grandes y/o más bloques activos en cada SMX). Los SMX pueden potenciar el ILP disponible de forma intercambiable con el TLP: Es mucho mejor que Fermi para esto. Algunas veces es más fácil incrementar el ILP que el TLP (por ejemplo, desenrrollar un lazo en un pequeño factor): El número de hilos puede estar limitado por el algoritmo o los límites HW. Necesitamos el ILP para lograr un elevado IPC (Instrs. Per Cycle). 8
3 En las GPUs Kepler concurren todas las formas de paralelismo. Ejemplo: K40. Paralelismo dependiente del volumen de datos 2: De instrs. (ILP) 1: De tareas (TLP) 3: De datos (SIMD) 4: Vectorial (warp = 32) (todo este volumen representa menos, 60x15 warps) SMX 0 La K40 puede ejecutar hasta 512x15 = 7680 hilos en un ciclo si éstos son del color adecuado. SMX 15 La K40 puede planificar y emitir hasta 64x15 warps en un ciclo: hilos en 1.14 ns. Imagina un tetris 3D con 15 cubiletes y hasta 64 baldosas cayendo simultáneamente en cada uno de ellos, porque así funciona la K40 planificando warps con el máx. paralelismo. 9 El programa paralelo más elemental: Los bucles son paralelizables. Conocemos a priori la carga de trabajo. for (j=0; j<m; j++) convolution (i, j); El programa imposible más elemental: Desconocemos la carga de trabajo. El reto es su distribución (partición de datos). for (j=0; j<elementsonrow[i]; j++) convolution (i, j); N N max(elementsonrow[i]) Una solución mala: Supercómputo. Una solución peor: Serialización. M 10 Un desafío para los programadores CUDA: Realizado en 8 países hasta la fecha Puedes probar diversos operandos y operadores Qué hace el programa? Iterar en paralelo sobre cada elemento de una matriz dispersa comprimida por columnas. La matriz dispersa puede tener N=100 o N=200 columnas, cada una con un número distinto de elementos no nulos. Se computan bucle i numops sobre cada elemento. for (j=colptr[i]; j<colptr[i+1]; j++) for (k=0;k<numops;k++) value[j] += value[j]; Todos los bucles son forall. La carga computacional se desconoce en tiempo de compilación. El desafío es la partición de datos: bucle j max(elementsoncol[i]) Desplegar streams, kernels, bloques e hilos astutamente. N 11 int float double 6x32 = 192 ALUs 192 FPU SP 64 FPU DP SMX en Kepler: 512 U.F. paralelas. Procesamiento de matrices dispersas 32 SFU 32 LD/ST int float double values[numelements]; for all elements assigned to each thread: for numops. to be done on each element values[i] *= values[i]; Cambiar el operador a más sencillo (suma) o más complejo (división) también afectará según la latencia de cada operación. 12
4 Utilizar el CUDA Visual Profiler para conocer qué tal se adapta nuestra aplicación Y hay que elegir la estrategia de paralelización ganadora Procesamiento de matrices dispersas D 3: 2: De instrs. (ILP) 1: De tareas (TLP) e s to da D) M I (S Estrategia base: 13 La relación entre nuestro juego (SW) y el front-end y back-end de la GPU (HW) 4: Vectorial (warp = 32) Nuestro código recorre toda la matriz, realizando operaciones con cada elemento de forma independiente. Lanzaremos un kernel CUDA por cada columna de la matriz. Cada kernel tendrá el menor número posible de bloques. Cada bloque tendrá el mayor número posible de warps. 14 Las instrucciones para el concurso están en nuestra web:
5 Cómo crear los streams. Un ejemplo con 3 streams, cada uno compuesto de 3 kernels Cómo se representa una matriz dispersa en formato comprimido por columnas (CCS) stream 1 stream 2 stream 3 global kernel_a(pars) {body} // Same for BZ cudastream_t stream_1, stream_2, stream_3; cudastreamcreatewithflags(&stream_1, ); cudastreamcreatewithflags(&stream_2, ); cudastreamcreatewithflags(&stream_3, ); kernel_a <<< dimgrida, dimblocka, 0, stream_1 >>> (pars); kernel_b <<< dimgridb, dimblockb, 0, stream_1 >>> (pars); kernel_c <<< dimgridc, dimblockc, 0, stream_1 >>> (pars); kernel_p <<< dimgridp, dimblockp, 0, stream_2 >>> (pars); kernel_q <<< dimgridq, dimblockq, 0, stream_2 >>> (pars); kernel_r <<< dimgridr, dimblockr, 0, stream_2 >>> (pars); kernel_x <<< dimgridx, dimblockx, 0, stream_3 >>> (pars); kernel_y <<< dimgridy, dimblocky, 0, stream_3 >>> (pars); kernel_z <<< dimgridz, dimblockz, 0, stream_3 >>> (pars); stream_1 kernel_a kernel_b kernel_c stream_2 kernel_p kernel_q kernel_r stream_3 kernel_x kernel_y kernel_z Ejemplo para una matriz 5x5: Índices de fila colptr value 0 3 número de elementos en cada columna (acumulados) según se recorren verticalmente rowidx for (j=colptr[i]; j<colptr[i+1]; j++) value[j] += value[j]; posición horizontal de cada valor Para esta estructura de datos, así recorremos la matriz: Matrices dispersas que se pueden usar (tomadas de la colección Matrix Market) Área científica Filas de la matriz Columnas de la matriz Elementos no nulos Carga de trabajo Economía Demografía Oceanografía Física cuántica Álgebra lineal Procesamiento de imágenes Astrofísica Bioquímica Base x Base x Base x Base Base x Base x Base x Base Nombres usados para las matrices: mat-f-c-n.rua, donde F, C y N son el número de filas, columnas y no-nulos. Ejemplo: La primera matriz se llama mat k.rua
6 Las 10 mejores optimizaciones realizadas por los estudiantes 1. Incrementar el número de operaciones por elemento (1024). 2. Incrementar el tamaño de la matriz dispersa (máx. 69M). 3. Cambiar el operador (add/sub/mul/div). 4. Cambiar el operando (int/float/double). 5. Optimizar el tamaño de bloque (384 hilos por bloque). 6. Agrupar bloques en kernels y éstos en streams para expresar más paralelismo. 7. Optimizar los accesos a memoria usando registros y memoria compartida. 8. Guiar al compilador a través de directivas #pragma unroll. 9. Sacar provecho a la operación madd. 10. Usar instrucciones vectoriales para explotar (x,y,z,w) y (r,g,b,a). 21 Rendimiento logrado sobre GeForce GTX480 [techo: 1330 GFLOPS sobre floats (32-bit)] Punto de partida Optimización Acceler. Rendimiento 1. Incrementar el número de operaciones por elemento (<1024) 2. Usar una matriz más grande (hasta no-ceros) 3. Elegir el operador de suma (add) 4. Sustituir el operando double (64-bits) por float (32-bit) 5. Sintonizar el tamaño de bloque (384 hilos) 6. Agrupar los kernels en streams 7. Optimizar los accesos a memoria usando la compartida y regs. 8. Desenrollar el lazo con directivas de compilación #pragma 9. Habilitar el operador FMADD (fused multiply-add) 10. Activar el procesamiento vectorial en las operaciones (4 en 1) 1.2 Saturar el número de operaciones (hasta 1M) 8.2 Saturar el factor de desenrollado del lazo (hasta 4096) 2.2 Generar una matriz enorme que explote la escalabilidad 2.3 Adaptar la matriz a la estructura del paralelismo CUDA GFLOPS x 0.20 GFLOPS x GFLOPS 1.00 x GFLOPS 1.89 x GFLOPS 1.00 x GFLOPS 1.00 x GFLOPS 3.19 x GFLOPS 4.07 x GFLOPS 2.15 x GFLOPS 1.00 x GFLOPS 1.02 x GFLOPS 1.01 x GFLOPS 1.02 x GFLOPS 1.01 x GFLOPS 22 Observaciones finales Observaciones finales No empleamos contadores de rendimiento para medir los GFLOPS en el programa del concurso. Verás la fórmula: GFLOPS attained = (nops. performed) / (elapsed time) No obstante, bajo ciertas estrategias de optimización, se permite cambiar la fórmula para contabilizar tus logros. En caso de que creas que tienes derecho a modificar dicha fórmula, consúltame! 23 Conflicto: Las comunicaciones gastan más energía que la computación, pero necesitamos intensidad operacional para que los chips exploten los GFLOPS. No pierdas de vista las latencias, tienen un peso creciente (frente al ancho de banda). Las aplicaciones científicas han evolucionado históricamente tratando de minimizar la interacción con memoria. Los GFLOPS pico no son un estimador fiable del rendimiento. La GPU requiere un esfuerzo del programador para apurar el rendimiento pero éste se amortiza con los años gracias a su escalabiidad. 24
Contenidos [62 diapositivas] Málaga, del 15 al 24 de Julio, 2015
Nuevas prestaciones hardware en Kepler IX Curso de verano de la UMA Programación de GPUs con CUDA Contenidos [62 diapositivas] Málaga, del 15 al 24 de Julio, 2015 1. 2. 3. 4. 5. Presentación de la arquitectura
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 detallesKepler. 1. Presentación de la arquitectura. Contenidos de la charla. Kepler, Johannes (1571-1630)
Contenidos de la charla Manuel Ujaldón Nvidia CUDA Fellow Dpto. Arquitectura de Computadores Universidad de Málaga 1. Presentación de la arquitectura [7 diapositivas] 2. La memoria y el transporte de datos
Más detallesKepler. 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]
Más detallesArquitectura 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
Más detallesDescubriendo Kepler. 1. Presentación de la arquitectura. Agradecimientos. Indice de contenidos [46 diapositivas]
Agradecimientos Descubriendo Kepler Manuel Ujaldón Nvidia CUDA Fellow Dpto. Arquitectura de Computadores Universidad de Málaga A los ingenieros de Nvidia, por compartir ideas, material, diagramas, presentaciones,...
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 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 detallesArquitecturas 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
Más detallesProgramando la GPU con CUDA
Programando la GPU con CUDA Curso en el Dpto. de Matemáticas e Informática. UIB. 23 al 25 de Junio, 2014. Manuel Ujaldon Nvidia CUDA Fellow Profesor Titular del Dpto. de Arquitectura de Computadores. Universidad
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 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 detallesFlaviu Vasile Buturca TRABAJO FINAL DE CARRERA. Dirigido por Carles Aliagas Castell. Grado de Ingeniería Informática
Flaviu Vasile Buturca Programación Algoritmos paralela CUDAen CUDA TRABAJO FINAL DE CARRERA Dirigido por Carles Aliagas Castell Grado de Ingeniería Informática Tarragona 2016 UNIVERSIDAD ROVIRA I VIRGILI
Más detallesFLAG/C. Una API para computación matricial sobre GPUs. M. Jesús Zafont Alberto Martín Francisco Igual Enrique S. Quintana-Ortí
FLAG/C Una API para computación matricial sobre GPUs M. Jesús Zafont Alberto Martín Francisco Igual Enrique S. Quintana-Ortí High Performance Computing & Architectures Group Universitat Jaume I de Castellón
Más detallesArquitectura de GPUs
Arquitectura de GPUs Carlos Bederián, Nicolás Wolovick FaMAF, Universidad Nacional de Córdoba, Argentina 1 de Agosto de 2012 ECAR12@DC.UBA Revisión 3739, 2012-08-02 Introducción Organización GPU: cálculo
Más detallescuevogenet Paralelización en CUDA de la Dinámica Evolutiva de Redes Génicas Dirigido por: Fernando Díaz del Río José Luis Guisado Lizar
cuevogenet Paralelización en CUDA de la Dinámica Evolutiva de Redes Génicas Realizado por: Raúl García Calvo Dirigido por: Fernando Díaz del Río José Luis Guisado Lizar Objetivos Implementar un algoritmo
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 detallesArquitecturas 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
Más detallesSISTEMAS PARALELOS Y DISTRIBUIDOS. 3º GIC. PRÁCTICA 3. PLANIFICACIÓN ESTÁTICA AVANZADA. TMS320C6713
SISTEMAS PARALELOS Y DISTRIBUIDOS. 3º GIC. PRÁCTICA 3. PLANIFICACIÓN ESTÁTICA AVANZADA. TMS320C6713 OBJETIVOS. En esta práctica se trata de estudiar dos de las técnicas de planificación estática más importantes:
Más detallesIntroducción a la Computación. Capítulo 10 Repertorio de instrucciones: Características y Funciones
Introducción a la Computación Capítulo 10 Repertorio de instrucciones: Características y Funciones Que es un set de instrucciones? La colección completa de instrucciones que interpreta una CPU Código máquina
Más detallesComputación matricial dispersa con GPUs y su aplicación en Tomografía Electrónica
con GPUs y su aplicación en Tomografía Electrónica F. Vázquez, J. A. Martínez, E. M. Garzón, J. J. Fernández Portada Universidad de Almería Contenidos Computación matricial dispersa Introducción a SpMV
Más detallesEstructura de Computadores Tema 1. Introducción a los computadores
Estructura de Computadores Tema 1. Introducción a los computadores Departamento de Informática Grupo de Arquitectura de Computadores, Comunicaciones y Sistemas UNIVERSIDAD CARLOS III DE MADRID Contenido
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 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 detallesLAS unidades de procesamiento gráfico (GPUs)
Uso del conocimiento de la arquitectura Fermi para mejorar el rendimiento en aplicaciones CUDA Yuri Torres, Arturo González-Escribano y Diego R. Llanos 1 Resumen Las unidades de procesamiento gráfico (GPUs)
Más detallesTEMA III: OPERACIONES CON LOS DATOS
CUESTIONES A TRATAR: Cual es la función de la unidad operativa? Es necesaria? Qué tipos de circuitos implementan la unidad operativa? Unidad operativa frente a ALU Qué es una operación de múltiple precisión?
Más detallesProcesamiento 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.
Más detallesParalelismo en monoprocesadores. Procesadores VLIW
Paralelismo en morocesadores Procesadores VLIW Profesor: Mag. Marcelo Tosini Cátedra: Arquitectura de Computadoras y técnicas Digitales Carrera: Ingeniería de Sistemas Ciclo: 4º año Arquitectura VLIW básica
Más detallesExpresiones Aritméticas. Programación digital I Escuela de Sistemas Facultad de Ingeniería Gilberto Diaz
Expresiones Aritméticas Programación digital I Escuela de Sistemas Facultad de Ingeniería Gilberto Diaz Expresiones Aritméticas El computador puede realizar cálculos además de mostrar datos por pantalla.
Más detallesIntroducció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
Más detallesProgramación en C. Algoritmo y Estructura de Datos. Ing. M. Laura López. Programación en C
Algoritmo y Estructura de Datos Ing. M. Laura López 1 Estructura de un programa en C 2 Estructura de un programa en C #include Archivos de cabecera # define Definición de constantes Declaraciones Globales
Más detallesArquitecturas vectoriales, SIMD y extensiones multimedia
Arquitecturas vectoriales, SIMD y extensiones multimedia William Stallings, Organización y Arquitectura de Computadores, 5ta. ed., Capítulo 16: Procesamiento Paralelo. Andrew S. Tanenbaum, Organización
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 detallesEjercicios del tema 4. El procesador
jercicios del tema 4. l procesador jercicio 1. Considere un procesador de 32 bits con una frecuencia de reloj de 500 MHz con la estructura del mostrado en el jercicio 3. La memoria se direcciona por bytes
Más detallesEl nivel ISA (II)! Conjunto de Instrucciones
El nivel ISA (II) Conjunto de Instrucciones EC-2721 Arquitectura del Computador I Que es un Conjunto de Instrucciones? Colección completa de instrucciones comprendida por un procesador Lenguaje de máquina
Más detallesProgramación de GPUs con CUDA
Programación de GPUs con CUDA Alvaro Cuno 23/01/2010 1 Agenda GPUs Cuda Cuda + OpenGL 2 GPUs (Graphics Processing Units) 3 Supercomputadores Mapa de los 100 supercomputadores Sudamérica: posiciones 306
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 detalles6. PROCESADORES SUPERESCALARES Y VLIW
6. PROCESADORES SUPERESCALARES Y VLIW 1 PROCESADORES SUPERESCALARES Y VLIW 1. Introducción 2. El modelo VLIW 3. El cauce superescalar 4. Superescalar con algoritmo de Tomasulo 2 PROCESADORES SUPERESCALARES
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 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 detallesObjetivos. Objetivos. Arquitectura de Computadores. R.Mitnik
Objetivos Objetivos Arquitecturas von Neumann Otras Unidad Central de Procesamiento (CPU) Responsabilidades Requisitos Partes de una CPU ALU Control & Decode Registros Electrónica y buses 2 Índice Capítulo
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 detallesINDICE Control de dispositivos específicos Diseño asistido por computadora Simulación Cálculos científicos
INDICE Parte I. La computadora digital: organización, operaciones, periféricos, lenguajes y sistemas operativos 1 Capitulo 1. La computadora digital 1.1. Introducción 3 1.2. Aplicaciones de las computadoras
Más detallesHPC y GPUs. GPGPU y software libre. Emilio J. Padrón González DE UNIVERSIDADE DA CORUNA GAC.UDC.ES
HPC y GPUs GPGPU y software libre Emilio J. Padrón González DE UNIVERSIDADE DA CORUNA GAC.UDC.ES Workshop HPC y Software Libre Ourense, Octubre 2011 Contenidos 1 Introducción Evolución CPUs Evolución GPUs
Más detallesPrerrequisitos para este tutorial. I. Introducción
Programando la GPU con CUDA Contenidos del tutorial [142 diapositivas] Cursos de Verano de la Universidad de Málaga Julio, 2015 1. Introducción. [24 diapositivas] 2. Arquitectura. [27] 1. El modelo hardware
Más detallesIntroducción a las Arquitecturas Paralelas. Arquitectura de Computadoras II Fac. Cs. Exactas UNCPBA Prof. Marcelo Tosini 2015
Introducción a las Arquitecturas Paralelas Arquitectura de Computadoras II Fac. Cs. Exactas UNCPBA Prof. Marcelo Tosini 2015 Procesamiento Paralelo Uso de muchas unidades de proceso independientes para
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 detallesLinear Algebra PACKage (LAPACK) Avances en la Generación de Bibliotecas de Álgebra Lineal Universidad Politécnica de Valencia Marzo, 2006
Linear Algebra PACKage () Avances en la Generación de Bibliotecas de Álgebra Lineal Universidad Politécnica de Valencia Marzo, 2006 Estructura Qué es la biblioteca? Organización de Funcionalidad de Sistemas
Más detallesMemorias RAM. Basilio B. Fraguela Rodríguez. Copyright Basilio B. Fraguela 2006
Memorias RAM Basilio B. Fraguela Rodríguez Evolución de la velocidad del procesador y la memoria 1000 Ley de Moore CPU µproc 60%/año 100 10 1 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 DRAM 1990
Más detallesFacultad De Ingeniería Programa de Ingeniería Industrial
Facultad De Ingeniería Programa de Ingeniería Industrial Código Materia: 05252 Excel Nivel Intermedio Requisito: 09641 Habilidades Básicas en Hojas Electrónicas Programa Semestre: Ingeniería Industrial
Más detallesCarlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas
2 - Introducción al lenguaje Java, identificadores y comentarios. Carlos Montenegro Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas 1. Introducción: Java tiene como todos
Más detallesUniversidad 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
Más detallesFila: Es un conjunto de varias celdas dispuestas en sentido horizontal.
Que Es Excel? Excel es un programa que permite la manipulación de libros y hojas de calculo. En Excel, un libro es el archivo en que se trabaja y donde se almacenan los datos. Como cada libro puede contener
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 () R. Bayá, E. Dufrechou, P. Ezzattiy M. Pedemonte Clase 1 Introducción Contenido Un poco de historia El pipeline gráfico Tarjetas
Más detallesArquitectura de Computadores II Clase #7
Arquitectura de Computadores II Clase #7 Facultad de Ingeniería Universidad de la República Instituto de Computación Curso 2010 Veremos Memoria virtual 1 Recordemos: Jerarquía de Memoria Registros Instr.
Más detallesProgramación en Visual Basic Ricardo Rodríguez García
Manual Básico de Programación en Visual Basic 1.- Estructura de un proyecto Visual Basic Los programas o aplicaciones desarrolladas en Visual Basic van a constituir un único paquete que denominaremos proyecto.
Más detallesHerramientas Informáticas I Software: Sistemas Operativos
Herramientas Informáticas I Software: Sistemas Operativos Facultad de Ciencias Económicas y Jurídicas Universidad Nacional de La Pampa Sistemas Operativos. Es el software base que permite trabajar como
Más detallesComputació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
Más detallesGuia para examen de Sistemas Embebidos I Para primer parcial Febrero 2013 Revisión 2 Ing. Julio Cesar Gonzalez Cervantes
Qué significa ALU? Arithmetic Logic Unit Guia para examen de Sistemas Embebidos I Para primer parcial Febrero 2013 Revisión 2 Ing. Julio Cesar Gonzalez Cervantes que operaciones realiza un ALU? suma, resta,
Más detallesDepartamento de Arquitectura de computadores y electrónica Universidad de Almería. Tesis Doctoral
Departamento de Arquitectura de computadores y electrónica Universidad de Almería Tesis Doctoral Computación algebraica dispersa con procesadores grácos y su aplicación en tomografía electrónica Francisco
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 detallesExplotación del paralelismo a nivel de instrucción
Explotación del paralelismo a nivel de instrucción Arquitectura de Computadores J. Daniel García Sánchez (coordinador) David Expósito Singh Javier García Blas Óscar Pérez Alonso J. Manuel Pérez Lobato
Más detallesTEMA II: ALMACENAMIENTO DE LA INFORMACIÓN
CUESTIONES A TRATAR: Existe un tipo único tipo de memoria en un determinado computador? Todas las memorias de un computador tienen la misma función?. Qué es la memoria interna de un computador? Por qué
Más detallesMicrosoft Excel 2010 Completo + Profesional
Microsoft Excel 2010 Completo + Profesional Duración: 80.00 horas Descripción La hoja de cálculo es una herramienta básica para realizar operaciones aritméticas de una forma rápida y sencilla. Asimismo
Más detallesDesde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial.
Tipos de Datos Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial. Entrada de datos Procesamientos de datos Salida de resultados Los
Más detallesADMINISTRACION DE LA MEMORIA. En memoria 1 solo proceso Desventajas:
ADMINISTRACION DE LA MEMORIA Función del Administrador de Memoria Registra qué parte de memoria está libre y ocupada Asigna y libera espacio en memoria a los procesos Administra el intercambio entre la
Más detallesTema V Generación de Código
Tema V Generación de Código Una vez que se ha realizado la partición HW/SW y conocemos las operaciones que se van a implementar por hardware y software, debemos abordar el proceso de estas implementaciones.
Más detallesíndice MÓDULO 1: Introducción a Visual Basic 6.0 MÓDULO 2: Fundamentos de programación TEMA 1. Introducción a Visual Basic 6.0
MÓDULO 1: Introducción a Visual Basic 6.0 TEMA 1. Introducción a Visual Basic 6.0 1.1 Conceptos de programación...1-1 1.2 Introducción a Visual Basic...1-1 1.3 Iniciar una sesión de Visual Basic 6.0...1-2
Más detallesESCUELA POLITÉCNICA SUPERIOR PRÁCTICA 2: EXPRESIONES, PRINTF Y SCANF
ESCUELA POLITÉCNICA SUPERIOR GRADO EN DISEÑO IND. INFORMÁTICA CURSO 2012-13 PRÁCTICA 2: EXPRESIONES, PRINTF Y SCANF HASTA AHORA... En prácticas anteriores se ha aprendido: La estructura principal de un
Más detallesConsigue las herramientas que necesitas Inicio: 20 Noviembre 2016
formacion@galejobs.com ONLINE / 30H MACROS CON VBA PARA EXCEL Consigue las herramientas que necesitas Inicio: 20 Noviembre 2016 290 IVA inc. OBJETIVOS QUÉ APRENDERÁS EN EL CURSO En la actualidad, las empresas
Más detallesEstudio de rendimiento en GPU
Proyecto Fin de Máster en Ingeniería de Computadores Curso académico 2009-2010 Estudio de rendimiento en GPU Autor: Carlos Juega Reimúndez Directores del proyecto: José Ignacio Gómez Pérez Christian Tenllado
Más detallesTEMA 4: PARALELISMO A NIVEL DE DATOS (DLP).
TEMA 4: PARALELISMO A NIVEL DE DATOS (DLP). ÍNDICE: 4.1. Introducción: Aplicaciones científicas y multimedia. 4.2. Arquitecturas vectoriales segmentadas clásicas. 4.3. Extensiones multimedia y núcleos
Más detallesPASOS PARA CREAR FUNCIONES CON VBA
PASOS PARA CREAR FUNCIONES CON VBA Una función es un conjunto de instrucciones que permiten predefinir una fórmula que será utilizada en la hoja de cálculo y que mostrará su resultado en una celda. La
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 detallesSISTEMAS OPERATIVOS Arquitectura de computadores
SISTEMAS OPERATIVOS Arquitectura de computadores Erwin Meza Vega emezav@unicauca.edu.co Esta presentación tiene por objetivo mostrar los conceptos generales de la arquitectura de los computadores, necesarios
Más detallesTema 4. Operadores y Expresiones
Tema 4 Operadores y Expresiones Contenidos 1. Conceptos Básicos. 2. Operadores Aritméticos. 3. Operadores de Relación, de Igualdad y Lógicos. 4. Operadores de Incremento y Decremento. 5. Operadores y Expresiones
Más detallesComputación II. Introducción a Visual Basic
Computación II Introducción a Visual Basic Introducción a Visual Basic Microsoft Visual Basic es un conjunto de herramientas que posibilitan el desarrollo de aplicaciones para Windows de una manera rápida
Más detalles6. Entrada y Salida Explicación de la interfaz entre el computador y el mundo exterior.
6. Entrada y Salida Explicación de la interfaz entre el computador y el mundo exterior. 6.1. El subsistema de E/S Qué es E/S en un sistema computador? Aspectos en el diseño del subsistema de E/S: localización
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 detallesSíntesis arquitectónica y de alto nivel
Síntesis arquitectónica y de alto nivel Módulo 1. Concepto y fases de la Síntesis de Alto Nivel 1 Diseño de circuitos: la complejidad Tratamiento de problemas de complejidad creciente Rápido desarrollo
Más detallesFUNDAMENTOS DE COMPUTACION INVESTIGACION PROCESADORES DIANA CARRIÓN DEL VALLE DOCENTE: JOHANNA NAVARRO ESPINOSA TRIMESTRE II
FUNDAMENTOS DE COMPUTACION INVESTIGACION PROCESADORES DIANA CARRIÓN DEL VALLE DOCENTE: JOHANNA NAVARRO ESPINOSA TRIMESTRE II 2013 Características principales de la arquitectura del procesador AMD Phenom
Más detallesAlgoritmos. Intro. Prof. Raquel Torres Peralta / Gerardo Sanchez S. Unison
Algoritmos Intro Prof. Raquel Torres Peralta / Gerardo Sanchez S. Unison La Computadora Las computadoras trabajan con una base de 0 y 1 llamado sistema binario. En principio todo lo que sucede en un dispositivo
Más detallesFebrero 2012. Departamento de Electrónica e Sistemas Universidade da Coruña. Introducción a las Extensiones Multimedia
a a Departamento de Electrónica e Sistemas Universidade da Coruña Febrero 2012 3 a Índice a 3 1 2 3 4 5 6 3 a Qué son extensiones multimedia? a Son nuevas instrucciones añadidas al repertorio de instrucciones
Más detallesUtilizació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,
Más detallesOracle Database: Programación con PL/SQL
Oracle University Contact Us: 0800-100-4183 & 0800-100-6854 Oracle Database: Programación con PL/SQL Duration: 5 Days What you will learn Este curso ofrece una introducción sobre PL/SQL y enumera la lista
Más detallesFUNDAMENTOS DE INFORMÁTICA
FUNDAMENTOS DE INFORMÁTICA Tema 2 Expresiones, operadores y estructuras de control Departamento de Ingeniería de Sistemas y Automática Universidad de Vigo Fundamentos de Informática. Departamento de Ingeniería
Más detallesFUNDAMENTOS 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
Más detallesSistemas Operativos. Introducción. Tema 6
Sistemas Operativos Introducción Qué es un sistema operativo? Ubicación de un sistema operativo en un computador Descripción de un sistema operativo: Funcional Estructural Realización Funciones de los
Más detallesFundamentos del Diseño de Computadores
Fundamentos del Diseño de Computadores Arquitectura de Computadores J. Daniel García Sánchez (coordinador) David Expósito Singh Javier García Blas Óscar Pérez Alonso J. Manuel Pérez Lobato Grupo ARCOS
Más detallesENTRADAS DE CONTADOR DE ALTA VELOCIDAD
ENTRADAS DE CONTADOR DE ALTA VELOCIDAD Esta función cuenta las entradas de señales de impulsos en los terminales de entrada incorporada Configuración La configuración del contador de alta velocidad se
Más detallesDescripción y Contenido del Curso. Programación C++ Capacity Academy.
Descripción y Contenido del Curso Programación C++ Capacity Academy Educación en Tecnología de la Información Online, Efectiva y Garantizada Qué aprenderá si toma este Curso? En este curso aprenderás todo
Más detallesComputación Gráfica = CG = Computer Graphics
Computación Gráfica = CG = Computer Graphics Porqué computación gráfica? Para qué sirve? Cómo se utiliza? Cuáles son las principales áreas? Necesidad contemporanea Visualizar/Analizar lo imposible Una
Más detallesLa GPU como arquitectura emergente para supercomputación. Nicolás Guil y Manuel Ujaldón Dpto. Arquitectura de Computadores Universidad de Málaga
La GPU como arquitectura emergente para supercomputación Nicolás Guil y Manuel Ujaldón Dpto. Arquitectura de Computadores Universidad de Málaga Sumario I. El proceso de renderización [7] II. El nacimiento
Más detallesOrganización lógica Identificación de bloque
Cómo se encuentra un bloque si está en el nivel superior? La dirección se descompone en varios campos: Etiqueta (tag): se utiliza para comparar la dirección requerida por la CPU con aquellos bloques que
Más detallesGestión de Entrada-salida
Gestión de Entrada-salida E. Campo M. Knoblauch Ó. López J. Clemente Departamento de Automática Universidad de Alcalá Sistemas Operativos Avanzados Gestión de Entrada-salida 1 / 18 Índice Introducción
Más detallesClasificación n de los Sistemas Operativos. Clasificación de los SO Estructuras de los SO Modos de procesamiento
Clasificación n de los Sistemas Operativos Contenidos Clasificación de los SO Estructuras de los SO Modos de procesamiento Se pueden clasificar en Sistemas monolíticos Sistemas por capas Sistemas cliente/servidor
Más detallesProcesadores superescalares. Introducción
Procesadores superescalares Introducción Introducción El término superescalar (superscalar) fue acuñado a fines de los 80s. Todas las CPUs modernas son superescalares. Es un desarrollo de la arquitectura
Más detallesQUANTUM COMPUTACION CURSO DE PLANILLA ELECTRONICA MICROSOFT EXCEL 2013
00088 CURSO QDE PLANILLA ELECTRONICAMICROSOFT EXCEL 2007 CAPÍTULO 1: INTRODUCCIÓN PLANILLAS ELECTRÓNICAS Qué es Excel? Orígenes de las Hojas de Cálculo Propiedades de las Planillas Electrónicas CAPÍTULO
Más detallesAlgoritmos. Medios de expresión de un algoritmo. Diagrama de flujo
Algoritmos En general, no hay una definición formal de algoritmo. Muchos autores los señalan como listas de instrucciones para resolver un problema abstracto, es decir, que un número finito de pasos convierten
Más detalles