Computación de Propósito General en Unidades de Procesamiento Gráfico GPGPU

Save this PDF as:
 WORD  PNG  TXT  JPG

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Computación de Propósito General en Unidades de Procesamiento Gráfico GPGPU"

Transcripción

1 Computación de Propósito General en Unidades de Procesamiento Gráfico () E. Dufrechou, P. Ezzatti M. Pedemonte Práctico Programación con CUDA

2 Práctica 0: Ejecución del ejemplo visto en teórico (suma de matriz por columnas) Suma de matriz por columnas Cada thread computa la suma de una columna de la matriz El resultado debe ser un vector con las sumas parciales. M t1,t2,t3...tn k Vector de Sumas sumas parciales parciales

3 Suma de matriz por columnas Para los siguientes ejemplos se asume que las matrices se almacenan en la memoria por columnas (column-major) a11 a12 a13 a21 a22 a23 a31 a32 a33 a11 a21 a31 a12 a22 a32 a13 a23 a33 Suma de matriz por columnas void SumaColMatrizDevice(float M, float N, float * Mh, float* Nh){ int size = M * N * sizeof(float), size2 = N*sizeof(float); float* Md, *Nd; // Allocate en device cudamalloc(&md, size); cudamalloc(&nd, size2); // Inicializo matrices en el device cudamemcpy(md, Mh, size, cudamemcpyhosttodevice); cudamemset(nd,0, N * sizeof(float)); // Invocar el kernel que suma en GPU // Traer resultado; cudamemcpy(nh, Nd, size, cudamemcpydevicetohost); // Free matrices en device cudafree(md); cudafree(nd); }

4 Suma de matriz por columnas Kernel // Suma por columnas de una matriz global void MatrixSumKernel(int M, float* Md, float* Nd){ // Pvalue es usado para el valor intermedio float Pvalue = 0; int aux = threadidx.y*m; for (int k = 0; k < M; ++k) { Pvalue = Pvalue + Md[aux+k]; } Nd[threadIdx.y] = Pvalue; } Suma de matriz por columnas Lanzamiento de threads con un solo bloque // configuración de la ejecución dim3 tamgrid(1, 1); //Grid dimensión dim3 tamblock(1,n,1); //Block dimensión // lanzamiento del kernel MatrixSumKernel<<<tamGrid, tamblock>>>(m, Md, Nd); Lanzamiento de threads con N bloques de 128 threads // Setup the execution configuration int bloques = N / 128; dim3 tamgrid(1, bloques); //Grid dimensión dim3 tamblock(1, 128, 1); //Block dimensión // Launch the device computation threads! MatrixSumKernel<<<tamGrid, tamblock>>>( M, Md, Nd);

5 Práctica 1: Suma de los elementos de una matriz Suma de los elementos de una matriz Resolviendo el problema en CUDA: 1) Reservar espacio en la memoria de la GPU Copiar la matriz desde la memoria principal a la memoria de la GPU 2) Ejecutar el kernel en la GPU 3) Copiar el resultado desde la tarjeta gráfica a la memoria principal. Liberar la memoria de la GPU que se reservó en el primer paso

6 Suma de los elementos de una matriz Primer paso: Un sólo bloque El kernel debe: Sumar los elementos de la columna correspondiente y almacenarlos en un vector con las sumas parciales. Sincronizar Uno de los threads del bloque debe encargarse de reducir el vector (estrategia muy ineficiente) Suma de los elementos de una matriz Qué desventajas tiene el ejemplo anterior? Qué pasaría si no utilizaramos syncthreads?

7 Suma de los elementos de una matriz Segundo paso: Múltiples bloques Intentar con diversas variantes: Un bloque por columna Un bloque para varias columnas Grid bidimensional, cada bloque procesa un segmento de las columnas Luego utilizar atomicadd() en lugar del vector de sumas parciales. Compilar utilizando la flag --compute20 Deberes para el receso! Las dos estrategias vistas para reducir el vector de sumas parciales no explotan el paralelismo de las GPU. Una mejor estrategia es la siguiente:

8 Deberes para el receso! Primero cada thread carga un elemento del vector a memoria compartida. Luego en cada paso cada thread activo suma dos elementos. Al final debe copiarse el valor de la suma a memoria global Si se ejecuta con más de un bloque, la suma parcial de cada bloque puede reducirse en CPU o utilizando el thread 0 del bloque 0. Deberes para el receso! Ejecutar el código con el Visual Profiler y determinar los principales problemas de esta solución. En teórico se mostrarán versiones mejoradas. Entregar código y pequeño informe describiendo los problemas que identifica el profiler.

9 Práctica 2: Multiplicación de Matrices Multiplicación de matrices El elemento i,j de la matriz P es el producto escalar de la fila i de la matriz M con la columna j de la matriz N Todos los elementos de la matriz P pueden calcularse de forma independiente. El resultado de uno de los productos escalares no influye sobre los demás

10 Multiplicación de matrices Algoritmo: For i = 1:width For j = 1:width suma = 0 For k = 1:width suma = suma + M(i,k) * N(k,j) End End End P(i,j) = suma Multiplicación de matrices Implementación en C: void MatrixMult(float* M, float* N, int width, float * P){ for(int i=0; i < width; i++){ for(int j=0; j < width; j++){ float suma = 0; for(int k = 0 ; k < width ; k ++) suma += M[i][k] * N[k][j]; } } } P[i][j] = suma;

11 Multiplicación de matrices Primero resolveremos el problema utilizando 1 bloque de threads Nd Solo pueden multiplicarse matrices de tamaño menor que el tamaño del bloque (1024 elementos en la G480) k Md ty tx tx Pd k ty WIDTH WIDTH WIDTH WIDTH 21 Multiplicación de matrices Resolver el ejercicio Info útil: Los threads se identifican en tiempo de ejcución por las variables threadidx.x y threadidx.y Para reservar memoria usar: cudamalloc((void**)ptr, size); Para copiar los datos: cudamemcpy(dest,src,size,mode); Para copiar hacia la gpu: Mode: cudamemcpyhosttodevice Para copiar desde la gpu: Mode: cudamemcpydevicetohost Para liberar memoria: cudafree()

12 Multiplicación de matrices Para multiplicar matrices de mayor tamaño es necesario usar varios bloques. bx tx 012TILE_WIDTH-1 Nd Cada bloque de threads de tamaño NxN calcula un TILE de tamaño NxN de la matriz resultado. WIDTH Md Pd 0 by 1 ty TILE_WIDTH-1 Pd sub TILE_WIDTH TILE_WIDTHE WIDTH 2 WIDTH WIDTH 23 Multiplicación de matrices Debe cambiar la forma de disparar los threads Debe elegirse adecuadamente el tamaño de bloque. Cant. Bloques x tam. Bloque = tamaño de la matriz Sigue existiendo un thread por cada elemento de la matriz resultado

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 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 detalles

PROGRAMACIÓN AVANZADA DE GPUs PARA APLICACIONES CIENTÍFICAS

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

Más detalles

Modelo de aplicaciones CUDA

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

Más detalles

CUDA Overview and Programming model

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

Más detalles

GPGPU Avanzado. Sistemas Complejos en Máquinas Paralelas. Esteban E. Mocskos (emocskos@dc.uba.ar) 5/6/2012

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

Más detalles

Primeros pasos con CUDA. Clase 1

Primeros 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 detalles

SUMA de Vectores: Hands-on

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

Más detalles

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. 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 detalles

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. 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 detalles

Computación en procesadores gráficos

Computación en procesadores gráficos Programación con CUDA 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 Modelo de programación

Más detalles

Universidad Complutense de Madrid FACULTAD DE INFORMÁTICA

Universidad Complutense de Madrid FACULTAD DE INFORMÁTICA Universidad Complutense de Madrid FACULTAD DE INFORMÁTICA INGENIERÍA EN INFORMÁTICA SISTEMAS INFORMÁTICOS ALGORITMOS PARA GRAFOS Y PROGRAMACIÓN DE PROPÓSITO GENERAL EN CUDA Ezequiel Denegri Guillermo Frontera

Más detalles

Taller: Introducción a GPU's y Programación CUDA para HPC

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

Más detalles

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 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

Más detalles

Memorias, opciones del compilador y otras yerbas. Clase 3

Memorias, opciones del compilador y otras yerbas. Clase 3 Memorias, opciones del compilador y otras yerbas Clase 3 Memorias en CUDA Grid CUDA ofrece distintas memorias con distintas características. Block (0, 0) Shared Memory Block (1, 0) Shared Memory registros

Más detalles

Procesadores Gráficos: OpenCL para programadores de CUDA

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

Más detalles

Introducción. Por último se presentarán las conclusiones y recomendaciones pertinentes.

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

Más detalles

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 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.

Más detalles

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 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

Más detalles

Tutorial CUDA Univ. de Santiago. 6 y 7 de Agosto, 2013

Tutorial CUDA Univ. de Santiago. 6 y 7 de Agosto, 2013 Tutorial CUDA Univ. de Santiago. 6 y 7 de Agosto, 2013 La suma por reducción Este código realiza la suma de un vector de N elementos mediante un operador binario de reducción, es decir, en log 2 (N) pasos.

Más detalles

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

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

Más detalles

APUNTES JAVA ARRAYS (ARREGLOS) Un arreglo es un grupo de posiciones de memoria contiguas. Todas las cuales tienen el mismo nombre y el mismo tipo.

APUNTES JAVA ARRAYS (ARREGLOS) Un arreglo es un grupo de posiciones de memoria contiguas. Todas las cuales tienen el mismo nombre y el mismo tipo. APUNTES JAVA ARRAYS (ARREGLOS) Los arreglos son estructuras de datos que consisten en elementos de información del mismo tipo relacionados entre sí. Los arreglos son entidades estáticas en cuanto a que

Más detalles

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

Computación Híbrida, Heterogénea y Jerárquica Computación Híbrida, Heterogénea y Jerárquica http://www.ditec.um.es/ javiercm/curso psba/ Curso de Programación en el Supercomputador Ben-Arabí, febrero-marzo 2012 Organización aproximada de la sesión,

Más detalles

Contenido. Capítulo 1. Introducción a lenguaje C 1

Contenido. Capítulo 1. Introducción a lenguaje C 1 Contenido Capítulo 1. Introducción a lenguaje C 1 Introducción... 2 Qué es un lenguaje de programación?... 2 Tipos de lenguajes de programación... 2 Introducción a lenguaje C... 2 Historia de lenguaje

Más detalles

Universidad de Córdoba. Trabajo de Fin de Máster

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

Más detalles

GPU IMPLEMENTATIONS OF SCHEDULING HEURISTICS FOR HETEROGENEOUS COMPUTING ENVIRONMENTS

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

Más detalles

Computación matricial dispersa con GPUs y su aplicación en Tomografía Electrónica

Computació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 detalles

1. Manejo de memoria estática 2. Manejo de memoria dinámica

1. Manejo de memoria estática 2. Manejo de memoria dinámica 1. Manejo de memoria estática 2. Manejo de memoria dinámica *La administración de memoria de una computadora es una tarea fundamental debido a que la cantidad de memoria es limitada. *El sistema operativo

Más detalles

Práctica 2 Sólidos Articulados (Asignación 2 de Marzo; Entrega 23 de Marzo a las 23:59)

Práctica 2 Sólidos Articulados (Asignación 2 de Marzo; Entrega 23 de Marzo a las 23:59) Práctica 2 Sólidos Articulados (Asignación 2 de Marzo; Entrega 23 de Marzo a las 23:59) Cómo entregar la práctica? Enviar una copia del fichero Exercise.cpp por email a miguel.otaduy@urjc.es, antes del

Más detalles

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. 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 detalles

Extracción paralela de valores propios en matrices Toeplitz simétricas usando hardware gráfico

Extracción paralela de valores propios en matrices Toeplitz simétricas usando hardware gráfico Extracción paralela de valores propios en matrices Toeplitz simétricas usando hardware gráfico Tesis de Máster en Computación Paralela y Distribuida de: Leandro Graciá Gil Dirigida por: Antonio Manuel

Más detalles

El entorno Vision - E Laboratory

El entorno Vision - E Laboratory Prácticas de laboratorio El entorno Vision - E Laboratory Una imagen vale más que mil palabras Proverbio chino. 1. Introducción 2. El entorno Vision-E 2.1 Panel de Imágenes 2.2 Área de Menús y Edición

Más detalles

Resumen Lenguaje Java

Resumen Lenguaje Java Resumen Lenguaje Java Métodos (Subprogramas) Tipos de Métodos: con resultado y tipo void Definición 1. Método con resultado, retorna un solo valor, equivalente a los subprogramas tipo función tipo_de_dato_a_retornar

Más detalles

Vectores y matrices. Arrays Declaración Creación Acceso a los elementos de un array Manipulación de vectores y matrices

Vectores y matrices. Arrays Declaración Creación Acceso a los elementos de un array Manipulación de vectores y matrices Vectores y matrices Arrays Declaración Creación Acceso a los elementos de un array Manipulación de vectores y matrices Algoritmos de ordenación Ordenación por selección Ordenación por inserción Ordenación

Más detalles

Procesamiento rápido de EEG utilizando GPU

Procesamiento rápido de EEG utilizando GPU Tesis de licenciatura Procesamiento rápido de EEG utilizando GPU Federico Raimondo Directores: Dr. Diego Fernández Slezak, Ing. Alejandro Furfaro Co-director: Lic. Juan Kamienkowski Julio de 2011 1 1.

Más detalles

Programación Avanzada para Sistemas de Telecomunicación Arrays

Programación Avanzada para Sistemas de Telecomunicación Arrays Programación Avanzada para Sistemas de Telecomunicación Arrays Juan Carlos Cruellas cruellas@ac.upc.es Objetos y clases Introducción. Vectores de datos primitivos. Vectores de objetos. Introducción En

Más detalles

Programando con memoria unificada. Contenidos [15 diapositivas] Aportaciones de la memoria unificada. I. Descripción

Programando con memoria unificada. Contenidos [15 diapositivas] Aportaciones de la memoria unificada. I. Descripción Programando con memoria unificada IX Curso de Verano de la UMA Programación de GPUs con CUDA Contenidos [15 diapositivas] Málaga, del 15 al 24 de Julio, 2015 1. Descripción [5] 2. Ejemplos [8] 3. Observaciones

Más detalles

Fundamentos de Sistemas Operativos

Fundamentos de Sistemas Operativos Fundamentos de Sistemas Operativos Sistemas Informáticos Fede Pérez Índice TEMA Fundamentos de Sistemas Operativos 1. - Introducción 2. - El Sistema Operativo como parte de un Sistema de Computación 2.1

Más detalles

FUNDAMENTOS DE INFORMÁTICA 1º Ingeniería Industrial

FUNDAMENTOS DE INFORMÁTICA 1º Ingeniería Industrial FUNDAMENTOS DE INFORMÁTICA º PRÁCTICA 4: Funciones y vectores CURSO 5/6 Área de Ingeniería de Sistemas y Automática ISA-UMH R-2-FI4v. FUNDAMENTOS DE INFORMÁTICA PRÁCTICA 4: Funciones y vectores curso 25-26

Más detalles

OPTIMIZACIÓN DE ALGORITMOS PARA PROCESADO DE IMÁGENES CON GPUs

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

Más detalles

TEMA 8: ESTRUCTURAS DE DATOS COMPLEJAS 1 VECTORES ESTÁTICOS 2 2 CADENAS O VECTORES DE CARACTERES 6 3 PASO DE CADENAS Y ARRAYS A FUNCIONES 8

TEMA 8: ESTRUCTURAS DE DATOS COMPLEJAS 1 VECTORES ESTÁTICOS 2 2 CADENAS O VECTORES DE CARACTERES 6 3 PASO DE CADENAS Y ARRAYS A FUNCIONES 8 TEMA 8: ESTRUCTURAS DE DATOS COMPLEJAS 1 VECTORES ESTÁTICOS 2 1.1 VECTORES O ARRAYS UNIDIMENSIONALES 2 1.2 ARRAYS MULTIDIMENSIONALES 3 1.3 INICIALIZACIÓN DE ARRAYS 4 1.3.1 INICIALIZACIÓN DE ARRAYS SIN

Más detalles

Sistemas Operativos. Curso 2016 Procesos

Sistemas Operativos. Curso 2016 Procesos Sistemas Operativos Curso 2016 Procesos Agenda Proceso. Definición de proceso. Contador de programa. Memoria de los procesos. Estados de los procesos. Transiciones entre los estados. Bloque descriptor

Más detalles

Fundamentos de la Programación

Fundamentos de la Programación Fundamentos de la Programación El Software Las operaciones que debe realizar el hardware son especificadas con una lista de instrucciones, llamadas programas o software. Dos grandes grupos de software

Más detalles

Repaso sobre lectura de datos desde la línea de comandos, manejo de memoria dinámica e introducción a la librería GSL

Repaso sobre lectura de datos desde la línea de comandos, manejo de memoria dinámica e introducción a la librería GSL Clase No. 5: Repaso sobre lectura de datos desde la línea de comandos, manejo de memoria dinámica e introducción a la librería GSL MAT 251 Dr. Alonso Ramírez Manzanares CIMAT, A.C. e-mail: alram@ cimat.mx

Más detalles

Introducción al tipo de dato ARRAY

Introducción al tipo de dato ARRAY CONTENIDOS. Introducción al tipo de dato ARRAY. Definición, Características, Declaración, Acceso e Inicialización.. Arrays multidimensionales Definición, Declaración, Acceso e Inicialización. Introducción

Más detalles

ISTP CIDET COMPUTACION E INFORMATICA ARREGLOS EN JAVA

ISTP CIDET COMPUTACION E INFORMATICA ARREGLOS EN JAVA ARREGLOS EN JAVA I I N T R O D U C C I Ó N En las sesiones anteriores, los datos manejados en los programas han sido datos simples (carácter, entero, reales) En un gran número de problemas es necesario

Más detalles

Contenidos. Funciones (suplemento) Funciones. Justificación del uso de Funciones

Contenidos. Funciones (suplemento) Funciones. Justificación del uso de Funciones Contenidos 1. Justificación del uso de funciones. 2. Declaración de funciones: prototipos. 3. Prototipos y ficheros de cabecera. 4. Polimorfismo (sobrecarga de funciones). 5. Argumentos formales y actuales.

Más detalles

Múltiples GPU (y otras chauchas)

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

Más detalles

Cómo nombrar variables ( 2&

Cómo nombrar variables ( 2& &'()*+,, *)-.&'*/0+!" #$ # http://www.escet.urjc.es/~aiiq/ Introducción a Visual Studio.NET Aprendiendo el IDE de Visual Basic.NET Elementos del lenguaje. Variables y estructuras de datos Introducción

Más detalles

ALN - Formatos dispersos

ALN - Formatos dispersos ALN - Formatos dispersos In. Co. Facultad de Ingeniería Universidad de la República Temario Matrices dispersas Motivación e historia Formatos estáticos Formatos dinámicos Otros formatos Versión 1.0 2 Motivación

Más detalles

Esteganografía En Imágenes Basado En Mascaras de Convolución Espacial. Universidad Nacional de Trujillo

Esteganografía En Imágenes Basado En Mascaras de Convolución Espacial. Universidad Nacional de Trujillo Esteganografía En Imágenes Basado En Mascaras de Convolución Espacial Universidad Nacional de Trujillo Resumen La Esteganografía toma su mayor auge a partir de la aparición de los ordenadores. En el caso

Más detalles

Programación Paralela: LU Decomposition usando la biblioteca de funciones PVM

Programación Paralela: LU Decomposition usando la biblioteca de funciones PVM Programación Paralela: LU Decomposition usando la biblioteca de funciones PVM Raymundo Domínguez Coĺın * Centro de Investigación y de Estudios Avanzados del IPN Av. Instituto Politécnico Nacional No. 2508

Más detalles

Punteros. Definición Un puntero es un dato que contiene una dirección de memoria.

Punteros. Definición Un puntero es un dato que contiene una dirección de memoria. Punteros Definición Un puntero es un dato que contiene una dirección de memoria. NOTA: Existe una dirección especial que se representa por medio de la constante NULL (definida en ) y se emplea

Más detalles

Plataformas de soporte computacional: arquitecturas avanzadas,

Plataformas de soporte computacional: arquitecturas avanzadas, Plataformas de soporte computacional: arquitecturas avanzadas, sesión 2 Diego. Llanos, Belén Palop Departamento de Informática Universidad de Valladolid {diego,b.palop}@infor.uva.es Índice 1. Segmentación

Más detalles

SEGURIDAD Y PROTECCION DE FICHEROS

SEGURIDAD Y PROTECCION DE FICHEROS SEGURIDAD Y PROTECCION DE FICHEROS INTEGRIDAD DEL SISTEMA DE ARCHIVOS ATAQUES AL SISTEMA PRINCIPIOS DE DISEÑO DE SISTEMAS SEGUROS IDENTIFICACIÓN DE USUARIOS MECANISMOS DE PROTECCIÓN Y CONTROL INTEGRIDAD

Más detalles

Heterogénea y Jerárquica

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

Más detalles

Técnicas de paralelización de código para robots basados en emociones

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

Más detalles

4. Programación Paralela

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

Más detalles

Procesos y Threads en Windows (Xp y Server 2003)

Procesos y Threads en Windows (Xp y Server 2003) Lic. Ing. Osvaldo Clúa 2008 Facultad de Ingeniería Universidad de Buenos Aires Procesos y Threads en Windows (Xp y Server 2003) EPROCESS Executive Process (bloque de control) Es la representación de un

Más detalles

Computación de Propósito General en Unidades de Procesamiento Gráfico GPGPU. Clase 5 Programación Avanzada y Optimización

Computación de Propósito General en Unidades de Procesamiento Gráfico GPGPU. Clase 5 Programación Avanzada y Optimización Computación de Propósito General en Unidades de Procesamiento Gráfico () P. Ezzatti, M. Pedemontey E. Dufrechou Clase 5 Programación Avanzada y Optimización Contenido Memoria compartida Conflicto de bancos

Más detalles

Área Académica: Escuela Superior de Tlahuelilpan. Tema: Los Sistemas Operativos y sus Procesos

Área Académica: Escuela Superior de Tlahuelilpan. Tema: Los Sistemas Operativos y sus Procesos Área Académica: Escuela Superior de Tlahuelilpan Asignatura: Sistemas Operativo Tema: Los Sistemas Operativos y sus Procesos Profesor(a): M. En C. Nubia Belzabet Pérez Olguín Periodo: Enero Junio 2014

Más detalles

Vectores y matrices. Fundamentos de Programación Fundamentos de Programación I

Vectores y matrices. Fundamentos de Programación Fundamentos de Programación I Vectores y matrices Fundamentos de Programación Fundamentos de Programación I 1 Ejemplo de utilización n de vectores: gráfico de producción En una compañía nos han encargado escribir un programita que

Más detalles

Tema 7 Vectores y cadenas de caracteres. Fundamentos de Informática

Tema 7 Vectores y cadenas de caracteres. Fundamentos de Informática Tema 7 Fundamentos de Informática Índice 1. Qué es un vector? 2. Vectores unidimensionales 3. Cadenas de caracteres 4. Paso de vectores unidimensionales a funciones. 5. Vectores multidimensionales: matrices

Más detalles

UNIVERSIDAD DE CHILE FACULTAD DE CIENCIAS FÍSICAS Y MATEMÁTICAS DEPARTAMENTO DE CIENCIAS DE LA COMPUTACIÓN

UNIVERSIDAD DE CHILE FACULTAD DE CIENCIAS FÍSICAS Y MATEMÁTICAS DEPARTAMENTO DE CIENCIAS DE LA COMPUTACIÓN UNIVERSIDAD DE CHILE FACULTAD DE CIENCIAS FÍSICAS Y MATEMÁTICAS DEPARTAMENTO DE CIENCIAS DE LA COMPUTACIÓN OPTIMIZACIÓN DE PROCESO DE DETECCIÓN DE PARTÍCULAS A PARTIR DE IMÁGENES DE VIDEO MEDIANTE PARALELIZACIÓN

Más detalles

Nombre de la asignatura: Programación Estructurada. Créditos: 3-2 - 5. Aportación al perfil

Nombre de la asignatura: Programación Estructurada. Créditos: 3-2 - 5. Aportación al perfil Nombre de la asignatura: Programación Estructurada Créditos: 3-2 - 5 Aportación al perfil Diseñar, analizar y construir equipos y/o sistemas electrónicos para la solución de problemas en el entorno profesional,

Más detalles

MANUAL DE REFERENCIA DE C++

MANUAL DE REFERENCIA DE C++ MANUAL DE REFERENCIA DE C++ UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE INGENIERÍA DEPARTAMENTO DE INGENIERÍA DE SISTEMAS E INDUSTRIAL BOGOTÁ D.C. 2009 Objetivo: Brindar a los estudiantes del curso de

Más detalles

CLUSTER FING: PARALELISMO de MEMORIA DISTRIBUIDA

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

Más detalles

Procesos, hilos y Recursos

Procesos, hilos y Recursos Sistemas Operativos Pontificia Universidad Javeriana Febrero de 2010 Process Manager Procesos Clasicos Procesos Modernos Process Manager Objetivo El manejador de procesos provee un espectro de servicios

Más detalles

MATLAB: Introducción al procesamiento de imágenes

MATLAB: Introducción al procesamiento de imágenes MATLAB: Introducción al procesamiento de imágenes Visión por Computador Esther de Ves Cuenca Representación de imágenes en MATLAB Matlab almacena las imágenes como vectores bidimensionales (matrices),

Más detalles

Tema 6. Reutilización de código. Programación 2015-2016. Programación - Tema 6: Reutilización de código

Tema 6. Reutilización de código. Programación 2015-2016. Programación - Tema 6: Reutilización de código Tema 6 Reutilización de código Programación 2015-2016 Programación - Tema 6: Reutilización de código 1 Tema 6. Reutilización de código Modularidad. Implementación de métodos. Uso de métodos. Programación

Más detalles

LABORATORIO 2. La biblioteca a nivel de usuario semso (semáforos Sistemas Operativos) brinda las siguientes primitivas:

LABORATORIO 2. La biblioteca a nivel de usuario semso (semáforos Sistemas Operativos) brinda las siguientes primitivas: 1 Introducción LABORATORIO 2 En esta tarea se desea implementar un servicio sincronización de procesos a través de semáforos binarios con prioridad para el sistema operativo Linux. Para esto se deberá

Más detalles

Solving Dense Linear Systems on Platforms with Multiple Hardware Accelerators

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

Más detalles

Modulo 1 El lenguaje Java

Modulo 1 El lenguaje Java Modulo 1 El lenguaje Java 13 - Codificación en Java Una de las grandes diferencias entre Java y Pascal en cuando a la codificación es que Java se trata de un lenguaje de los llamados case sensitive Esto

Más detalles

EL ENTORNO: VISION - E LABORATORY

EL ENTORNO: VISION - E LABORATORY EL ENTORNO: VISION - E LABORATORY JAVIER MOLINA* Y ALBERTO YÚFERA*, ** * Departamento de Tecnología Electrónica, Universidad de Sevilla, Av. Reina Mercedes s/n, Sevilla 41012, España. tf: 95 4556472, fax:

Más detalles

Paralelización de la factorización LDL T usando el lenguaje de programación paralela ZPL

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

Más detalles

Procesadores de lenguaje Tema 5 Comprobación de tipos

Procesadores de lenguaje Tema 5 Comprobación de tipos Procesadores de lenguaje Tema 5 Comprobación de tipos Departamento de Ciencias de la Computación Universidad de Alcalá Resumen Sistemas de tipos. Expresiones de tipo. Equivalencia de tipos. Sobrecarga,

Más detalles

Imágenes en Matlab. Cristian S. Rocha, Andrea Manna,... Taller 1

Imágenes en Matlab. Cristian S. Rocha, Andrea Manna,... Taller 1 Imágenes en Matlab Cristian S. Rocha, Andrea Manna,... Taller 1 1. Prefacio Antes de empezar a trabajar con el Octavehay que asegurarse que la versión en la que se trabaja no tiene ningún bug perdido.

Más detalles

Taller de Programación de Dispositivos Móviles. José Miguel Rubio L. Oficina 3-20 http://www.inf.ucv.cl/~jrubio jose.rubio.l@ucv.

Taller de Programación de Dispositivos Móviles. José Miguel Rubio L. Oficina 3-20 http://www.inf.ucv.cl/~jrubio jose.rubio.l@ucv. Taller de Programación de Dispositivos Móviles José Miguel Rubio L. Oficina 3-20 http://www.inf.ucv.cl/~jrubio jose.rubio.l@ucv.cl Parte 1 1.Programación de dispositivos 2.Limitaciones de los dispositivos

Más detalles

TESIS CARRERA DE DOCTORADO EN CIENCIAS DE LA INGENIERÍA MODELOS DE AUTÓMATAS CELULARES SOBRE UNIDADES DE PROCESAMIENTO GRÁFICO DE ALTA PERFORMANCE

TESIS CARRERA DE DOCTORADO EN CIENCIAS DE LA INGENIERÍA MODELOS DE AUTÓMATAS CELULARES SOBRE UNIDADES DE PROCESAMIENTO GRÁFICO DE ALTA PERFORMANCE TESIS CARRERA DE DOCTORADO EN CIENCIAS DE LA INGENIERÍA MODELOS DE AUTÓMATAS CELULARES SOBRE UNIDADES DE PROCESAMIENTO GRÁFICO DE ALTA PERFORMANCE Mg. Ing. Pablo R. Rinaldi Doctorando Dr. Enzo Alberto

Más detalles

Capítulo 4. Vectores y matrices. 4.1 Declaración de tablas. 4.2 Declaración estática de tablas

Capítulo 4. Vectores y matrices. 4.1 Declaración de tablas. 4.2 Declaración estática de tablas Capítulo 4 Vectores y matrices En FORTRAN se puede utilizar un tipo especial de variable que sirve, en particular, para almacenar vectores y matrices. De esta forma, se utiliza un sólo nombre para referirse

Más detalles

Cómputo en paralelo con OpenMP 1

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

Más detalles

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

Segmentación de Imágenes en Procesadores Many-Core Universidad de Santiago de Compostela Segmentación de Imágenes en Procesadores Many-Core Lilien Beatriz Company Garay Fernández lilien.gf@gmail.com Indice 1. Introducción Single-chip Cloud Computer (SCC)

Más detalles

Tema 9. Vectores y Matrices

Tema 9. Vectores y Matrices Tema 9. Vectores y Matrices OBJETIVO En temas anteriores hemos declarado variables simples de tipo int, float, o de cualquier otro tipo simple. A menudo necesitaremos declarar una colección de variables,

Más detalles

Programando la GPU con CUDA

Programando 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 detalles

Kepler. 1. Presentación de la arquitectura. Índice de contenidos [25 diapositivas] Kepler, Johannes (1571-1630)

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]

Más detalles

PROGRAMACIÓN EN JAVA

PROGRAMACIÓN EN JAVA SISTEMAS INFORMÁTICOS INDUSTRIALES curso 2007-2008 PROGRAMACIÓN EN JAVA PRÁCTICA 3: Comunicación entre tareas. Modelo productor / consumidor. Objetivos Implementar una aplicación en Java en la que existan

Más detalles

Yersinio Jiménez Campos Analista de datos Banco Nacional de Costa Rica

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.

Más detalles

Durante los próximos días aprenderemos todo lo necesario para exportar modelos animados desde el 3D Studio MAX hasta nuestro videojuego.

Durante los próximos días aprenderemos todo lo necesario para exportar modelos animados desde el 3D Studio MAX hasta nuestro videojuego. ANIMACIÓN ESQUELETAL Durante los próximos días aprenderemos todo lo necesario para exportar modelos animados desde el 3D Studio MAX hasta nuestro videojuego. Introducción a la animación en videojuegos

Más detalles

Contenidos. Gestión dinámica de memoria. Gestión dinámica de memoria. Introducción. 1. Introducción 2. El operador NEW 3. El operador DELETE

Contenidos. Gestión dinámica de memoria. Gestión dinámica de memoria. Introducción. 1. Introducción 2. El operador NEW 3. El operador DELETE Contenidos 1. Introducción 2. El operador NEW 3. El operador DELETE 1 Introducción Hasta ahora hemos visto que cada vez que queremos usar una variable debemos reservarle un lugar de la memoria al comenzar

Más detalles

GENERACIÓN DE IMÁGENES VOLUMÉTRICAS DE DATOS BIOMÉDICOS EN TIEMPO REAL

GENERACIÓN DE IMÁGENES VOLUMÉTRICAS DE DATOS BIOMÉDICOS EN TIEMPO REAL Programa Oficial de Postgrado en Ingenierías Transversales Máster en Ingeniería Biomédica Proyecto Fin de Máster GENERACIÓN DE IMÁGENES VOLUMÉTRICAS DE DATOS BIOMÉDICOS EN TIEMPO REAL Autor: D. David Anaya

Más detalles

Secretos de la Programación Concurrente

Secretos de la Programación Concurrente Secretos de la Programación Concurrente Stuart Perez, Luis Castro Autómatas y Compiladores, Escuela de Ciencias de la Computación e Informática, San Pedro de Montes de Oca, Costa Rica jstuartp@gmail.com

Más detalles

Patrones de diseño para aplicaciones de tiempo real

Patrones de diseño para aplicaciones de tiempo real Metodologías, procesos y entornos para sistemas de tiempo real Master de Computación Patrones de diseño para aplicaciones de tiempo real José M. Drake Computadores y Tiempo Real Santander, 2010 1 Metodos,

Más detalles

SIMM: TEORÍA DE LOS S.O. I.E.S. JUAN DE LA CIERVA CURSO 2007/2008

SIMM: TEORÍA DE LOS S.O. I.E.S. JUAN DE LA CIERVA CURSO 2007/2008 SIMM: TEORÍA DE LOS S.O. I.E.S. JUAN DE LA CIERVA CURSO 2007/2008 1.- INTRODUCCIÓN A LOS PROCESOS 1.1.- Concepto 1.2.- Composición y estructura 1.3.- Estados y transiciones 2.- COMUNICACIÓN ENTRE PROCESOS

Más detalles

Segundo Taller Final de PROGRAMACIÓN ORIENTADO A OBJETOS. INGENIERÍA DE SISTEMAS. Docente y Administrativo: Luz Esperanza Espitia Preciado

Segundo Taller Final de PROGRAMACIÓN ORIENTADO A OBJETOS. INGENIERÍA DE SISTEMAS. Docente y Administrativo: Luz Esperanza Espitia Preciado Segundo Taller Final de PROGRAMACIÓN ORIENTADO A OBJETOS. Código: O613 INGENIERÍA DE SISTEMAS Docente y Administrativo: Luz Esperanza Espitia Preciado Componente: Teórico Práctico. F. Vigencia: 8/10/2.012

Más detalles

Unidad II: Administración de Procesos y del procesador

Unidad II: Administración de Procesos y del procesador Unidad II: Administración de Procesos y del procesador 2.1 Concepto de proceso Un proceso no es más que un programa en ejecución, e incluye los valores actuales del contador de programa, los registros

Más detalles

Curso 0 de Informática

Curso 0 de Informática Curso 0 de Informática 2015-2016 Tema 1: Introducción a la Informática y Conceptos básicos 1 Motivación (I): En los procesos industriales, cada vez es mayor el uso de sistemas informáticos para: Monitorización,

Más detalles

Gráficos por Computador

Gráficos por Computador Gráficos por Computador Animación Jordi Linares i Pellicer Escola Politècnica Superior d Alcoi Dep. de Sistemes Informàtics i Computació jlinares@dsic.upv.es http://www.dsic.upv.es/~jlinares processing

Más detalles

Tema 5 Repertorios de instrucciones: Modos de direccionamiento y formato

Tema 5 Repertorios de instrucciones: Modos de direccionamiento y formato Tema 5 Repertorios de instrucciones: Modos de direccionamiento y formato Bibliografía: William Stallings Organización y Arquitectura de computadores 5ta. Edition. Editorial Pearson Educación.- Objetivos:

Más detalles

Programando la GPU con CUDA RIO 2014 Río Cuarto (Argentina), 17 y 18 de Febrero, 2014. Agradecimientos. Prerrequisitos para este tutorial

Programando la GPU con CUDA RIO 2014 Río Cuarto (Argentina), 17 y 18 de Febrero, 2014. Agradecimientos. Prerrequisitos para este tutorial Programando la GPU con CUDA RIO 2014 Río Cuarto (Argentina), 17 y 18 de Febrero, 2014 Manuel Ujaldon Nvidia CUDA Fellow Profesor del Dpto. de Arquitectura de Computadores. Universidad de Málaga (España).

Más detalles

MATLAB en 30 minutos

MATLAB en 30 minutos MATLAB en 30 minutos Rafael Collantes. Octubre 200. Introducción MATLAB nació como un programa para cálculo matricial, pero en la actualidad MATLAB es un sistema que permite no solamente realizar todo

Más detalles

Estructura de Datos. TDA: Listas. Primer Semestre, 2010. Indice. Tipos de estructura de datos lineales

Estructura de Datos. TDA: Listas. Primer Semestre, 2010. Indice. Tipos de estructura de datos lineales Estructura de Datos TDA: Listas Prof. Mauricio Solar Prof. Lorna Figueroa Parte del material fue obtenido de Lic. Claudio Barúa Primer Semestre, 2010 Indice Tipos de estructura de datos lineales Listas

Más detalles