Aceleración en GPU explotando paralelismo de datos. Indice de contenidos [50 diapositivas] 242 aplicaciones muy populares aceleradas en GPU

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

Download "Aceleración en GPU explotando paralelismo de datos. Indice de contenidos [50 diapositivas] 242 aplicaciones muy populares aceleradas en GPU"

Transcripción

1 Aceleración en GPU explotando paralelismo de datos Indice de contenidos [50 diapositivas] Curso de Verano de la UMA Programando la GPU con CUDA Málaga, del 15 al 24 de Julio de Introducción a la aceleración en GPU. [5] 2. Alternativas para la programación de GPUs. [37] Librerías y herramientas para CUDA. [10] Orientar CUDA hacia otras plataformas. [5] Cómo acceder a CUDA desde otros lenguajes. [6] Uso de directivas: OpenACC. [11] 3. Ejemplos de programación: Seis formas de implementar SAXPY en GPU. [9] Manuel Ujaldón Profesor Universidad de Málaga Conjoint Senior Univ. de Newcastle (Australia) CUDA Nvidia aplicaciones muy populares aceleradas en GPU I. Introducción a la aceleración en GPU 4

2 El mejor rendimiento en aplicaciones científicas Escalabilidad: Las aplicaciones escalan a miles de GPUs Aceleración de una GPU Tesla K20X respecto a una CPU Sandy Bridge Ingeniería: MATLAB (FFT)* Física: Chroma Geología: SPECFEM3D Dinámica molecular: AMBER Escalabilidad débil Reultados en CPU: Dual socket E5-2687w, 3.10 GHz. Resultados en GPU: Dual socket E5-2687w + 2 GPUs Tesla K20X *Los resultados en MATLAB comparan una CPU i7-2600k frente a una GPU Tesla K20 Advertencia:Las implementaciones que no corresponden a Nvidia pueden no estar completamente optimizadas Escalabilidad fuerte 5 6 Consumo: Otro aspecto clave en supercomputación 2.3 PFLOPS 7000 hogares 7.0 Megavatios 7.0 Megavatios Las CPUs tradicionales no son económicamente viables CPU Optimizada para tareas secuenciales GPU Optimizada para multitud de tareas paralelas 10x performance/socket > 5x energy efficiency II. Alternativas de programación La era de la computación acelerada en GPUs está aquí 7

3 CUDA se dirige tanto a educación como a investigación y proporciona una amplia gama de herramientas para la rápida adopción de GPUs Paquetes+ numéricos MATLAB MathemaAca NI+LabView pycuda Depuradores &+Profilers cuda0gdb Visual+Profiler+ Parallel+Nsight+ Visual+Studio Allinea TotalView Compiladores C C++ Fortran OpenCL DirectCompute Java Python Paralelizadores PGI+Accelerator CAPS+HMPP mcuda OpenMP Librerías BLAS FFT LAPACK NPP Sparse Imaging RNG Consultoría+y+entrenamiento Soluciones+OEM ANEO GPU Tech 9 10 CUDA soporta un ecosistema muy diverso en torno a la programación paralela Plataforma de computación paralela CUDA Este ecosistema puede articularse en 4 vertientes principales: La cadena de herramientas de compilación. Los lenguajes de programación. Las librerías de código. Las herramientas de desarrollo. Librerías) Aceleración subordinada SMX Paralelismo dinámico Direc5vas) OpenACC) Aceleración fácil de aplicaciones Nsight IDE Linux, Mac y Windows Depuración y profiling en GPU Hyper-Q Lenguajes)de) programación) Máxima flexibilidad Depurador CUDA-GDB NVIDIA Visual Profiler Habilita la compilación de otros lenguajes a la plataforma CUDA, y los lenguajes CUDA a otro HW. GPUDirect 11 12

4 Entorno de desarrollo Nvidia Nsight, edición Visual Studio Anteriormente conocida como Nvidia Parallel Nsight. Herramienta para la depuración y optimización (debugging & profiling) integrada en MS Visual Studio. Disponible para Windows Vista, Windows 7 y Windows 8. Permite depuración remota y local para: CUDA C/C++, Direct Compute, HLSL. Localizador de errores en acceso a memoria (memchecker) CUDA C/C++. II.1. Entornos, librerías y herramientas para CUDA Optimización (profiling) para: CUDA C/C++, OpenCL, Direct Compute. 14 Depuración con Nvidia Nsight Profiling con Nvidia Nsight

5 Librerías: Sencillez y aceleración de calidad Tres pasos para acelerar aplicaciones CUDA Facilidad de uso: Utilizar librerías habilita la aceleración en GPU sin tener conocimientos avanzados de programación. "Drop-in": Muchas librerías aceleradas en GPU siguen APIs estándar, permitiendo acelerar con mínimos cambios. Calidad: Las librerías ofrecen implementaciones de alta calidad para funciones que aparecen en un amplio rango de aplicaciones. Rendimiento: Las librerías de Nvidia han sido optimizadas por expertos. Paso 1: Sustituir las llamadas a librerías por las llamadas a librerías CUDA equivalentes. saxpy() --> cublassaxpy () Paso 2: Gestionar la localidad de datos. Con CUDA: cudamalloc(), cudamemcpy(), etc. Con CUBLAS: cublasalloc(), cublassetvector(), etc. Paso 3: Reconstruir y enlazar la librería acelerada en CUDA. nvcc myobj.o -l cublas Un ejemplo de álgebra lineal: saxpy. for(i=0;i<n;i++) y[i]=a*x[i]+y[i]; Librerías matemáticas para CUDA int N = 1 << 20; cublasinit(); cublasalloc(n, sizeof(float), (void**)&d_x); cublasalloc(n, sizeof(float), (void**)&d_y); cublassetvector(n, sizeof(x[0]), x, 1, d_x, 1); cublassetvector(n, sizeof(x[0]), y, 1, d_y, 1); // Computa saxpy sobre un millón de elementos cublassaxpy(n, 2.0, d_x, d_y, 1); cublasgetvector(n, sizeof(y[0]), d_y, 1, y, 1); cublasfree(d_x); cublasfree(d_y); cublasshutdown(); Inicializa CUBLAS Aloja vectores en la GPU Transfiere datos a GPU Coloca el prefijo "cublas" y utiliza las vars. de GPU Devuelve los datos desde la GPU Desaloja vectores en la GPU Desactiva la librería CUBLAS 19 Rutinas matemáticas de altas prestaciones para sus aplicaciones: cufft: Librerías con transformadas rápidas de Fourier. cublas: Librería BLAS (Basic Linear Algebra Subroutines) íntegra. cusparse: Librería para matrices dispersas. curand: Librería para la generación de números aleatorios. NPP: Primitivas de rendimiento para procesar imágenes y vídeo. Thrust: Plantillas para algoritmos paralelos y estructuras de datos. math.h: Librería C99 de punto flotante. Incluidas todas ellas en el toolkit de CUDA, descarga gratuita en: https://developer.nvidia.com/cuda-downloads 20

6 Librerías y herramientas: El ecosistema del programador permite crecer sus aplicaciones Librerías aceleradas en GPU Otras muchas otras librerías fuera del CUDA toolkit Desarrolladas por Nvidia. De código abierto. NVIDIA cublas NVIDIA curand Vector Signal Image Processing GPU Accelerated Linear Algebra Matrix Algebra on GPU and Multicore IMSL Library Building-block ArrayFire Matrix Algorithms for Computations CUDA Sparse Linear Algebra NVIDIA cusparse NVIDIA NPP NVIDIA cufft C++ STL Features for CUDA además de la ingente cantidad de programas disponibles en la red gracias al esfuerzo de tantos programadores. Descritas en detalle en Nvidia Developer Zone: Compilando para otras plataformas II. 2. Cómo orientar CUDA hacia otras plataformas 24

7 Ocelot Es un entorno de compilación dinámico para el código PTX sobre sistemas heterogéneos que permite un análisis extensivo del mismo y su migración a otras plataformas. Desde Feb'11 (versión 2.0), también considera: GPUs de AMD/ATI. CPUs x86 de Intel. 25 Swan (última versión: Diciembre de 2010) Es un traductor fuente-a-fuente de CUDA a OpenCL: Proporciona una API común que abstrae el soporte en tiempo de ejecución de CUDA y OpenCL. Preserva la comodidad de lanzar kernels CUDA (<<<bloques,hilos>>>), generando código fuente C para el punto de entrada a las funciones kernel. pero el proceso de conversión precisa de intervención humana. Útil para: Evaluar el rendimiento de un código OpenCL para un código CUDA. Reducir la dependencia de nvcc cuando compilamos código host. Proporcionar múltiples CUDA Compute Capability en un solo binario. Como librería run-time para gestionar kernels OpenCL en nuevos desarrollos. 26 MCUDA Desarrollado por el grupo de investigación IMPACT en la Universidad de Illinois. Es un entorno de trabajo basado en Linux que trata de migrar códigos CUDA eficientemente sobre CPUs multicore. Disponible para su descarga gratuita 27 El compilador CUDA x86 del Portland Group Principales diferencias con las herramientas anteriores: En lugar de traducir desde código fuente, trabaja en tiempo de ejecución. Esto permite construir código binario unificado que simplifica la distribución software. Principales ventajas: Velocidad: La versión compilada puede ejecutarse en una plataforma x86 incluso sin disponer de GPU. El compilador vectoriza el código para las instrucciones SSE (128 bits) y AVX (256 bits). Transparencia: Incluso aquellas aplicaciones que utilizan recursos nativos como las unidades de textura tendrán un comportamiento idéntico tanto en CPU como en GPU. Disponibilidad: Licencia gratis un mes registrándose como CUDA developer. 28

8 Lenguajes de programación más populares II. 3. Cómo acceder a CUDA desde otros lenguajes Fuente: CodeEval.com [2013]. Muestra superior a códigos. 30 CUDA & Python: Una alianza de rendimiento y productividad Hay un punto de entrada a CUDA desde los lenguajes de programación más populares Python es el lenguage de mayor crecimiento. Por qué? Los seis perfiles de programador más usuales disponen hoy en día de herramientas para conectar con CUDA. Resulta fácil de aprender. Cuenta con potentes librerías. Ofrece una simbiosis entre empresas y programadores: Las firmas plantean desafíos y los desarrolladores envían sus resultados. Python marca también la tendencia en la contratación: Buena parte de los programadores Python están buscando trabajo. PyCUDA permite acceder al API de CUDA desde Python: Mapea la totalidad de CUDA sobre Python. Documentación completa. Generación de código en run-time (RTCG) para una rápida y automática optimización de códigos. Robustez (errores), comodidad (librerías), agilidad de los wrappers Programador de C 2. Programador de Fortran CUDA C, OpenACC. CUDA Fortran, OpenACC. 3. Programador de C++ 4. Programador matemático Thrust, CUDA C++. MATLAB, Mathematica, LabVIEW. 5. Programador de C# 6. Programador de Python GPU.NET. PyCUDA. 32

9 Envolventes y generadores de interfaz a través de llamadas C/C++ La creciente diversidad de lenguajes de programación con los que interactúa CUDA CUDA puede incorporarse dentro de cualquier lenguaje que admita llamadas a rutinas C/C++. Para simplificar el proceso, podemos utilizar generadores de interfaz de propósito general. SWIG [http://swig.org] (Simplified Wrapper and Interface Generator) es la aproximación más popular a este respecto. Está activamente soportada e incluye una larga lista de lenguajes (ver próxima diapositiva). También se dispone de una conexión con interfaz Matlab: Para una GPU: Utilizar Jacket (plataforma de computación numérica). Para múltiples GPUs: Utilizar MatWorks Parallel Computing Toolbox Lenguajes orientados a dominios concretos (DSL = Domain-Specific Languages) Muy populares dentro de su área de aplicación específica: Matemáticas, estadística, física, medicina, 35 Puedes comenzar hoy mismo Todos esos lenguajes son soportados por las GPUs CUDA. Seguramente ya tienes una GPU de ésas en tu portátil o sobremesa (como pieza aparte o integrada con la CPU). Páginas Web: CUDA C/C++: CUDA Fortran: Thrust C++ Template Lib: GPU.NET: PyCUDA (Python): MATLAB: Mathematica: cuda-and-opencl-support 36

10 Código fuente del compilador disponible: Una puerta abierta a lenguajes y desarrollos Conexión sencilla y eficiente con un sinfín de: Lenguajes por encima, por ejemplo, agregando front-ends para Java, Python, R, DSLs. Arquitecturas por debajo, por ejemplo, ARM, FPGA, x86. Nvidia modificó LLVM para construir sobre él un nvcc, posibilitando: CUDA C, C++, Fortran Cobertura de nuevos lenguajes Compilador LLVM para CUDA GPUs de Nvidia CPUs x86 Publicar el código fuente. Enriquecerse de las aportaciones de la comunidad LLVM. Cobertura de nuevo hardware II. 4. Uso de directivas: OpenACC 37 OpenACC: Un esfuerzo corporativo para la estandarización OpenACC: Una alternativa a la computación CUDA para programadores menos avezados Se trata de un estándar para la programación paralela de aceleradores basada en directivas (tipo OpenMP), que: Se insertan en programas C, C++ o Fortran. Orientan al compilador para paralelizar ciertas secciones de código. Objetivo: Pensadas para un programador no experto. El código es portable a procesadores multicore y paralelos. Primeros desarrollos e iniciativas comerciales: The Portland Group (PGI). Cray. Primeros clientes en el campo de la supercomputación: 39 Estados Unidos: Oak Ridge National Lab. Europa: Swiss National Supercomputing Centre. 40

11 OpenACC: Directivas OpenACC: Cómo funcionan las directivas Las directivas proporcionan la base para un código común que es: Multi-plataforma. Multi-fabricante. Esto ofrece una forma abierta de preservar la inversión en aplicaciones antiguas, habilitando una fácil migración hacia la computación basada en aceleradores hardware. Las directivas GPU permiten beneficiarnos de toda la potencia de la GPU de una manera sencilla, sobre todo si lo comparamos con los hilos de CPU o los kernels de CUDA. El mayor logro es no tener que reestructurar el código cuando queramos paralelizar una gran aplicación. 41 Partiendo de sencillas anotaciones, el compilador paraleliza el código. Cuantas más anotaciones coloques, mejor será la generación de código del compilador. Funciona en: GPUs many-core. CPUs multi-core. CPU Program myscience serial code!$acc kernels do k = 1,n1 do i = 1,n2 parallel code enddo enddo!$acc end kernels End Program myscience Código C o Fortran original GPU Anotación para el compilador OpenACC 42 Los dos pasos básicos para comenzar Un ejemplo Paso 1: Anotar las directivas en el código fuente.!$acc data copy(util1,util2,util3) copyin(ip,scp2,scp2i)!$acc parallel loop <código fuente>!$acc end parallel!$acc end data Paso 2: Compilar y ejecutar. pgf90 -ta=nvidia -Minfo=accel file.f!$acc data copy(a,anew) iter=0 do while ( err > tol.and. iter < iter_max ) iter = iter +1 err=0._fp_kind!$acc kernels do j=1,m do i=1,n Anew(i,j) =.25_fp_kind *( A(i+1,j ) + A(i-1,j ) & +A(i,j-1) + A(i,j+1)) err = max( err, Anew(i,j)-A(i,j)) end do end do!$acc end kernels IF (mod(iter,100)==0.or. iter == 1) print *, iter, err A= Anew Copiar los vectores en la memoria de la GPU dentro de la región de datos Paralelizar el código interno a la región Delimitar la región paralela end do Delimitar la región de datos!$acc end data y devolver sus valores 44

12 La pregunta clave es: Cuánto rendimiento sacrificamos? Ejemplos más recientes Algunos resultados indican pérdidas de sólo el 5-10% frente a CUDA en "algunos" casos concretos. Otras fuentes ganan un factor 5x dedicando una semana o incluso un día. En realidad, este factor depende más de la bondad de la aplicación que de la habilidad del programador. Detección de objetos en tiempo real Valoración de acciones con métodos de MonteCarlo Interacción entre solventes y biomoléculas Global Manufacturer of Navigation Systems Global Technology Consulting Company University of Texas at San Antonio El ciclo de vida del pescado en Australia University of Melbourne 65x en 2 días 5x en 40 horas 2x en 4 horas 5x en 8 horas Estrellas y galaxias Redes neuronales hace 12.5B años en auto-aprendiuniversity of Groningen zaje de robots The University of Plymouth 5.6x en 5 días 4.7x en 4 horas 45 Un testimonio de un reciente seminario de OpenACC en Pittsburgh Supercomp. Center 46 Más casos estudios del congreso GTC'13: 3 compiladores OpenACC [PGI, Cray, CAPS] Rendimiento en la GPU M2050 (Fermi, 14x 32 cores), sin contar el tiempo de transferencia entre CPU y GPU. Tamaño de las matrices a multiplicar: 2048x2048. Stencil de 7 puntos. Tamaño del vector 3D: 256x256x256. Al+final+del+segundo+día 10x+en+un+kernel+atmosférico incorporando+sólo+6+direcavas Technology+Director NaAonal+Center+for+Atmospheric+ Research+(NCAR) 47 Fuente: "CUDA vs. OpenACC: Performance Case Studies", por T. Hoshino, N. Maruyama, S. Matsuoka. 48

13 Para comenzar a programar con OpenACC Regístrate para obtener acceso libre al compilador de directivas por un mes, e incluso herramientas para una rápida adaptación (ver También hay un compilador de CAPS por 199. III. Ejemplos de programación: Seis formas de implementar SAXPY en GPU 49 Qué es SAXPY? Single-precision Alpha X Plus Y. Forma parte de la librería BLAS. 1. CUDA C Código C estándar void saxpy_serial(int n, float a, float *x, float *y) { for (int i = 0; i < n; ++i) y[i] = a*x[i] + y[i]; } // Invocar al kernel SAXPY secuencial (1M elementos) saxpy_serial(4096*256, 2.0, x, y); Utilizando este código básico, ilustraremos seis formas diferentes de programar la GPU: Código CUDA equivalente de ejecución paralela en GPU: CUDA C. CUBLAS Library. CUDA Fortran. Thrust C++ Template Library. C# con GPU.NET. OpenACC. global void saxpy_parallel(int n,float a,float *x,float *y) { int i = blockidx.x*blockdim.x + threadidx.x; if (i < n) y[i] = a*x[i] + y[i]; } // Invocar al kernel SAXPY paralelo (4096 bloques de 256 hilos) saxpy_parallel<<<4096, 256>>>(4096*256, 2.0, x, y); 51 52

14 2. CUBLAS Library 3. CUDA Fortran Código BLAS secuencial int N = 1 << 20; // Utiliza la librería BLAS de tu elección // Invoca a la rutina SAXPY secuencial (1M elementos) blas_saxpy(4096*256, 2.0, x, 1, y, 1); Código cublas paralelo int N = 1 << 20; cublasinit(); cublassetvector (N, sizeof(x[0]), x, 1, d_x, 1); cublassetvector (N, sizeof(y[0]), y, 1, d_y, 1); // Invoca a la rutina SAXPY paralela (1M elementos) cublassaxpy (N, 2.0, d_x, 1, d_y, 1); cublasgetvector (N, sizeof(y[0], d_y, 1, y, 1); cublasshutdown(); Fortran estándar module my module contains subroutine saxpy (n, a, x, y) real :: x(:), y(:), a integer :: n, i do i=1,n y(i) = a*x(i) + y(i); enddo end subroutine saxpy end module mymodule program main use mymodule real :: x(2**20), y(2**20) x = 1.0, y = 2.0 $ Invoca SAXPY para 1M elementos call saxpy(2**20, 2.0, x, y) end program main Fortran paralelo module mymodule contains attributes(global) subroutine saxpy(n, a, x, y) real :: x(:), y(:), a integer :: n, i attributes(value) :: a, n i = threadidx%x + (blockidx%x-1) * blockdim%x if (i<=n) y(i) = a*x(i) + y(i) end subroutine saxpy end module mymodule program main use cudafor; use mymodule real, device :: x_d(2**20), y_d(2**20) x_d = 1.0, y_d = 2.0 $ Invoca SAXPY para 1M elementos call saxpy<<<4096,256>>>(2**20, 2.0, x_d, y_d) y = y_d end program main CUDA C++: Desarrollar código paralelo genérico Con CUDA C++ podemos desarrollar código paralelo genérico, que permite encarar aplicaciones sofisticadas y flexibles con un rico middleware: Jerarquía de clases. Métodos device. Plantillas (templates). Sobrecarga de operadores. Functors (objetos función). New/delete en device Thrust C++ STL Thrust es una librería de algoritmos paralelos y código abierto que reestructura la librería STL (Standard Template Library) de C++. Principales características: Interfaz de alto nivel: Mejora la productividad del programador. Habilita la portabilidad del rendimiento entre GPUs y CPUs. Flexible: Para back-ends de CUDA, OpenMP y Thread Building Blocks (TBB). Extensible y ajustable a medida. Se integra con el software existente. Eficiente: Código GPU escrito sin emplear directamente llamadas a kernels CUDA

15 4.2. Thrust C++ STL (cont.) 5. C# con GPU.NET Código C++ secuencial con STL y Boost int N = 1<<20; std::vector<float> x(n), y(n); int N = 1<<20; Código C++ paralelo thrust::host_vector<float> x(n), y(n); thrust::device_vector<float> d_x = x; thrust::device_vector<float> d_y = y; private static C# estándar C# paralelo void saxpy (int n, float a, float[] a, float[] y) { } for (int i=0; i<n; i++) y[i] = a*x[i] + y[i]; [kernel] private static void saxpy (int n, float a, float[] a, float[] y) { } int i = BlockIndex.x * BlockDimension.x + ThreadIndex.x; if (i < n) y[i] = a*x[i] + y[i]; // Invocar SAXPY para 1M elementos // Invocar SAXPY para 1M elementos std::transform(x.begin(), x.end(), thrust::transform(x.begin(), x.end(), y.begin(), x.end(), y.begin(), y.begin(), 2.0f * _1 + _2); 2.0f * _1 + _2); int N = 1<<20; // Invoca SAXPY para 1M elementos saxpy(n, 2.0, x, y) int N = 1<<20; Launcher.SetGridSize(4096); Launcher.SetBlockSize(256); // Invoca SAXPY para 1M elementos saxpy(2**20, 2.0, x, y) Directivas de compilación OpenACC Síntesis final Código C paralelo void saxpy (int n, float a, float[] a, float[] y) { #pragma acc kernels for (int i=0; i<n; i++) } y[i] = a*x[i] + y[i]; // Invoca SAXPY para 1M elementos saxpy(1<<20, 2.0, x, y) Código Fortran Paralelo subroutine saxpy(n, a, x, y) real :: x(:), y(:), a integer :: n, i $!acc kernels do i=1. n y(i) = a*x(i) + y(i) enddo $!acc end kernels end subroutine saxpy $ Invoca SAXPY para 1M elementos call saxpy(2**20, 2.0, x_d, y_d) Estas 6 formas de programar están soportadas en todas las GPUs que aceptan CUDA (más de 600 millones en 2015). Seguramente tienes una en tu PC portátil o sobremesa. 1. CUDA C/C CUBLAS Library 5. C# con GPU.NET 2. CUDA Fortran 4. Thrust 6. OpenACC

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Computación heterogénea y su programación. 1. Introducción a la computación heterogénea. Indice de contenidos [38 diapositivas]

Computación heterogénea y su programación. 1. Introducción a la computación heterogénea. Indice de contenidos [38 diapositivas] Computación heterogénea y su programación Manuel Ujaldón Nvidia CUDA Fellow Departmento de Arquitectura de Computadores Universidad de Málaga (España) Indice de contenidos [38 diapositivas] 1. Introducción

Más 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

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

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

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

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

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

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

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

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

UNIVERSIDAD CARLOS III DE MADRID PARALELIZACIÓN PARA EL ALGORITMO DE LOS FILTROS DE KALMAN. Trabajo Fin de Grado. Septiembre de 2012

UNIVERSIDAD CARLOS III DE MADRID PARALELIZACIÓN PARA EL ALGORITMO DE LOS FILTROS DE KALMAN. Trabajo Fin de Grado. Septiembre de 2012 USO DE TÉCNICAS DE PARALELIZACIÓN PARA EL ALGORITMO DE LOS FILTROS DE KALMAN Trabajo Fin de Grado Septiembre de 2012 Autor: Javier Rodríguez Arroyo Tutor: Luis Miguel Sánchez García Co-tutor: Javier Fernández

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

Grupo de Computación de Altas Prestaciones GCAPULL, Univers. GCAPULL, Universidad de La Laguna, Tenerife

Grupo de Computación de Altas Prestaciones GCAPULL, Univers. GCAPULL, Universidad de La Laguna, Tenerife Grupo de Computación de Altas Prestaciones GCAPULL, Universidad de La Laguna, Tenerife Febrero 2010, Alicante Contents El grupo 1 El grupo 2 3 4 Composición 6 doctores 7 alumnos en fase de tesis Información

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

CAR. http://acarus.uson.mx/cursos2013/car.htm

CAR. http://acarus.uson.mx/cursos2013/car.htm CAR http://acarus.uson.mx/cursos2013/car.htm Sistemas de CAR en la UNISON Responsable : María del Carmen Heras Sánchez Asesores Técnicos : Aracely Dzul Campos Daniel Mendoza Camacho Yessica Vidal Quintanar

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

Lección 01. Introducción a los Lenguajes de Programación. Contenido. Conceptos Básicos. Lenguaje de Programación. Introducción al Lenguaje Maquina

Lección 01. Introducción a los Lenguajes de Programación. Contenido. Conceptos Básicos. Lenguaje de Programación. Introducción al Lenguaje Maquina Lección 01 Introducción a los Lenguajes de Programación Contenido Conceptos Básicos Lenguaje de Programación Introducción al Lenguaje Maquina Introducción al Lenguaje Ensamblador Introducción al Lenguaje

Más detalles

Programación híbrida en arquitecturas cluster de multicore. Escalabilidad y comparación con memoria compartida y pasaje de mensajes.

Programación híbrida en arquitecturas cluster de multicore. Escalabilidad y comparación con memoria compartida y pasaje de mensajes. Programación híbrida en arquitecturas cluster de multicore. Escalabilidad y comparación con memoria compartida y pasaje de mensajes. Fabiana Leibovich, Armando De Giusti, Marcelo Naiouf, Laura De Giusti,

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. Pedemontey J.P. Silva Clases 4 Programación Contenido Modelo de programación Introducción Programación

Más detalles

Talleres CLCAR. CUDA para principiantes. Título. Mónica Liliana Hernández Ariza, SC3UIS-CRC NVIDIA Research Center monicalilianahernandez8@gmail.

Talleres CLCAR. CUDA para principiantes. Título. Mónica Liliana Hernández Ariza, SC3UIS-CRC NVIDIA Research Center monicalilianahernandez8@gmail. a CUDA para principiantes Mónica Liliana Hernández Ariza, SC3UIS-CRC NVIDIA Research Center monicalilianahernandez8@gmail.com Tener un primer encuentro práctico con la programación en CUDA para personas

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

Computación Científica en Paralelo

Computación Científica en Paralelo Computación Científica en Paralelo Luis Miguel de la Cruz luiggix@gmail.com www.dci.dgsca.unam.mx/lmcs Unidad de Investigación en Cómputo Aplicado DGSCA-UNAM. Posgrado en Ciencia e Ingeniería de la Computación

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

ADMINISTRACIÓN DE LOS ACTIVOS DE HARDWARE Y SOFTWARE

ADMINISTRACIÓN DE LOS ACTIVOS DE HARDWARE Y SOFTWARE 5 TEMA ADMINISTRACIÓN DE LOS ACTIVOS DE HARDWARE Y SOFTWARE 5.1 OBJETIVOS Qué capacidad de procesamiento y de almacenamiento necesita nuestra organización para realizar sus transacciones de información

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

Ingeniero en Informática

Ingeniero en Informática UNIVERSIDAD DE ALMERÍA Ingeniero en Informática CLÚSTER DE ALTO RENDIMIENTO EN UN CLOUD: EJEMPLO DE APLICACIÓN EN CRIPTOANÁLISIS DE FUNCIONES HASH Autor Directores ÍNDICE 1. Introducción 2. Elastic Cluster

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

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

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

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

Tipos de Dispositivos Controladores

Tipos de Dispositivos Controladores Tipos de Dispositivos Controladores PLC Allen Bradley Siemens Schneider OMRON PC & Software LabView Matlab Visual.NET (C++, C#) FPGAS Xilinx Altera Híbridos Procesador + FPGA (altas prestaciones) µcontrolador

Más detalles

EL CLUSTER FING: COMPUTACIÓN DE ALTO DESEMPEÑO EN FACULTAD DE INGENIERÍA

EL CLUSTER FING: COMPUTACIÓN DE ALTO DESEMPEÑO EN FACULTAD DE INGENIERÍA EL CLUSTER FING: COMPUTACIÓN DE ALTO DESEMPEÑO EN FACULTAD DE INGENIERÍA SERGIO NESMACHNOW Centro de Cálculo, Instituto de Computación FACULTAD DE INGENIERÍA, UNIVERSIDAD DE LA REPÚBLICA, URUGUAY EL CLUSTER

Más detalles

Arquitectura de aceleradores. Carlos Bederián IFEG CONICET GPGPU Computing Group FaMAF UNC bc@famaf.unc.edu.ar

Arquitectura de aceleradores. Carlos Bederián IFEG CONICET GPGPU Computing Group FaMAF UNC bc@famaf.unc.edu.ar Arquitectura de aceleradores Carlos Bederián IFEG CONICET GPGPU Computing Group FaMAF UNC bc@famaf.unc.edu.ar Contenidos Cómo llegamos hasta acá Qué hay ahora Qué hace Cómo lo uso Hacia dónde parece que

Más 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

Software de sistema: Programas genéricos que permiten gestionar los recursos del ordenador.

Software de sistema: Programas genéricos que permiten gestionar los recursos del ordenador. PRINCIPALES TIPOS DE SOFTWARE Software de sistema: Programas genéricos que permiten gestionar los recursos del ordenador. Software de aplicación: Son programas escritos para realizar funciones específicas

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

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

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

1. Capítulo 1: Herramientas de Software para el sistema

1. Capítulo 1: Herramientas de Software para el sistema 1. Capítulo 1: Herramientas de Software para el sistema 1.1 Conceptos Generales 1.1.1 Joomla.- Es un sistema dinámico que gestiona y administra contenidos de código abierto, y permite desarrollar sitios

Más detalles

CLUSTER FING: ARQUITECTURA Y APLICACIONES

CLUSTER FING: ARQUITECTURA Y APLICACIONES CLUSTER FING: ARQUITECTURA Y APLICACIONES SERGIO NESMACHNOW Centro de Cálculo, Instituto de Computación FACULTAD DE INGENIERÍA, UNIVERSIDAD DE LA REPÚBLICA, URUGUAY CONTENIDO Introducción Clusters Cluster

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

Tema: Detección de billetes con OpenCV en Android.

Tema: Detección de billetes con OpenCV en Android. TRABAJO FINAL PARA APROBACION DEL CURSO DE POSTGRADO: INTRODUCCION AL PROCESAMIENTO DIGITAL DE IMAGENES. UN ENFOQUE TEORICO - PRACTICO UTILIZANDO OPEN CV. FACULTAD DE INGENIERÍA. 2013. Autor: Vera, José

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

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

Informe de avance Implementación herramientas de back-end (3-III).

Informe de avance Implementación herramientas de back-end (3-III). Proyecto RG-T1684 Desarrollo e implementación de las soluciones Prueba piloto del Componente III Informe Número 1. Informe de avance Implementación herramientas de back-end (3-III). Lautaro Matas 11/04/2013

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

8 abril 2014 IFEMA Madrid spain.ni.com/nidays. spain.ni.com

8 abril 2014 IFEMA Madrid spain.ni.com/nidays. spain.ni.com 8 abril 2014 IFEMA Madrid /nidays 1 Cómo elegir las herramientas software para diseñar un sistema de test David Sierra Support and Services Manager National Instruments Spain Instrumentos modulares definidos

Más detalles

DESARROLLO DE SOFTWARE MODULAR, ABIERTO Y COLABORATIVO PARA SIMULACIÓN DE MÁQUINAS Y MECANISMOS

DESARROLLO DE SOFTWARE MODULAR, ABIERTO Y COLABORATIVO PARA SIMULACIÓN DE MÁQUINAS Y MECANISMOS UNIVERSIDADE DA CORUÑA Escola Politécnica Superior. Ferrol. INGENIERÍA INDUSTRIAL DESARROLLO DE SOFTWARE MODULAR, ABIERTO Y COLABORATIVO PARA SIMULACIÓN DE MÁQUINAS Y MECANISMOS Autor: Tutor: Miguel Álvarez

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

Revista Digital Universitaria. 10 de agosto 2004 Volumen 5 Número 7 ISSN: 1067-6079

Revista Digital Universitaria. 10 de agosto 2004 Volumen 5 Número 7 ISSN: 1067-6079 Revista Digital Universitaria 10 de agosto 2004 Volumen 5 Número 7 ISSN: 1067-6079 JAVA o L.I. Anabell Comas Becaria de la Coordinación de Publicaciones Digitales anabell@alethia.dgsca.unam.mx o http://www.revista.unam.mx/vol.7/num12/art104/art104.htm

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

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

Bloque II. Elementos del lenguaje de programación Java

Bloque II. Elementos del lenguaje de programación Java Bloque II. Elementos del lenguaje de programación Java 1.Introducción a los lenguajes de programación 2. Estructura de un programa 3. Datos y expresiones simples 4. Instrucciones de control 5. Entrada/salida

Más detalles

Descubriendo Kepler. 1. Presentación de la arquitectura. Agradecimientos. Indice de contenidos [46 diapositivas]

Descubriendo Kepler. 1. Presentación de la arquitectura. Agradecimientos. Indice de contenidos [46 diapositivas] Agradecimientos Descubriendo Kepler Manuel Ujaldón Nvidia CUDA Fellow Dpto. Arquitectura de Computadores Universidad de Málaga A los ingenieros de Nvidia, por compartir ideas, material, diagramas, presentaciones,...

Más 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

www.bsc.es RECURSOS SUPERCOMPUTACIÓN BSC- CNS RES PRACE

www.bsc.es RECURSOS SUPERCOMPUTACIÓN BSC- CNS RES PRACE www.bsc.es RECURSOS SUPERCOMPUTACIÓN CNS RES PRACE BSC- + Equipos + Capacidad TIER 0 Centros europeos TIER 1 Centros nacionales TIER 2 Centros regionales y universidades 2 BARCELONA SUPERCOMPUTING CENTER

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

WEBBER: USO DE COMPONENTES PARA LA ARMONIZACIÓN DE CONTENIDOS Y METADATOS

WEBBER: USO DE COMPONENTES PARA LA ARMONIZACIÓN DE CONTENIDOS Y METADATOS WEBBER: USO DE COMPONENTES PARA LA ARMONIZACIÓN DE CONTENIDOS Y METADATOS Autores: Introducción Diego R. López RedIRIS diego.lopez@rediris.es El trabajo necesario para mantener un servidor de información

Más detalles

Tecnología de objetos distribuidos y arquitectura de componentes. Índice. Bibliografía. Introducción. Tema V

Tecnología de objetos distribuidos y arquitectura de componentes. Índice. Bibliografía. Introducción. Tema V Bibliografía Tema V Tecnología de objetos distribuidos y arquitectura de componentes. Szyperski, C. 1998. Component Software. Addison-Wesley. Ruiz Cortés, 1998. A. CORBA: Una visión general. http://www.lsi.us.es/~aruiz

Más detalles

IBM XL Fortran para AIX, V13.1, ofrece compatibilidad con la arquitectura de procesadores POWER7

IBM XL Fortran para AIX, V13.1, ofrece compatibilidad con la arquitectura de procesadores POWER7 con fecha 13 de abril de 2010 IBM XL Fortran para AIX, V13.1, ofrece compatibilidad con la arquitectura de procesadores POWER7 Tabla de contenidos 1 Visión general 2 Descripción 2 Requisitos previos principales

Más detalles

UNIVERSIDAD DE ALMERÍA ESCUELA SUPERIOR DE INGENIERÍA

UNIVERSIDAD DE ALMERÍA ESCUELA SUPERIOR DE INGENIERÍA UNIVERSIDAD DE ALMERÍA ESCUELA SUPERIOR DE INGENIERÍA PROYECTO FIN DE CARRERA INGENIERÍA INFORMÁTICA PARALELIZACIÓN DE ALGORITMOS DE CARACTERIZACIÓN DE IMÁGENES. COMPARACIÓN DE TÉCNICAS BASADAS EN GPU

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

PROGRAMACIÓN BÁSICA DE LA COMPUTADORA. 1 Introducción. Tabla 1: Instrucciones MIPS

PROGRAMACIÓN BÁSICA DE LA COMPUTADORA. 1 Introducción. Tabla 1: Instrucciones MIPS PROGRAMACIÓN BÁSICA DE LA COMPUTADORA 1 Introducción Un sistema de computadora total incluye tanto circuitería (hardware) como programación (software). El hardware consta de los componentes físicos y todo

Más detalles

Procesador Pentium II 450 MHz Procesador Pentium II 400 MHz Procesador Pentium II 350 MHz Procesador Pentium II 333 MHz Procesador Pentium II 300 MHz

Procesador Pentium II 450 MHz Procesador Pentium II 400 MHz Procesador Pentium II 350 MHz Procesador Pentium II 333 MHz Procesador Pentium II 300 MHz PENTIUM El procesador Pentium es un miembro de la familia Intel de procesadores de propósito general de 32 bits. Al igual que los miembros de esta familia, el 386 y el 486, su rango de direcciones es de

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

Taller de Programación Estructurada en Java Tema 2. Fundamentos de la programación orientada a objetos

Taller de Programación Estructurada en Java Tema 2. Fundamentos de la programación orientada a objetos Taller de Programación Estructurada en Java Tema 2. Fundamentos de la programación orientada a objetos Ingeniero en Computación José Alfredo Cobián Campos josealfredocobian@gmail.com Facultad de Ciencias

Más detalles

Programación de Sistemas

Programación de Sistemas Programación s Unidad 2 s Operativos y Programación Software Base Contenido Introducción a los s Operativos (SO) Definición y conceptos SO Visualización un sistema cómputo s distintos puntos vista Capas

Más detalles

IBM Rational Statemate ayuda a los ingenieros de sistemas a enfrentarse a los retos del mercado de sistemas integrados complejos

IBM Rational Statemate ayuda a los ingenieros de sistemas a enfrentarse a los retos del mercado de sistemas integrados complejos ZP09-0207, con fecha 2 de junio de 2009 IBM Rational Statemate ayuda a los ingenieros de sistemas a enfrentarse a los retos del mercado de sistemas integrados complejos Índice 1 Resumen de características

Más detalles

J2ME ENTORNO DE EJECUCIÓN. Un entorno de ejecución determinado de J2ME se compone entonces de una selección de:

J2ME ENTORNO DE EJECUCIÓN. Un entorno de ejecución determinado de J2ME se compone entonces de una selección de: J2ME Esta versión de Java está enfocada a la aplicación de la tecnología Java en dispositivos electrónicos con capacidades computacionales y gráficas muy reducidas, tales como teléfonos móviles, PDAs o

Más detalles

Organización del Computador 1. Máquina de von Neumann Jerarquía de Niveles

Organización del Computador 1. Máquina de von Neumann Jerarquía de Niveles Organización del Computador 1 Máquina de von Neumann Jerarquía de Niveles Inicios de la computación Turing y Church sientan las bases teóricas de la computación Máquina de Turing Máquina teórica compuesta

Más detalles

Novedades en LabVIEW. Ing. Felipe Rincón Galvis - Gerente Comercial Na9onal Instruments Andina. ni.com/colombia NI CONFIDENTIAL

Novedades en LabVIEW. Ing. Felipe Rincón Galvis - Gerente Comercial Na9onal Instruments Andina. ni.com/colombia NI CONFIDENTIAL ni.com/colombia Novedades en LabVIEW Ing. Felipe Rincón Galvis - Gerente Comercial Na9onal Instruments Andina Graphical System Design Una aproximación basada en una plataforma para Medición y Control Pruebas

Más detalles

Repaso de las características más importantes de la programación Java y su adaptación a Android

Repaso de las características más importantes de la programación Java y su adaptación a Android Repaso de las características más importantes de la programación Java y su adaptación a Android 1. Entorno de programación en java 2. Variables y tipos de datos 3. Operaciones y operadores 4. Clases y

Más detalles

Visualización y modelado de elementos geográficos en dispositivos móviles. Capítulo 5: Aplicaciones cliente

Visualización y modelado de elementos geográficos en dispositivos móviles. Capítulo 5: Aplicaciones cliente Capítulo 5: Aplicaciones cliente 46 5.1 La aplicación cliente en la Pocket PC La aplicación desarrollada para el cliente en un dispositivo móvil como corresponde a la Pocket PC necesita una capa muy delgada

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

Haz Ingeniería Con Aplicaciones Prácticas

Haz Ingeniería Con Aplicaciones Prácticas Haz Ingeniería Con Aplicaciones Prácticas Taller para Estudiantes César Sánchez Academia e Investigación National Instruments de México Graphical System Design con LabVIEW Pruebas Monitoreo Embebido Control

Más detalles

TEMA 37: Arquitecturas Cliente / Servidor. Tipos de cliente. Tipos de Servidor. Clasificación del software.

TEMA 37: Arquitecturas Cliente / Servidor. Tipos de cliente. Tipos de Servidor. Clasificación del software. . TEMA 37: Arquitecturas Cliente / Servidor. Tipos de cliente. Tipos de Servidor. Clasificación del software. Índice 1 INTRODUCCIÓN 2 2 CARACTERÍSTICAS 2 2.1 Características del cliente...2 2.2 Características

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

ITT-327-T Microprocesadores

ITT-327-T Microprocesadores ITT-327-T Microprocesadores Introducción al Microprocesador y al Microcomputador. al Microcomputador. Profesor Julio Ferreira. Sistema Microcomputador. Un Sistema Microcomputador tiene dos componentes

Más detalles

Gradiente conjugado. MSc. Miguel Vargas-Félix miguelvargas@cimat.mx http://www.cimat.mx/~miguelvargas 07/09/11 1/23

Gradiente conjugado. MSc. Miguel Vargas-Félix miguelvargas@cimat.mx http://www.cimat.mx/~miguelvargas 07/09/11 1/23 Gradiente conjugado MSc. Miguel Vargas-Félix miguelvargas@cimat.mx http://www.cimat.mx/~miguelvargas 07/09/11 1/23 Contenido Contenido Estructura de una matriz rala a partir de conectividades Compressed

Más detalles

Conceptos Básicos de Software. Clase III

Conceptos Básicos de Software. Clase III Clase III Definición de Sistema Operativo El sistema operativo es el programa (o software) más importante de una computadora. Para que funcionen los otros programas, cada computadora de uso general debe

Más detalles

Electrónica Digital II

Electrónica Digital II Electrónica Digital II M. C. Felipe Santiago Espinosa Aplicaciones de los FPLDs Octubre / 2014 Aplicaciones de los FPLDs Los primeros FPLDs se usaron para hacer partes de diseños que no correspondían a

Más detalles

Guía de estudio para el examen ordinario de la materia de Introducción a la Ingeniería en Computación

Guía de estudio para el examen ordinario de la materia de Introducción a la Ingeniería en Computación Guía de estudio para el examen ordinario de la materia de Introducción a la Ingeniería en Computación 1.- Diferencia entre computadoras analógicas y digitales? 2.- Para que fue concebida la máquina analítica

Más detalles

Sistemas Operativos. Curso 2013 Virtualización

Sistemas Operativos. Curso 2013 Virtualización Sistemas Operativos Curso 2013 Virtualización Agenda Introducción Requerimientos para la virtualización Virtualización de CPU Vritualización de la memoria Virtualización de la E/S Sistemas Operativos Modernos,

Más detalles