UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO Facultad de Ingeniería Introducción a CUDA C Laboratorio de Intel para la Academia y Cómputo de alto desempeño.

Slides:



Advertisements
Presentaciones similares
Introducción Principios del Software E/S Principios del Hardware E/S
Advertisements

Capítulo I Gestión de E/S 1.- Gestión de E/S 2.- Hardware de E/S 3.- Software de E/S.
TEMA 1 Introducción a la Programación Concurrente
UNIVERSIDAD DEL VALLE DE MEXICO CAMPUS CHAPULTEPEC
UNIX COMP 240.
III - Gestión de memoria
Funcionamiento, programación
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO
ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática
Tema II Unidad de memoria. 2 Unidad de memoria 2.1 Definiciones y conceptos básicos Localización Capacidad Unidad de transferencia
El procesador: la ruta de datos y el control (II Parte)
Material de apoyo Unidad 2 Estructura de datos
Direcciones físicas y direcciones virtuales (lógicas)
Elemento Lógico (Software)
HILOS Y COMUNICACIÓN ENTRE PROCESOS
Tema 10: Gestión de Memoria
MIPS Intermedio.
Introducción a la Ingeniería en Sistemas
Semana 5 Subprogramas..
Algoritmos Distribuidos Semana 1. Parte 2 Comunicación por Pase de Mensajes Claudia León Universidad Central de Venezuela Facultad de Ciencias Escuela.
PROGRAMACIÓN PARALELA Tema 4: Metodología de la programación
Unidad 7 Entrada/Salida
UNIDAD 3 Conceptos de Sistemas Operativos.
Programación Modular (Pseudocódigo)
Procesamiento paralelo
Organización del Computador I Verano MIPS (1 de 2) Basado en el capítulo 3 del libro de Patterson y Hennessy Verano 2004 Profesora Borensztejn.
Estructura y Tecnología de Ordenadores Noviembre 2004.
Clase 10: Estructuras de datos y arreglos.
Computación Aplicada Facultad de Ingeniería Universidad Autónoma de Querétaro Ma. Teresa García Ramírez 1.
Cátedra de COMPUTACIÓN FACULTAD DE INGENIERÍA - UNA La mejor manera de aprender Programación es PROGRAMANDO !!!!!! CLASE Nro. 2.
Memoria Cachés. Universidad de SonoraArquitectura de Computadoras2 Introducción Caché es el nivel de memoria situada entre el procesador y la memoria.
Manejo de Memoria en CUDA (I)
Tema 10.3: Asignación de Espacio No Contiguo. Tema 10.3: 2 Silberschatz, Galvin and Gagne ©2005 Fundamentos de los Computadores (ITT, Sist. Electr.),
Asignación de Espacio No Contiguo
Lenguaje de Programación cap. 1 Estructura del Computador.
ARQUITECTURA CUDA Integrantes: Jose D Apollo
TEMA 2: Organización de computadores
Hilos En La Computación. (THREADS).
 La cuestión de la cantidad es simple, cuanto más memoria haya disponible, más podrá utilizarse. La velocidad óptima para la memoria es la velocidad.
Introducción a los Sistemas Operativos
Alejandro Samarín Lionel Aster Mena García Sergio Armas Pérez.
TEMA 10. SISTEMAS OPERATIVOS DISTRIBUIDOS

PROGRAMACIÓN PARALELA Modelos de programación paralela Modelos computacionales Paradigmas de programación paralela Programación en memoria compartida:
Matrices Departamento de Computación Escuela de Ingeniería de Sistemas
Administrador de procesos
Memoria Principal Memoria de acceso aleatorio. La unidad de memoria y jerarquías de almacenamiento Unidades de Almacenamiento. La unidad de memoria es.
Alejandro Samarín Lionel Aster Mena García Sergio Armas Pérez.
Introducción a los SOs.
Tema 8: Introducción a los SOs. Tema 8: 2 Silberschatz, Galvin and Gagne ©2005 Fundamentos de los Computadores (ITT, Sist. Electr.), Introducción.
ING. GUALBERTO RAMÍREZ ARENAS
Matrices Prof. Flor Narciso Departamento de Computación
UNIDAD 3 C ONCEPTOS DE S ISTEMAS O PERATIVOS. El ordenador es un sistema programable formado por un conjunto de elementos hardware que necesitan instrucciones.
Por: Ernesto Y. Soto Rivas G
Visual Basic FUNCIONES Y PROCEDIMIENTOS
Cuentas de usuarios y grupos en windows 2008 server
Elaboración de algoritmos usando lógica de programación
ARQUITECTURA ALTERNATIVA DE SERVIDORES SISTEMAS OPERTIVOS DE RED En un sistema operativo de red los usuarios saben que están conectados a la red y que.
Capítulo 9: División de redes IP en subredes
Introducción a los TADs
ARQUITECTURAS DE LOS SERVIDORES El computador tiene 2 aspectos para entender su funcionamiento al nivel de programación: Almacenamiento Procesamiento Para.
Arquitectura de Computadores I
Introducción a los Sistemas Computacionales.  Camerina Laura Ramírez Gallegos ( ) khamme.wordpress.com (blog)  Al mandar algún.
© 2008 Cisco Systems, Inc. Todos los derechos reservados.Información confidencial de Cisco Presentation_ID 1 Capítulo 9: División de redes IP en subredes.
Introducción a los Sistemas Computacionales. Camerina Laura Ramírez Gallegos
También es conocido como proceso ligero. Es una entidad básica de utilización de CPU y esta formado por un contador de programa, algunos registros y una.
MEMORIA DINÁMICA.
Republica Bolivariana de Venezuela Universidad Alonso de Ojeda Facultad de Ingeniería Escuela de Computación Ing. Prof. Leonel Sequera Entrada y Salidas.
UNIVERSIDAD TECNOLÓGICA DE PANAMÁ Facultad de Ingeniería de Sistemas Computacionales Programa de Lic. en Informática Educativa Computación.
Transcripción de la presentación:

UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO Facultad de Ingeniería Introducción a CUDA C Laboratorio de Intel para la Academia y Cómputo de alto desempeño Elaboran: Ariel Ulloa Trejo Fernando Pérez Franco Revisión: Ing. Laura Sandoval Montaño

Temario 1.Antecedentes 2.El GPU 3.Funciones y vectores 4.Manejo de matrices 5.Memoria compartida

3 Funciones Jerarquía de la memoria Cada hilo tiene memoria local privada. Cada bloque tiene memoria compartida visible a todos los hilos del mismo. Todos los hilos tienen acceso a la misma memoria global.

El dispositivo puede: L/E registros por hilo. L/E memoria local por hilo. L/E memoria compartida por bloque. L/E memoria global por grid. Leer memoria constante por grid. El host puede: Transferir datos a la memoria global y constante y viceversa.

cudaMalloc() Además de la función kernel, es necesario asignar memoria en el dispositivo. cudaFree() Es necesario liberar la memoria que ya no se necesita.

cudaMemcpy() Finalmente, para la copia de una memoria a otra: La transferencia es asíncrona (el programa continúa antes de que la copia sea finalizada)

01_funciones_01.cu

Configuración de la ejecución: La ejecución opera en paralelo a través de hilos. Cada hilo tiene su identificador y registros. La cantidad de hilos que se pueden crear dependen del hardware. Un grid está compuesto por bloques, y a su vez, éstos por hilos. El objetivo de la configuración es usar hilos trabajando en paralelo para obtener el mejor rendimiento.

Índices: Hilos: Todos los hilos tienen índices con el fin de calcular las direcciones de memoria y tomas decisiones de control. Los hilos dentro del bloque tienen variables para identificarse, ya sea en 1, 2 ó 3 dimensiones (lo que proporciona la facilidad para el manejo de vectores, matrices o volúmenes). Bloques: Tal como los hilos, los bloques (dentro del grid) también tienen variables en 1, 2 ó 3 dimensiones. El kernel es copiado en todos los bloques “invocados”. El número total de hilos es la cantidad de hilos de cada bloque por la cantidad de bloques.

Variables (creadas automáticamente): – Índice del hilo en x  threadIdx.x – Índice del hilo en y  threadIdx.y – Índice del hilo en z  threadIdx.z – Índice del bloque en x  blockIdx.x – Índice del bloque en y  blockIdx.y – Índice del bloque en z  blockIdx.z – Número de hilos por bloque en x  blockDim.x – Número de bloques por grid en x  gridDim.x Para calcular el ID de un hilo dentro de un bloque: – Una dimensión:ID = threadIdx.x – Dos dimensiones:ID = threadIdx.x + blockDim.x * threadIdx.y – Tres dimensiones:ID = threadIdx.x + blockDim.x * threadIdx.y + blockDim.x * blockDim.y * threadIdx.z

02_sumaVectores_01.cu

Ejercicio: Sumar dos vectores de tamaño 100 en el GPU usando 10 bloques y 10 hilos por bloque. Solución: tid = threadIdx.x + blockDim.x * blockIdx.x; Cuyo mapeo es: 03_sumaVectores_02.cu

Ejercicio: Sumar dos vectores de tamaño 100 en el GPU usando 10 bloques y 3 hilos por bloque. 04_sumaVectores_03.cu