CUDA Overview and Programming model

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

Download "CUDA Overview and Programming model"

Transcripción

1 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 Luther Date: lunes, 22 de noviembre de 2010

2 Contents Abstract... 3 Introducción... 3 Requerimientos... 4 Conceptos generales... 5 Objetivos de CUDA... 5 Conceptos de programación... 5 Device... 5 Host... 5 Kernel... 5 CUDA s... 6 Modelo de programación... 8 Modelo de memoria... 8 Registros... 8 Memoria local... 8 Memoria compartida... 8 Memoria global (Dispositivo)... 8 Memoria Host (CPU)... 9 Runtime API y Driver API: Driver API Runtime API Manejo de memoria Alocar memoria en el dispositivo Establecer valores de memoria en el dispositivo

3 Liberar memoria del dispositivo Copia de datos Ejecución de código en GPU Calificadores de función Ejecutando Kernel Descomposición de los datos Kernels de ejemplo Ejemplo de código Sincronización Proyecto Sistema usado para este proyecto Entorno de trabajo Problemas en la implantación del entorno de trabajo Resultados de la comparación Conclusiones del proyecto Conclusiones generales Referencias

4 Abstract El poder de procesamiento de hoy en día se basa en el uso de múltiples núcleos en un solo procesador para aumentar el rendimiento y poder de cómputo, sin embargo, estos procesadores involucran un gran costo debido a la tecnología involucrada, pues además del procesador, hay que comprar memorias y placa madre compatible con el procesador por lo que se podría decir que son poco escalables, por otro lado están las tarjetas de video que pueden funcionar bajo la mayoría de los computadores actuales sin restricciones como procesador o placa madre, además estas cuentan con múltiples procesadores pudiendo procesar miles de threads de forma paralela, otra ventaja es que varias tarjetas de video pueden trabajar juntas en un solo computador y pueden ser reemplazadas fácilmente. Es por este motivo que se crea CUDA, con el fin de aprovechar el poder de cómputo de las tarjetas de video, teniendo una plataforma de cómputo extensible, potente y de fácil uso. Introducción CUDA es el acrónimo para Compute Unified Device Architecture el cual es una arquitectura de cómputo desarrollada por NVIDIA. CUDA es el motor de computo en unidades de procesamiento graficas (GPUs) de NVIDIA el cual es accesible para programadores de software mediante variantes de lenguajes de programación estándar. Los desarrolladores de software pueden usar C para CUDA, el cual es el lenguaje de programación C con extensiones provistas por NVIDIA y con ciertas restricciones, y compilar el código mediante un compilador escalable Open64 C para luego ser ejecutado en tarjetas de video NVIDIA 1. CUDA aprovecha las ventajas de las tarjetas de video NVIDIA para procesar elementos dentro de múltiples procesadores con miles de threads concurrentes, facilitando el uso y facilidad de programación. NVIDIA apoyando y alentando la adopción de esta tecnología, ha sacado al mercado varios servidores de cómputo llamados TESLA orientados a estaciones de trabajo para Clusters y también para gran escala para Data Center, siendo estos promocionados por tener un rendimiento comparable con el ultimo procesador quad-core del mercado consumiendo 1/20 de energía y a un 1/10 del costo 2. En este trabajo se abordara el cómo programar sobre la plataforma CUDA, usando el sistema operativo Windows 7 Profesional versión 64bits con Microsoft Visual Studio 2008 Profesional. Se presentarán los problemas encontrados y las soluciones provistas para luego presentar el proyecto de ejemplo desarrollado en CUDA

5 Requerimientos Para desarrollar con tecnología CUDA es necesario conocer el sistema en el cual se está trabajando y el sistema objetivo a desarrollar, estos puntos son importantes ya que el kit de desarrollo de CUDA no implementa un sistema multi-plataformas por lo que es necesario descargar o compilar las bibliotecas necesarias para determinado sistema. A continuación se presentan los requerimientos mínimos para desarrollar sobre Sistema operativo Windows 3. Sistema operativo: Windows XP/Vista/7 32/64 bits. IDE Recomendado: Microsoft Visual Studio 2005 o superior. NVIDIA Driver para correr aplicaciones en CUDA. CUDA Toolkit 32/64 bits. Hardware recomendado: NVIDIA GeForce 8 series o superior. Cabe destacar que CUDA Toolkit trae un emulador incorporado en donde mediante las opciones de preferencias, se puede ejecutar el código de GPU en la CPU del equipo, evitando tener que forzadamente comprar una tarjeta de video para el desarrollo. 3 4

6 Conceptos generales En esta sección se trataran los conceptos generales sobre CUDA, sus modelos de programación y modelos de memoria 4. Objetivos de CUDA Los objetivos de CUDA se basan en la escalabilidad que presentan las tarjetas gráficas de NVIDIA donde escalan mediante el aumento de multiprocesadores con múltiples núcleos de trabajo lo cual logra un total de núcleos de procesamiento del orden de y donde cada núcleo de procesamiento puede trabajar cientos de threads lo cual genera del orden de de threads para poder procesar datos. Otro punto considerado como objetivo es poder ofrecer de manera sencilla y fácil de usar el poder de procesamiento y para esto se desea facilitar la computación heterogenea de CPU + GPU. Conceptos de programación CUDA introduce varios conceptos de programación asociados a su arquitectura dentro de los cuales se distinguen el Device, Host y Kernel. Device A la unidad de procesamiento grafica o GPU se le llama Device o dispositivo, pueden haber tantos dispositivos como tarjetas de video tenga el computador distinguiéndose cada una por un identificador, nombre y poder de computo. Host A la unidad central de procesamiento se le denomina Host, es en el Host donde se ejecuta cualquier código deseado por el programado, sin restricciones y como complemento al código ejecutado por el dispositivo. Kernel Los Kernel son fragmentos de código que se ejecutaran en paralelo dentro del dispositivo. Solo un kernel es ejecutado a la vez y muchos threads son ejecutados por cada kernel. La principal diferencia entre los threads de CUDA y los de CPU son que los threads de CUDA son extremadamente ligeros, requieren un gasto de recursos muy pequeños para su creación y pueden ser conmutados rápidamente, otro punto es que CUDA ocupa miles de threads para obtener eficiencia mientras que CPUs de múltiples núcleos solo pueden usar unos pocos. 4 San Diego Supercomputer Center > Training > NVIDIA CUDA Workshop > Basic of CUDA. 5

7 CUDA s Un kernel de CUDA es ejecutado por un arreglo de threads, donde cada thread corre el mismo código y se diferencian por un identificador o threadid el cual se usa para procesar direcciones de memoria y tomar decisiones de control. threadid float x = input[threadid]; float y = func(x); output[threadid] = y; Ilustración 1: CUDA thread array. Un kernel lanza una cuadricula de bloques de thread, threads dentro de un bloque cooperan via memoria compartida o shared memory, threads dentro de diferentes bloques no pueden cooperar entre sí. Esta característica deja a los desarrolladores escalar transparentemente mediante diferentes GPUs. Cuadricula Bloque thread 0 Bloque thread 1 Bloque thread 2... Bloque thread n... Memoria compartida Memoria compartida Memoria compartida Memoria compartida Ilustración 2: Cuadricula de bloques de threads. 6

8 Cada bloque y cada thread pueden tener más de una dimensión. Un ID de bloque puede tener 1 y 2 dimensiones y cada ID de thread puede tener 1, 2 y 3 dimensiones como se muestra en la ilustración 7. Esto simplifica el acceso a memoria cuando se procesan datos multidimensionales. Dispositivo Cuadricula Bloque (0,0) Bloque (1,0) Bloque (2,0) Bloque (1,0) (0,0,0) (1,0,0) (2,0,0) Bloque (0,1) (3,0,0) Bloque (1,1) Bloque (2,1) (0,0,1) (0,1,0) (1,0,1) (1,1,0) (2,0,1) (2,1,0) (3,0,1) (3,1,0) (0,1,1) (0,2,0) (1,1,1) (1,2,0) (2,1,1) (2,2,0) (3,1,1) (3,2,0) (0,2,1) (0,3,0) (1,2,1) (1,3,0) (2,2,1) (2,3,0) (3,2,1) (3,3,0) (0,3,1) (1,3,1) (2,3,1) (3,3,1) Ilustración 3: Dimensiones de cuadricula, bloques y threads. 7

9 Modelo de programación CUDA establece un modelo de programación basado en la idea de Kernel, cuadricula o Grid, Bloques y threads. Un kernel es ejecutado por una cuadricula la cual contiene varios bloques, estos bloques son un conjunto de threads que pueden cooperar entre si compartiendo datos vía memoria compartida y sincronizando su ejecución. s de diferentes bloques no pueden cooperar entre si. Este punto es importante pues dependiendo de la complejidad del problema es que pueden ser de utilidad pocos bloques de gran tamaño o varios bloques de tamaño pequeño. Modelo de memoria CUDA establece acorde a la arquitectura de la GPU varios modelos de memoria y cada uno con un propósito y un fin distinto. Registros Los registros son los elementos más pequeños dentro de la arquitectura, estos registros se asignan por thread y tienen un ciclo de vida igual al thread. Memoria local Al igual que los registros, la memoria local es asignada a cada thread y respetan el ciclo de vida del mismo, sin embargo este tipo de memoria se encuentra físicamente en la memoria DRAM del dispositivo. Memoria compartida La memoria compartida es asignada a cada bloque de threads y se encuentra físicamente en la tarjeta de video. Esta memoria tiene un ciclo de vida igual al ciclo de un bloque. Memoria global (Dispositivo) Esta memoria es accesible por todos los threads al igual que el Host, la vida útil de este tipo de memoria respeta los alocamientos y de alocamientos de memoria y es controlado por el programador. 8

10 Memoria Host (CPU) La memoria del host respeta los alocamientos y de alocamientos y no es accesible por los threads de CUDA. Bloque 0 Registro Memoria local Memoria compartida Kernel 0 Bloque 0 Bloque 1 Bloque 2 Bloque n Kernel 1 Bloque 0 Bloque 1 Bloque 2 Bloque n Memoria Global Ilustración 4: Modelo de memoria en CUDA. 9

11 Runtime API y Driver API: Existen dos interfaces de programación de aplicaciones (API). Driver API La de más bajo nivel es la llamada Driver API la cual contiene funciones con prefijo API tiene varias ventajas, dentro de las cuales se encuentran: esta No depende de bibliotecas de tiempo de ejecución o runtime library. Posee más control sobre los dispositivos pudiendo, un thread de CPU, controlar múltiples GPUs. No existen extensiones C en el código del host, pudiendo asi usar cualquier otro compilador de CPU del por defecto en el Host( ejemplo: icc, etc ) Posibilita el uso de Parallel execution (PTX) Just-in-Time (JIT) compilation. Runtime API La API de más alto nivel es la llamada Runtime API la cual contiene funciones con prefijo esta API también tiene ventajas, dentro de las cuales se encuentran: Facilita el manejo por código del dispositivo proveyendo inicialización implícita. Provee manejo de contextos y manejo de módulos. Más fácil de utilizar que Driver API. Todo el código del dispositivo es idéntico usando una u otra API. Por razones de simplicidad se explicara el uso de Runtime API. 10

12 Manejo de memoria 5 Lo primero que hay que tener en cuenta es que tanto la memoria de uso de CPU y GPU tienen distintos espacios. Lo segundo es que la memoria del dispositivo es manejada mediante código desde el Host. El host puede alocar y liberar memoria, copiar datos hacia y desde el dispositivo y administrar la memoria global del dispositivo. Alocar memoria en el dispositivo Alocar memoria en el dispositivo permite trabajar con datos y esto se realiza mediante la función: cudaerror_t cudamalloc void pointer, size_t nbytes Esta función asigna a pointer la dirección de memoria alocada y aloca un tamaño de memoria dictado por nbytes. Devuelve un código de error dictado por cudaerror_t de existir alguno. Existen variantes de esta función las cuales son: cudamalloc3d, cudamalloc3darray, cudamallocarray, cudamallochost y cudamallocpitch. Establecer valores de memoria en el dispositivo Establecer valores en memoria del dispositivo se realiza mediante la función: cudamemset void pointer, int value, size_t count Esta función recibe como parámetro una dirección de memoria en el dispositivo referenciada por pointer, asigna los primeros count valores de la dirección de memoria el valor value. Otras funciones similares son: cudamemsetasync, cudamemset2d, cudamemset2dasync, cudamemset3d y cudamemset3dasync. 5 CUDART MEMORY.html 11

13 Liberar memoria del dispositivo Liberar memoria permite reutilizar espacios de memoria para un posterior uso, esto se realiza mediante la función: cudafree void devptr Esta función recibe como parámetro una dirección de memoria en el dispositivo referenciada por pointer para luego liberar la memoria del espacio indicado. Otras funciones similares son: cudafreearray y cudafreehost. Ejemplo de manejo de memoria int total_ints = 1024; int nbytes = total_ints*sizeof(int); int *device_allocation = 0; // Aloca nbytes en memoria y retorna la dirección mediante device_allocation cudamalloc( (void**) &device_allocation, nbytes ); // Establece en 0 todos los valores del espacio de memoria device_allocation cudamemset( device_allocation, 0, nbytes ); // Libera el espacio de memoria utilizado cudafree( device_allocation ); 12

14 Copia de datos Copiar datos permite rescatar resultados o pasar parámetros para el posterior uso, esto se realiza mediante la función: cudamemcpy void dst, const void src, size_t count, enum cudamemcopykind kind Esta función copia los count primeros bytes del área de memoria apuntada por src al espacio de memoria apuntado por dst en la dirección que indique kind la cual puede ser: cudamemcpyhosttodevice: copia desde el Host al dispositivo. cudamemcpydevicetohost: copia desde el dispositivo al Host. cudamemcpydevicetodevice: copia desde un Dispositivo a otro Dispositivo. Otras funciones similares son: cudamemcpy2d, cudamemcpy2darraytoarray, cudamemcpy2dasync, cudamemcpy2dfromarray, cudamemcpy2dfromarrayasync, cudamemcpy2dtoarray, cudamemcpy2dtoarrayasync, cudamemcpy3d, cudamemcpy3dasync, cudamemcpyarraytoarray, cudamemcpyasync, cudamemcpyfromarray, cudamemcpyfromarrayasync, cudamemcpyfromsymbol, cudamemcpyfromsymbolasync, cudamemcpytoarray, cudamemcpytoarrayasync, cudamemcpytosymbol y cudamemcpytosymbolasync. 13

15 Ejecución de código en GPU Los Kernel son funciones en C con algunas restricciones, estas restricciones son: Solo se puede acceder a memoria de GPU. Debe tener retorno de tipo void. No se aceptan argumentos variables ( varargs ). No se acepta recursión. No se aceptan variables estáticas. Los argumentos de la llamada a función son automáticamente copiados desde la memoria de la CPU a la memoria de la GPU. Calificadores de función Los Kernel deben establecer una calificación de la función que representa desde donde se puede invocar la función. Así estos calificadores son los siguientes: global : Este tipo de función se invocan desde el interior del código del host y no pueden ser llamados desde el código del dispositivo y solo pueden retornar void. device : Este tipo de función puede ser llamado desde otras funciones dentro del código del dispositivo y no pueden ser llamadas dentro del código del host. host : Solo pueden ser ejecutadas y llamadas dentro del host. Los calificadores host y device pueden ser combinados usando sobrecargas de función y el compilador generara código tanto para CPU como para GPU. 14

16 Ejecutando Kernel La sintaxis de ejecución de un kernel tiene en cuenta los parámetros de configuración de la ejecución en el dispositivo dando así la siguiente sintaxis. kernel <<< dim3 grid, dim3 block >>> args Kernel es la función que se ejecutara dentro del dispositivo, dim3 grid son las dimensiones de la cuadricula de ejecución (medidas en bloques) la cual puede tener 1 o 2 dimensiones, dim3 block son las dimensiones de cada bloque (medidas en threads) dentro de la cuadricula y puede tener 1, 2 o 3 dimensiones y args son los parámetros de ejecución de la función kernel. Así la ejecución de un kernel se puede expresar como: dim3 grid(65535, 65535); dim3 block(512, 512, 64); // Llama a la funcion kernel para ser ejecutada en el dispositivo, devuelve inmediatamente. kernel <<<grid, block>>>(args); Todos los kernel calificados como global y device tienen acceso a las siguientes variables definidas automáticamente. dim3 griddim: representa las dimensiones de la cuadricula en bloques. dim3 blockdim: representa las dimensiones del bloque en threads. dim3 blockidx: representa el índice del bloque dentro de la cuadricula. dim3 threadidx: representa el índice del thread dentro del bloque. 15

17 Descomposición de los datos Generalmente se querrá que cada thread dentro de un kernel acceda a diferentes elementos dentro de un arreglo de datos. Es así como se presenta un ejemplo de la descomposición de los datos dentro de un kernel. Grid blockidx.x Block 0 Block 1 Block 2 blockdim.x = 5 threadidx.x blockidx.x * blockdimx + threadidx.x Ilustración 5: Modelo de descomposición de datos. Kernels de ejemplo Algunos ejemplos de kernels sencillos se presentan a continuación: global void kernel_set( int* d_a) { *d_a = 13; } // Asigna a cada elemento del arreglo el valor designado por value global void assing( int* d_a, int value) { Int idx = blockdim.x * blockidx.x + threadidx.x; d_a[idx] = value; } Cabe destacar que la penúltima línea de código, donde se declara la variable idx sigue un patrón común dentro de los desarrollos y es debido al acceso a datos dentro de un arreglo mediante cada thread, así cada thread accede a un solo dato dentro de un arreglo. 16

18 Ejemplo de código A continuación se presenta un ejemplo de código que suma una constante a cada elemento de un arreglo, se presenta el código de CPU y el código en CUDA. Programa en CPU void increment_cpu(float *a, float b, int N) { for(int idx = 0; idx < N; idx ++) a[idx] = a[idx] + b; } void main() { increment_cpu(a, b, N); } Programa en CUDA gloabl void increment_gpu(float *a, float b, int N) { int idx = blockidx.x * blockdim.x + threadidx.x; if( idx < N) a[idx] = a[idx] + b; } void main() { dim3 dimblock(blocksize); dim3 dimgrid(ceil( N/ (float) blocksize)); Increment_gpu <<< dimgrid, dimblock >>> (a, b, N); } Sincronización Todas las llamadas a kernel son asíncronas, por lo que estas devuelven el control a la CPU de inmediato, además la llamada a kernel se ejecuta después de haber terminado todas las llamadas previas de CUDA. Este punto es importante para el correcto acceso a datos, para esto CUDA maneja una serie de funciones para poder sincronizar el código y dentro de estas la más útil y simple de usar es la llamada a la siguiente función: cudasynchronize void Esta función genera un bloqueo hasta que el dispositivo ha completado todas las operaciones anteriores. 17

19 Proyecto El proyecto de presentación consistió en la implantación del entorno de trabajo y el desarrollo de una comparación de tiempo entre CPU y GPU de cálculo de cuadraturas presentando previamente la información del dispositivo. Sistema usado para este proyecto A continuación se describe en detalle el sistema ocupado para el desarrollo del proyecto Sistema operativo: Windows Vista 7 Professional 64bits. IDE: Microsoft Visual Studio 2008 Professional. CUDA Toolkit 64bits versión 3.2. NVIDIA GeForce GTX 275 (Ver ilustración 1). Procesador Intel Core i5 750 (Ver ilustración 2). 4GB Ram DDR3. Ilustración 6: Detalle de tarjeta de video. Ilustración 7: Detalle de CPU 18

20 Entorno de trabajo Para empezar a desarrollar es recomendado tener instalado un entorno integrado de desarrollo, con esto en mente se recomienda instalar Microsoft Visual Studio Luego es necesario instalar el kit de desarrollo CUDA Toolkit (ver ilustración 3). Una vez instalado el Toolkit, se procede a instalar los proyectos de ejemplo llamados GPU Computing SDK code samples 7 (ver ilustración 4). Ilustración 8: NVIDIA CUDA Toolkit installer. Ilustración 9: GPU Computing SDK code samples installer. Una vez instalados estos elementos se tiene un ambiente listo para desarrollar en CUDA. Problemas en la implantación del entorno de trabajo Debido las distinciones entre sistemas operativos de 32 y 64 bits, el montaje del entorno de trabajo para 64 bits es complicado, la causa principal de esto es que los archivos de ejemplo vienen con una configuración para entornos de trabajo de 32 bits y los archivos de configuración no se encuentran debidamente escritos por lo que se debió recurrir a ayuda desde internet donde se planteaban los mismos problemas. Además, al instalar todos los elementos recomendados y los ejemplos existían conflictos por los archivos descriptores de compilación de código CUDA (*.rule) que no se encontraban en el lugar que deberían por lo que se debió copiar a la ruta indicada

21 Tiempo de procesamiento (ms) Resultados de la comparación Una vez implementada la comparación, se precedió a ejecutar el código y registrar los datos. La ejecución del código contemplo una iteración de 200 datos incrementales, estos datos fueron generados al azar mediante la función rand() iniciando con un tamaño de 1 llegando a un tamaño de Primeramente se procedió a calcular la cuadratura de cada número dentro del arreglo mediante GPU para luego medir el tiempo de cálculo mediante CPU de forma iterativa. Los resultados de esta ejecución se muestran a continuación: 100 Procesamiento de cuadraturas mediante CPU y GPU ,1 0,01 0,001 0,0001 Cantidad de numero procesados GPU-Time [ms] CPU-Time [ms] Ilustración 10: Tabla comparativa de tiempos de procesamiento de datos. 20

22 De los datos obtenidos se calculó la desviación estándar de los tiempos de GPU, tiempos de CPU y de la diferencia de tiempos, los datos son los siguientes: Tiempos Desviación Estándar (ms) GPU 0, CPU 12, Diferencia entre GPU y CPU 11, Se puede observar del gráfico que antes de los elementos la CPU procesa mucho más rápido, sin embargo la GPU procesa con tiempos casi constantes en todo su trayecto. Se obtuvo el porcentaje de la diferencia de tiempos desde que se cruzan las líneas y se obtuvieron los siguientes resultados: Porcentaje de diferencia Promedio 92,22 % Máximo 98,40 % Mínimo 16,48 % Conclusiones del proyecto Como conclusiones del proyecto, se puede notar una notable ventaja por parte de la GPU en cálculo de grandes arreglos de datos donde se puede encontrar una diferencia del 90% aproximadamente, lo cual presenta una ventaja amplia respecto de solo el cómputo dentro de la CPU. Si además le agregamos el poder de cómputo conjunto, se puede suponer un aumento del rendimiento cercano a un 100%. Conclusiones generales CUDA presenta un modelo de programación y de memoria bastante simple y de fácil uso, que facilita lidiar con procesamientos múltiples de datos y hace uso del poder de cómputo de la GPU, por lo que logra potenciar el rendimiento general a un nivel bastante amplio. CUDA además presenta un modelo escalable independiente al modelo de programación por lo que resulta un esfuerzo muy pequeño o nulo el escalar el código. 21

23 Referencias Wikipedia: NVIDIA developer zone: NVIDIA Cuda Home: Dr. Dobb s CUDA, Supercomputing for the masses: NVIDIA TESLA product information: NVIDIA CUDA Download San Diego Supercomputer Center Training NVIDIA CUDA Library Documentation 22

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

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

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

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

Arquitecturas GPU v. 2013

Arquitecturas GPU v. 2013 v. 2013 Stream Processing Similar al concepto de SIMD. Data stream procesado por kernel functions (pipelined) (no control) (local memory, no cache OJO). Data-centric model: adecuado para DSP o GPU (image,

Más detalles

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. Pedemonte Práctico Programación con CUDA Práctica 0: Ejecución del ejemplo visto en teórico (suma de

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

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

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

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

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

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

Interfaces y Manejadores de Dispositivos

Interfaces y Manejadores de Dispositivos Informática Electrónica Unidad 6 Interfaces y Manejadores de Dispositivos Modalidad y Materiales Dos clases expositivas a cargo del docente responsable (jlsimon@fceia.unr.edu.ar) Una práctica cargo de

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

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

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

Seminario II: Introducción a la Computación GPU

Seminario II: Introducción a la Computación GPU Seminario II: Introducción a la Computación GPU CONTENIDO Introducción Evolución CPUs-Evolución GPUs Evolución sistemas HPC Tecnologías GPGPU Problemática: Programación paralela en clústers heterogéneos

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

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

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

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

Entre los más conocidos editores con interfaz de desarrollo tenemos:

Entre los más conocidos editores con interfaz de desarrollo tenemos: Herramientas de programación Para poder programar en ensamblador se precisa de algunas herramientas básicas, como un editor para introducir el código, un ensamblador para traducir el código a lenguaje

Más detalles

Curso de Android con Java

Curso de Android con Java Todos los Derechos Reservados Global Mentoring Experiencia y Conocimiento para tu Vida 1 Este es un tiempo único para el mundo de los celulares, en particular de los Smartphones. Este tipo de dispositivos

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

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

UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO

UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO INTRODUCCIÓN Objetivo del curso: El alumno desarrollará la capacidad para resolver problemas de almacenamiento, recuperación y ordenamiento de datos, utilizando las diferentes estructuras que existen para

Más detalles

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 () R. Bayá, E. Dufrechou, P. Ezzattiy M. Pedemonte Clase 1 Introducción Contenido Un poco de historia El pipeline gráfico Tarjetas

Más detalles

UNIVERSIDAD DEL ISTMO Ingeniería en computación Estructura de datos

UNIVERSIDAD DEL ISTMO Ingeniería en computación Estructura de datos UNIVERSIDAD DEL ISTMO Ingeniería en computación Estructura de datos CICLO ESCOLAR 20092010B PROFESOR M. en C. J. Jesús Arellano Pimentel GRUPO 204 NÚMERO DE PRÁCTICA 1 NOMBRE DE LA PRÁCTICA OBJETIVO GENERAL

Más detalles

Tema 1. Introducción a JAVA

Tema 1. Introducción a JAVA Tema 1. Introducción a JAVA Historia Características Plataforma Java Entorno de desarrollo Ejemplo: Hola mundo Estructura general de un programa Java 1 Historia de Java (i) Surge en 1991: Sun Microsystems

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

Informática Electrónica Interfaces para los programas de aplicación (APIs)

Informática Electrónica Interfaces para los programas de aplicación (APIs) Informática Electrónica Interfaces para los programas de aplicación (APIs) DSI- EIE FCEIA 2015 Que es un API? Application Program Interface (interface para programas aplicativos) es el mecanismo mediante

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

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

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

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

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

High Performance Computing and Architectures Group

High Performance Computing and Architectures Group HPCA Group 1 High Performance Computing and Architectures Group http://www.hpca.uji.es Universidad Jaime I de Castellón ANACAP, noviembre de 2008 HPCA Group 2 Generalidades Creado en 1991, al mismo tiempo

Más detalles

LEGO Mindstorms NTX 2.0 Lenguajes de Programación. UCR ECCI CI-2657 Robótica Prof. M.Sc. Kryscia Daviana Ramírez Benavides

LEGO Mindstorms NTX 2.0 Lenguajes de Programación. UCR ECCI CI-2657 Robótica Prof. M.Sc. Kryscia Daviana Ramírez Benavides LEGO Mindstorms NTX 2.0 Lenguajes de Programación UCR ECCI CI-2657 Robótica Prof. M.Sc. Kryscia Daviana Ramírez Benavides Introducción El Software del NXT es un lenguaje visual fácil de usar. Sin embargo,

Más detalles

Recomendaciones previas Sistemas operativos: Hardware:

Recomendaciones previas Sistemas operativos: Hardware: Recomendaciones previas La instalación de la V.18 es compatible con el resto de versiones de Cadwork, no siendo necesario desinstalar las versiones anteriores. Sistemas operativos: Microsoft Windows 7

Más detalles

Capítulo 5. Sistemas operativos. Autor: Santiago Felici Fundamentos de Telemática (Ingeniería Telemática)

Capítulo 5. Sistemas operativos. Autor: Santiago Felici Fundamentos de Telemática (Ingeniería Telemática) Capítulo 5 Sistemas operativos Autor: Santiago Felici Fundamentos de Telemática (Ingeniería Telemática) 1 Sistemas operativos Definición de Sistema Operativo Partes de un Sistema Operativo Servicios proporcionados:

Más detalles

La Arquitectura de las Máquinas Virtuales.

La Arquitectura de las Máquinas Virtuales. La Arquitectura de las Máquinas Virtuales. La virtualización se ha convertido en una importante herramienta en el diseño de sistemas de computación, las máquinas virtuales (VMs) son usadas en varias subdiciplinas,

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

Técnicas SuperEscalares en la Paralelización de Bibliotecas de Computación Matricial sobre Procesadores Multinúcleo y GPUs

Técnicas SuperEscalares en la Paralelización de Bibliotecas de Computación Matricial sobre Procesadores Multinúcleo y GPUs Técnicas SuperEscalares en la Paralelización de Bibliotecas de Computación Matricial sobre Procesadores Multinúcleo y GPUs Enrique S. Quintana-Ortí quintana@icc.uji.es High Performance Computing & Architectures

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

Estructura del Sistema Operativo. Módulo 2. Estructuras de Sistemas Operativos

Estructura del Sistema Operativo. Módulo 2. Estructuras de Sistemas Operativos Estructura del Sistema Operativo Módulo 2 Estructuras de Sistemas Operativos Servicios de Sistemas operativos Interfaz de Usuario del Sistema Operativo Llamadas a Sistema Tipos de Llamadas a Sistema Programas

Más detalles

Profesor Santiago Roberto Zunino. Página 1

Profesor Santiago Roberto Zunino. Página 1 Profesor Santiago Roberto Zunino. Página 1 Software según su Hardware. Para establecer el software que debemos utilizar, siempre tenemos que tener en cuenta el Hardware con el que contamos, para tener

Más detalles

Taxonomía de los sistemas operativos. Programación de Sistemas. Características en Win3.1 (1/3) Características en Win3.1 (3/3)

Taxonomía de los sistemas operativos. Programación de Sistemas. Características en Win3.1 (1/3) Características en Win3.1 (3/3) Programación de Sistemas Taxonomía de los sistemas operativos Mtro. en IA José Rafael Rojano Cáceres tareasrojano@gmail.com http://www.uv.mx/rrojano Referencia [Oney 96] Características en Win3.1 (1/3)

Más detalles

Programación Concurrente

Programación Concurrente Master en Computación Programación Concurrente Bloque II: Programación concurrente en POSIX Tema 1. Introducción al estándar POSIX Tema 3. Gestión de Threads Tema 4. Gestión del Tiempo Tema 5. Planificación

Más detalles

LEGO Mindstorms NTX 2.0 Lenguajes de Programación. CI-2657 Robótica M.Sc. Kryscia Ramírez Benavides

LEGO Mindstorms NTX 2.0 Lenguajes de Programación. CI-2657 Robótica M.Sc. Kryscia Ramírez Benavides LEGO Mindstorms NTX 2.0 Lenguajes de Programación M.Sc. Kryscia Ramírez Benavides Introducción El Software del NXT es un lenguaje visual fácil de usar. Sin embargo, hay cosas que se vuelven muy complicadas

Más detalles

Unidad 2: Gestión de Procesos

Unidad 2: Gestión de Procesos Unidad 2: Gestión de Procesos Tema 4, Procesos: 4.1 El concepto de proceso. 4.2 Planificación de procesos. 4.3 Procesos cooperativos. 4.4 Hilos (threads). Informática (Segovia) 1 4.1 El concepto de proceso.

Más detalles

CURSOS DE VERANO 2014

CURSOS DE VERANO 2014 CURSOS DE VERANO 2014 CLOUD COMPUTING: LA INFORMÁTICA COMO SERVICIO EN INTERNET LA PLATAFORMA GOOGLE CLOUD PLATFORM. GOOGLE APP ENGINE Pedro A. Castillo Valdivieso Universidad de Granada http://bit.ly/unia2014

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

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

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

INTRODUCCIÓN A JAVA. Índice

INTRODUCCIÓN A JAVA. Índice INTRODUCCIÓN A JAVA Índice Qué es Java? La plataforma Java 2 La Máquina Virtual de Java Características principales Qué ventajas tengo como desarrollador? Bibliografía 2 1 Qué es Java? La tecnología Java

Más detalles

O3 Requerimientos de Software y Hardware

O3 Requerimientos de Software y Hardware IdeaSoft Uruguay S.R.L. Phone: +598 (2) 710 4372 21 de Setiembre 2570 Fax: +598 (2) 710 4965 Montevideo http://www.ideasoft.com.uy Uruguay O3 Requerimientos de Software y Hardware Uso de memoria, espacio

Más detalles

Cristian Blanco www.cristianblanco.es

Cristian Blanco www.cristianblanco.es INSTALACIÓN Y USO DE ENTORNOS DE DESARROLLO 2.1 ENTORNO DE DESARROLLO INTEGRADO Un entorno de desarrollo integrado (en inglés integrated development environment) es un programa informático compuesto por

Más detalles

Workflow, BPM y Java Resumen de la presentación de Tom Baeyens

Workflow, BPM y Java Resumen de la presentación de Tom Baeyens Workflow, BPM y Java Resumen de la presentación de Tom Baeyens Workflow, BPM y Java Página 1 de 11 1. Introducción Tom Baeyens es el fundador y arquitecto del proyecto de JBoss jbpm, la máquina de workflow

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

CIS1330TK03. CUDAlicious. Daniel David Cárdenas Velasco

CIS1330TK03. CUDAlicious. Daniel David Cárdenas Velasco CIS1330TK03 CUDAlicious Daniel David Cárdenas Velasco PONTIFICIA UNIVERSIDAD JAVERIANA FACULTAD DE INGENIERÍA CARRERA DE INGENIERÍA DE SISTEMAS BOGOTÁ, D.C. 2013 Pontificia Universidad Javeriana Memoria

Más detalles

Introducción a la plataforma.net

Introducción a la plataforma.net Introducción a la plataforma.net Autora: Mª del Pilar Pavón Rosano DNI: 52.923.715-W INTRODUCCIÓN Este artículo está dirigido a los profesores y profesoras del módulo Diseño y Realización de Servicios

Más detalles

Tema 2: La Tecnología Java

Tema 2: La Tecnología Java Tema 2: La Tecnología Java 0 La Tecnología de Java Es : Un lenguaje de programación Similar a C/C++ sin los problemas de manejo de memoria. Un ambiente de desarrollo Compilador, intérprete, generados de

Más detalles

Qué es Java? Introducción a Java. Lenguajes Orientados a Objetos. Qué es Java? Historia de Java. Objetivos de Java

Qué es Java? Introducción a Java. Lenguajes Orientados a Objetos. Qué es Java? Historia de Java. Objetivos de Java Qué es? Introducción a es Un lenguaje de programación Un entorno de desarrollo Un entorno de ejecución de aplicaciones Un entorno de despliegue de aplicaciones Utilizado para desarrollar, tanto applets

Más detalles

GUÍA PRÁCTICA PARA EL DESARROLLO DE APLICACIONES BASADAS EN DETECCIÓN Y SEGUIMIENTO FACIAL CON KINECT YURANNY CASTRO HERNÁNDEZ

GUÍA PRÁCTICA PARA EL DESARROLLO DE APLICACIONES BASADAS EN DETECCIÓN Y SEGUIMIENTO FACIAL CON KINECT YURANNY CASTRO HERNÁNDEZ GUÍA PRÁCTICA PARA EL DESARROLLO DE APLICACIONES BASADAS EN DETECCIÓN Y SEGUIMIENTO FACIAL CON KINECT YURANNY CASTRO HERNÁNDEZ JUAN CARLOS BEJARANO JIMÉNEZ FACULTAD DE INGENIERÍA UNIVERSIDAD AUTÓNOMA DEL

Más detalles

Unidad 1: Conceptos generales de Sistemas Operativos.

Unidad 1: Conceptos generales de Sistemas Operativos. Unidad 1: Conceptos generales de Sistemas Operativos. Tema 3: Estructura del sistema operativo. 3.1 Componentes del sistema. 3.2 Servicios del sistema operativo. 3.3 Llamadas al sistema. 3.4 Programas

Más detalles

IVista: es la interfaz con la que el Presentador se comunica con la vista.

IVista: es la interfaz con la que el Presentador se comunica con la vista. Capítulo 3 MODELO DE DISEÑO 3.1 Arquitectura Modelo-Vista-Presentador La arquitectura Modelo-Vista-Presentador (MVP) [11] separa el modelo, la presentación y las acciones basadas en la interacción con

Más detalles

Introduccion al Lenguaje C. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia

Introduccion al Lenguaje C. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia Introduccion al Lenguaje C Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia Introducción C es un lenguaje de programación creado en 1972 por

Más detalles

Tarjetas gráficas para acelerar el cómputo complejo

Tarjetas gráficas para acelerar el cómputo complejo LA TECNOLOGÍA Y EL CÓMPUTO AVANZADO Tarjetas gráficas para acelerar el cómputo complejo Tarjetas gráficas para acelerar el cómputo complejo Jorge Echevarría * La búsqueda de mayor rendimiento A lo largo

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

VISIÓN GENERAL HERRAMIENTAS COMERCIALES

VISIÓN GENERAL HERRAMIENTAS COMERCIALES VISIÓN GENERAL El servidor de MS SQL se ha convertido en un estándar en muchas partes de la América corporativa. Puede manejar volúmenes de datos grandes y se integra bien con otros productos de Microsoft.

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

Lenguaje C. Tipos de Datos Simples y Estructuras de Control

Lenguaje C. Tipos de Datos Simples y Estructuras de Control Lenguaje C Tipos de Datos Simples y Estructuras de Control Lenguaje C C es un lenguaje de programación creado en 1972 por Dennis M. Ritchie en los Laboratorios Bell como evolución del anterior lenguaje

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

Informática y Programación Escuela de Ingenierías Industriales y Civiles Grado en Ingeniería en Ingeniería Química Curso 2010/2011

Informática y Programación Escuela de Ingenierías Industriales y Civiles Grado en Ingeniería en Ingeniería Química Curso 2010/2011 Módulo 1. Fundamentos de Computadores Informática y Programación Escuela de Ingenierías Industriales y Civiles Grado en Ingeniería en Ingeniería Química Curso 2010/2011 1 CONTENIDO Tema 1. Introducción

Más detalles

Entornos de Programación Actividades de Laboratorios

Entornos de Programación Actividades de Laboratorios Entornos de Programación Actividades de Laboratorios Realizado por: Fabricio.A.Santillana.V. 2-718-1147 Procedimiento 1. Durante los Laboratorios anteriores, estuvimos viendo cuales eran las necesidades

Más detalles

SQLSERVER. El T-SQL se puede utilizar desde multitud de aplicaciones y desde diferentes lenguajes de programación

SQLSERVER. El T-SQL se puede utilizar desde multitud de aplicaciones y desde diferentes lenguajes de programación SQLSERVER Introducción a SQL Server SQL Server Es sistema manejador de base de datos un conjunto de objetos eficientemente almacenados desarrollado por MICROSOFT. En el centro de SQL Server están los motores

Más detalles

ESCUELA POLITÉCNICA NACIONAL Ingeniería en Sistemas APLICACIONES EN AMBIENTES LIBRES

ESCUELA POLITÉCNICA NACIONAL Ingeniería en Sistemas APLICACIONES EN AMBIENTES LIBRES Integrantes: GRUPO: 4 - Marcela Balseca Fecha: 04/05/2012 - Patricia Gálvez - Lilian Guamán S. - Diego Hallo ALTERNATIVAS DE SOFTWARE LIBRE PARA PROYECTOS DE DESARROLLO La cantidad de alternativas libres

Más detalles

Tema 1: y el lenguaje Java 1.Programación orientada a objetos 2.El lenguaje Java 3.Compilación, bytecode y JVMs 4.Entornos de desarrollo Java 5.Java vs otros lenguajes OO Programación orientada a objetos

Más detalles

POR QUÉ NUESTRO FRAMEWORK DE DESARROLLO DWPORTAL/APP?

POR QUÉ NUESTRO FRAMEWORK DE DESARROLLO DWPORTAL/APP? POR QUÉ NUESTRO FRAMEWORK DE DESARROLLO DWPORTAL/APP? En los proyectos de desarrollo de software se busca la forma de mejorar la calidad en el análisis de requerimientos y obtener tiempos efectivos de

Más detalles

U.T.4.EL ENTORNO DE DESARROLLO

U.T.4.EL ENTORNO DE DESARROLLO U.T.4.EL ENTORNO DE DESARROLLO Lenguaje Java Estamos en unos días en los que cada vez más la informática invade más campos de nuestra vida, estando el ciudadano medio cada vez más familiarizado con términos

Más detalles

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez Paradigmas de programación 2 Paradigmas de programación Paradigma de programación estructurada Enfatiza la separación datos de un programa

Más detalles

UNIVERSIDAD DE LOS ANDES FACULTAD DE CIENCIAS ECONOMICAS Y SOCIALES. PROF. ISRAEL J. RAMIREZ israel@ula.ve

UNIVERSIDAD DE LOS ANDES FACULTAD DE CIENCIAS ECONOMICAS Y SOCIALES. PROF. ISRAEL J. RAMIREZ israel@ula.ve UNIVERSIDAD DE LOS ANDES FACULTAD DE CIENCIAS ECONOMICAS Y SOCIALES PROF. ISRAEL J. RAMIREZ israel@ula.ve UNIVERSIDAD DE LOS ANDES FACULTAD DE CIENCIAS ECONOMICAS Y SOCIALES LOS SISTEMAS OPERATIVOS 1.-

Más detalles

CEADENSoft Visual DataLogger 1.0

CEADENSoft Visual DataLogger 1.0 CENTRO DE APLICACIONES TECNOLÓGICAS Y DESARROLLO NUCLEAR CEADENSoft Visual DataLogger 1.0 Software de aplicación para datalogger DL-1a Índice 1 - Introducción...1 2 - Requerimientos....1 3 - Instalación

Más detalles

Arquitectura y Lenguaje Java

Arquitectura y Lenguaje Java Arquitectura y Lenguaje Java 1 Introducción El lenguaje de programación Java así como su arquitectura se diseñaron para resolver problemas que se presentan en la programación moderna. Se inició como parte

Más detalles

Desarrollo Informático del SIGOB

Desarrollo Informático del SIGOB Desarrollo Informático del SIGOB Los soportes informáticos del Sistema de Información y Gestión para la Gobernabilidad (SIGOB) utilizan productos de tecnología avanzada, que permite la rápida incorporación

Más detalles

Chipsets página 1 CONJUNTO DE CHIPS PARA SOCKET 7

Chipsets página 1 CONJUNTO DE CHIPS PARA SOCKET 7 Chipsets página 1 El conjunto de chips, o chipset, es un elemento formado por un determinado número de circuitos integrados en el que se han incluido la mayoría de los componentes que dotan a un ordenador

Más detalles

Modelo de Objetos Distribuidos

Modelo de Objetos Distribuidos Remote Method Invocation Modelo de Objetos Distribuidos Un objeto remoto es un objeto cuyos métodos pueden ser invocados desde otra máquina virtual de java, potencialmente en un host diferente. Modelo

Más detalles

UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO FACULTAD DE INGENIERÍA ADMINISTRACIÓN DE REDES INVESTIGACIÓN: ANTIVIRUS

UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO FACULTAD DE INGENIERÍA ADMINISTRACIÓN DE REDES INVESTIGACIÓN: ANTIVIRUS UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO FACULTAD DE INGENIERÍA ADMINISTRACIÓN DE REDES INVESTIGACIÓN: ANTIVIRUS INTEGRANTES: HERNÁNDEZ ESPAÑA JOSÉ GUSTAVO GONZÁLEZ POMPOSO MIGUEL PIERRE VEYRAT SANCHEZ

Más detalles

Contenidos. Sistemas operativos Tema 3: Estructura del sistema operativo. Componentes típicos de un SO. Gestión de procesos.

Contenidos. Sistemas operativos Tema 3: Estructura del sistema operativo. Componentes típicos de un SO. Gestión de procesos. Contenidos Sistemas operativos Tema 3: Estructura del sistema operativo Componentes típicos del SO Servicios del SO Llamadas al sistema Programas del sistema El núcleo o kernel Modelos de diseño del SO

Más detalles

Plataformas Tecnológicas y Requerimientos Técnicos de las Aplicaciones de

Plataformas Tecnológicas y Requerimientos Técnicos de las Aplicaciones de Plataformas Tecnológicas y Requerimientos Técnicos de las Aplicaciones de Departamento de Sistemas 2014 Página 1 INDICE Introducción 3 Requisitos Generales del Entorno 3 Requisitos Generales de las Aplicaciones

Más detalles

VIRTUALIZACIÓN Virtualización es la creación de una versión virtual en base a un sistema anfitrión o host de: o Un sistema operativo. o Un servidor. o Un dispositivo de almacenamiento. orecursos de la

Más detalles

CURSOS DE VERANO 2014

CURSOS DE VERANO 2014 CURSOS DE VERANO 2014 CLOUD COMPUTING: LA INFORMÁTICA COMO SERVICIO EN INTERNET La plataforma Google Cloud Platform. Google App Engine Pedro A. Castillo Valdivieso Universidad de Granada La plataforma

Más detalles

Procesamiento de imágenes en GPUs mediante CUDA. I. Introducción. Indice de contenidos

Procesamiento de imágenes en GPUs mediante CUDA. I. Introducción. Indice de contenidos Procesamiento de imágenes en GPUs mediante CUDA Manuel Ujaldón Martínez Nvidia CUDA Fellow Departamento de Arquitectura de Computadores Universidad de Málaga Indice de contenidos 1. Introducción. [2] 2.

Más detalles

Maquinas Virtuales. Prof.: Huerta Molina Samuel. Cuellar Sánchez Jesús. Pinto López Luis Tonatiuh. Hecho por Jesús y Luis. 1

Maquinas Virtuales. Prof.: Huerta Molina Samuel. Cuellar Sánchez Jesús. Pinto López Luis Tonatiuh. Hecho por Jesús y Luis. 1 ESTRUCTURA Y PROGRAMACIÓN DE COMPUTADORAS. Grupo: 08. Prof.: Huerta Molina Samuel. Maquinas Virtuales Cuellar Sánchez Jesús. Pinto López Luis Tonatiuh. Hecho por Jesús y Luis. 1 Conceptos Básicos Sobre

Más detalles

CL_50466 Windows Azure Solutions with Microsoft Visual Studio 2010

CL_50466 Windows Azure Solutions with Microsoft Visual Studio 2010 Windows Azure Solutions with Microsoft Visual Studio 2010 www.ked.com.mx Av. Revolución No. 374 Col. San Pedro de los Pinos, C.P. 03800, México, D.F. Tel/Fax: 52785560 Introducción Este curso es una introducción

Más detalles

NTRsupport Videoconferencia. Whitepaper

NTRsupport Videoconferencia. Whitepaper NTRsupport Videoconferencia Whitepaper NTRglobal Torres Diagonal Litoral Josep Pla, 2 Edificio B3, 1ª Planta 08019 Barcelona (Spain) Tel. +34 93 445 07 00 Fax +34 93 445 07 01 www.ntrsupport.com www.ntrglobal.com

Más detalles

A continuación resolveremos parte de estas dudas, las no resueltas las trataremos adelante

A continuación resolveremos parte de estas dudas, las no resueltas las trataremos adelante Modulo 2. Inicio con Java Muchas veces encontramos en nuestro entorno referencias sobre Java, bien sea como lenguaje de programación o como plataforma, pero, que es en realidad Java?, cual es su historia?,

Más detalles

Historia de revisiones

Historia de revisiones Herbert Game Documentación Técnica Versión 1.4 Historia de revisiones Fecha Versión Descripción Autor 6/11/2011 1.0 Primer versión de la Documentación Técnica Hernán Albano 06/11/2011 1.1 Revisión del

Más detalles

Dimensions CM frente a ClearCase Comparación de rendimiento

Dimensions CM frente a ClearCase Comparación de rendimiento Resumen de la solución FUNCIONES CLAVE Administración de procesos, cambios, configuraciones, versiones y entregas desde una sola arquitectura Apoyo para desarrollo paralelo de avanzada y fusión a nivel

Más detalles

Workflows? Sí, cuántos quiere?

Workflows? Sí, cuántos quiere? Workflows? Sí, cuántos quiere? 12.11.2006 Servicios Profesionales Danysoft Son notables los beneficios que una organización puede obtener gracias al soporte de procesos de negocios que requieran la intervención

Más detalles