Programación en la GPU - Centro de Computación Gráfica
Transcripción
Programación en la GPU - Centro de Computación Gráfica
Programación en la GPU El futuro en el desarrollo de aplicaciones Esmitt Ramírez J. Centro de Computación Gráfica Universidad Central de Venezuela Junio, 2011 Agenda • • • • • • • ¿Qué es la GPU? GPGPU GPU vs. CPU Arquitectura GPU Programación Aplicaciones Id Ideas Finales Fi l La Programación en la GPU – Prof. Esmitt Ramírez J. 2 ¿Qué es la GPU? • La Unidad de Procesamiento Gráfico (GPU – Graphics Processing Unit) es un procesador especializado para procesar gráficos • Casi todas las computadoras p tienen 1 • Diseño simple (un rectángulo!) g ) • Billones de transistores • Diversos fabricantes de hardware La Programación en la GPU – Prof. Esmitt Ramírez J. 3 ¿Qué es la GPU? • GPU integrada vs. GPU dedicada • En E 1999, 1999 NVIDIA llanzó ó lla G GeForce F 256 – Transformaciones geométricas – Iluminación – Rasterización – 10 millones de polígonos x segundo • Los líderes: Intel ((49.4%), ), NVIDIA (27.8%) ( )y AMD/ATI (20.6%)* • Otras empresas: S3 Graphics, Graphics VIA Technologies y Matrox La Programación en la GPU – Prof. Esmitt Ramírez J. 4 ¿Qué es la GPU? Motorola ATRIX 4G La Programación en la GPU – Prof. Esmitt Ramírez J. Samsung Galaxy Tab 10.1 5 GPGPU • Recientemente, la GPU ha evolucionado creando una arquitectura más flexible • Oportunidad: Implementar “cualquier algoritmo”, l it ” no solo l gráficos áfi • Reto: Obtener eficiencia y alto rendimiento Alto rendimiento Base de Datos Astronomía Electrónica Video Criptografía Finanzas Gráficos Imágenes Inteligencia Artificial Cál l numéricos Cálculos éi Ordenamiento La Programación en la GPU – Prof. Esmitt Ramírez J. Bioinformática Química Audio Física Biología Computacional 6 GPGPU • General Purpose GPU: aplicaciones de propósito general programadas en la GPU empleando APIs gráficos (OpenGL, DirectX) • Al principio, i i i se vió ió como un “h “hacking” ki ” a lla GPU • “Old School”: APIs gráficos (shaders en GLSL, HLSL, Cg, etc.) – Curva de aprendizaje de los APIs – Cálculos = Rendering – Independiente p de la p plataforma – Basado en el despliegue de gráficos La Programación en la GPU – Prof. Esmitt Ramírez J. 7 GPGPU • “New School”: Lenguajes GPGPU, GPU computing stream computing computing, – Fácil programación sobre la GPU – Enfocarse E f en ell algoritmo l it y no en detalles d t ll d de implementación – Integración de la GPU como un recurso computacional del resto del sistema (device) Nuevo paradigma de programación La Programación en la GPU – Prof. Esmitt Ramírez J. 8 CPU vs. GPU CPUs y GPUs tienen esquemas de funcionamiento distintos en varios niveles Muchas scooters Entrega muchos paquetes en una escala de tiempo razonable La Programación en la GPU – Prof. Esmitt Ramírez J. Carro deportivo Entrega un paquete tan rápido como sea posible 9 CPU vs. GPU CPUs y GPUs tienen esquemas de funcionamiento distintos en varios niveles Latencia razonable y altísimo rendimiento Baja latencia y rendimiendo razonable Calcula muchas tareas en una escala de tiempo razonable Calcula una tarea tan rápido como sea posible La Programación en la GPU – Prof. Esmitt Ramírez J. 10 CPU vs. GPU • Algunos algoritmos pueden alcanzar hasta 100x en GPU sobre su versión en CPU • Este factor depende mucho del paralelismo • En la GPU, técnicamente se puede programar lo que sea! • GPUs son especializados en hardware, no son tan flexibles como el CPU CPU + GPU = combinación de fle ibilidad y rendimiento flexibilidad La Programación en la GPU – Prof. Esmitt Ramírez J. 11 CPU vs. GPU Operaciones punto flotante por segundo La Programación en la GPU – Prof. Esmitt Ramírez J. 12 CPU vs. GPU Ancho de banda de la memoria CPU vs GPU La Programación en la GPU – Prof. Esmitt Ramírez J. 13 CPU vs. GPU La Programación en la GPU – Prof. Esmitt Ramírez J. 14 CPU vs. GPU • • • • • • • • • Cluster de GPUs de CSIRO (Commonwealth Scientific and Industrial R Research hO Organization) i ti ) – Australia A t li CSIRO supercomputer 128 Dual Xeon E5462 nodos Cada nodo tiene 16 Gb o 32 Gb de RAM Cada nodo tiene 500 Gb de disco duro 64 Tesla S1070 – 256 GPUs con 61.440 cores GPUs 256 Teraflops de precisión simple (32 bits) 140 Teraflops de precisión doble (64 bits) Programación bajo CUDA http://www.csiro.au/resources/GPU-cluster.html La Programación en la GPU – Prof. Esmitt Ramírez J. 15 CPU vs. GPU • A nivel mundial, los grandes centros de cómputo de alto rendimiento están introduciendo GPUs Cluster de 336 PS3 – US Air Force La Programación en la GPU – Prof. Esmitt Ramírez J. 16 Arquitectura GPU • Un GPU core no es lo mismo que un CPU core • Procesador SIMD (Single Instruction Multiple D t ) Data) SIMD Mi SIMD: Misma iinstrucción t ió para ttodos d llos cores La Programación en la GPU – Prof. Esmitt Ramírez J. 17 Arquitectura GPU La Programación en la GPU – Prof. Esmitt Ramírez J. 18 Arquitectura GPU La Programación en la GPU – Prof. Esmitt Ramírez J. 19 Arquitectura GPU • CPUs y GPUs tienen diseños de arquitectura distintos La Programación en la GPU – Prof. Esmitt Ramírez J. 20 Arquitectura GPU Escalibilidad automática La Programación en la GPU – Prof. Esmitt Ramírez J. 21 Arquitectura GPU Grid de bloques de hilos La Programación en la GPU – Prof. Esmitt Ramírez J. • • • • GeForce GTX 580 Cores CUDA 512 1536 Mb de Memoria 1544 MHz (procesador) y 772 MHz (gráfico) • Precio en amazon.com* $499.99 22 Programación • CUDA-C • Direct Di t C Compute t • OpenCL • RapidMind, BrookGPU, Lib Sh, Intel Ct, etc. La Programación en la GPU – Prof. Esmitt Ramírez J. 23 Programación • • • • • • SGC Ruby CUDA (descargable por Git), GPU .NET NET (TidePowerd) (Tid P d) para C# / .NET, NET Clyther = Phyton + OpenCL , PyCUDA (scripting lenguage), CUDA Fortran, Fortran y cada día aparecen más y más… __global__ void CUDAFunc2JOINCIC(uint32* array, float* P){ float ptemp = (float)array[0]; *P = ptemp + MUL(globalVar, ptemp); ………. } La Programación en la GPU – Prof. Esmitt Ramírez J. 24 Programación • Host – Kernels K l • Device – Grid – Block – Thread dim3 dimBlock(4,2,2); dim3 dimGrid(2,2,1); KernelFunction<<<dimGrid, dimBlock>>> (…); La Programación en la GPU – Prof. Esmitt Ramírez J. 25 Programación • Suma de 2 vectores __global__ void AddVec(int* a, int* b, int* c){ int tid = blockIdx.x * blockDim.x + threadIdx.x; (tid < N) ) if ( c[tid] = a[tid] + b[tid]; } La Programación en la GPU – Prof. Esmitt Ramírez J. 26 Aplicaciones • • • • • • • • • Dinámica de fluidos C Creación ió d de efectos f t Finanzas Física en juegos de video Gráficos Imágenes médicas P t ól y gas Petróleo Procesamiento de video/audio Y muchos más! La Programación en la GPU – Prof. Esmitt Ramírez J. 27 Aplicaciones Dinámica de fluidos GPU based simulation and visualization of fluids with free surfaces Martin Schreiber, Proyecto Open Source 2010 La Programación en la GPU – Prof. Esmitt Ramírez J. 28 Aplicaciones Creación de efectos 50x GPU Flame Fractal Renderer OpenSource (keldor314), SourceForge. 2011 La Programación en la GPU – Prof. Esmitt Ramírez J. 29 Aplicaciones Finanzas 80x Accelerated fluctuation analysis by graphic cards and complex pattern formation in financial markets Tobias Preis, Peter Vimau, Wolfgang Paul, Johannes Scheneider. Alemania. 2009 La Programación en la GPU – Prof. Esmitt Ramírez J. 30 Aplicaciones Gráficos 10x Ray Tracing in participating media Piotr Orzechowski. Wroclaw University of Technology, Polonia. 2010 La Programación en la GPU – Prof. Esmitt Ramírez J. 31 Aplicaciones Gráficos 50x Airor Render Random Control, Random Control S.L.U. 2010 La Programación en la GPU – Prof. Esmitt Ramírez J. 32 Aplicaciones Imágenes CUDA Accelerated Face Recognition Numaan A., Sibi A. India. 2010 La Programación en la GPU – Prof. Esmitt Ramírez J. 33 Aplicaciones Imágenes 68x High-Quality Rendering of Varying Isosurfaces with Cubic Trivariate C1-continuous Spline Thomas Kalbe, Thomas Koch, Michael Goesele. Alemania. 2009 La Programación en la GPU – Prof. Esmitt Ramírez J. 34 Aplicaciones Petróleo y Gas 20x High-order g finite-element seismic wave p propagation p g modeling with MPI on a large GPU cluster Komatitsch D.,, Erlebacherc G., Goddeke D., Michéa D. Francia/Alemania. 2010 La Programación en la GPU – Prof. Esmitt Ramírez J. 35 Aplicaciones Base de Datos A := LOAD 'lineitem.tbl' USING ('|') AS (price{6}:float, qty{5}:int, discount{7}:float, tax{8}:float, rf{9}:varchar(1), lf{10}:varchar(1), shipdate{11}:int); B := FILTER A BY shipdate <= 19980902; D := SELECT rf AS rf, lf AS lf, SUM(qty) AS sum_qty, SUM(price) AS sum_base_price, AVG(qty) AS avg_qty, AVG(price) AS avg_price, AVG(discount) AS avg_disc, COUNT(qty) AS cnt FROM B GROUP BY rf, lf; STORE D INTO 'mytest.txt' USING ('|'); Alenka OpenSource (antonmsk), SourceForge. 2011 La Programación en la GPU – Prof. Esmitt Ramírez J. 36 Aplicaciones Otros MP3 encoder OpenSource (biggestpos), SourceForge. 2008 La Programación en la GPU – Prof. Esmitt Ramírez J. 37 Ideas finales • Rediseña tus aplicaciones para usarlas de forma paralela (parallel (parallel-friendly) friendly) • No es tan díficil como parece :) El futuro es paralelo, Let’s get ready! La Programación en la GPU – Prof. Esmitt Ramírez J. 38 Programación en la GPU [email protected] http://ccg.ciens.ucv.ve/~esmitt Centro de Computación Gráfica http://ccg.ciens.ucv.ve La Programación en la GPU – Prof. Esmitt Ramírez J. 39
Documentos relacionados
Arquitectura de Computadores II GPU
extraordinario del rendimiento del sistema. Los sistemas informáticos están pasando de realizar el procesamiento central en la CPU a realizar coprocesamiento repartido entre la CPU y la GPU. ...
Más detalles