Este documento introduce la computación paralela con GPU. Explica que las GPU son procesadores multi-núcleo potentes para procesamiento de gráficos y operaciones de coma flotante. Describe la arquitectura de las GPU, incluyendo sus múltiples núcleos y la ejecución en paralelo de instrucciones (SIMD y SIMT). También introduce CUDA como un marco de programación para GPU que permite aprovechar su paralelismo para aplicaciones generales de propósito.
Distributed Deep Learning with Apache Spark and TensorFlow with Jim DowlingDatabricks
Methods that scale with available computation are the future of AI. Distributed deep learning is one such method that enables data scientists to massively increase their productivity by (1) running parallel experiments over many devices (GPUs/TPUs/servers) and (2) massively reducing training time by distributing the training of a single network over many devices. Apache Spark is a key enabling platform for distributed deep learning, as it enables different deep learning frameworks to be embedded in Spark workflows in a secure end-to-end pipeline. In this talk, we examine the different ways in which Tensorflow can be included in Spark workflows to build distributed deep learning applications.
We will analyse the different frameworks for integrating Spark with Tensorflow, from Horovod to TensorflowOnSpark to Databrick’s Deep Learning Pipelines. We will also look at where you will find the bottlenecks when training models (in your frameworks, the network, GPUs, and with your data scientists) and how to get around them. We will look at how to use Spark Estimator model to perform hyper-parameter optimization with Spark/TensorFlow and model-architecture search, where Spark executors perform experiments in parallel to automatically find good model architectures.
The talk will include a live demonstration of training and inference for a Tensorflow application embedded in a Spark pipeline written in a Jupyter notebook on the Hops platform. We will show how to debug the application using both Spark UI and Tensorboard, and how to examine logs and monitor training. The demo will be run on the Hops platform, currently used by over 450 researchers and students in Sweden, as well as at companies such as Scania and Ericsson.
Fakebuster fake news detection system using logistic regression technique i...Conference Papers
The document describes a fake news detection system called "FAKEBUSTER" that was developed using logistic regression in machine learning. It analyzed past research that found logistic regression achieved 79-89% accuracy in detecting fake news. The system was trained on a dataset of news articles labeled as real or fake. It uses TF-IDF to convert text to numerical features for the logistic regression model. The model was integrated into a web application called "FAKEBUSTER" that allows users to input a news article or URL to check if it is real or fake. Evaluation found the stance detection approach improved the model's accuracy for fake news classification.
Learn Entity Framework in a day with Code First, Model First and Database FirstJibran Rasheed Khan
Learn Entity Framework in a day with Code First, Model First and Database First
•Introduction to Entity Framework (EF)
•Architecture
•What’s new!
•Different approaches to work with (Code first, Database first and model first)
•Choosing right work model
•Pictorial Tour to each model
•Features & Advantages
•Question & Answer
for any help and understanding feel free to contact
thank you
JavaScript - Chapter 4 - Types and StatementsWebStackAcademy
A computer program is a list of "instructions" to be "executed" by a computer.
In a programming language, these programming instructions are called statements.
A JavaScript program is a list of programming statements.
JavaScript statements are composed of:
Values, Operators, Expressions, Keywords, and Comments.
This statement tells the browser to write "Hello Dolly." inside an HTML element with id="demo":
JavaScript Data Types
JavaScript variables can hold many data types: numbers, strings, objects and more.
In programming, data types is an important concept.
To be able to operate on variables, it is important to know something about the type.
El documento describe los diferentes tipos de tarjetas gráficas y sus conexiones al PC. Explica que las tarjetas pueden ser integradas o no integradas y que se conectan mediante puertos como ISA, EISA, VESA, PCI, AGP o PCIe. También compara las especificaciones y velocidades de los estándares AGP y PCIe, y describe brevemente las diferencias entre las marcas de tarjetas gráficas GeForce de NVIDIA y ATI.
La GPU ha evolucionado a partir de chips gráficos de las décadas de 1970 y 1980, los cuales tenían limitado soporte para sprites y dibujo de figuras. En los años 80 y 90, los microprocesadores de propósito general se usaron comúnmente para implementar GPUs avanzadas. Las GPUs modernas están altamente segmentadas con muchas unidades funcionales para procesar vértices y píxeles. Existen tarjetas de video para usuarios aficionados, usuarios mainstream y para negocios, con diferentes niveles de rendimiento para juegos y aplicaciones
Este documento introduce la computación paralela con GPUs. Explica que las GPUs son procesadores multi-núcleo que ofrecen alto rendimiento y son adecuados para aplicaciones paralelas. Describe conceptos como el paralelismo, GPGPU y CUDA. Finalmente, presenta ejemplos de aplicaciones como redes neuronales y simulaciones moleculares que se pueden acelerar usando GPUs.
Distributed Deep Learning with Apache Spark and TensorFlow with Jim DowlingDatabricks
Methods that scale with available computation are the future of AI. Distributed deep learning is one such method that enables data scientists to massively increase their productivity by (1) running parallel experiments over many devices (GPUs/TPUs/servers) and (2) massively reducing training time by distributing the training of a single network over many devices. Apache Spark is a key enabling platform for distributed deep learning, as it enables different deep learning frameworks to be embedded in Spark workflows in a secure end-to-end pipeline. In this talk, we examine the different ways in which Tensorflow can be included in Spark workflows to build distributed deep learning applications.
We will analyse the different frameworks for integrating Spark with Tensorflow, from Horovod to TensorflowOnSpark to Databrick’s Deep Learning Pipelines. We will also look at where you will find the bottlenecks when training models (in your frameworks, the network, GPUs, and with your data scientists) and how to get around them. We will look at how to use Spark Estimator model to perform hyper-parameter optimization with Spark/TensorFlow and model-architecture search, where Spark executors perform experiments in parallel to automatically find good model architectures.
The talk will include a live demonstration of training and inference for a Tensorflow application embedded in a Spark pipeline written in a Jupyter notebook on the Hops platform. We will show how to debug the application using both Spark UI and Tensorboard, and how to examine logs and monitor training. The demo will be run on the Hops platform, currently used by over 450 researchers and students in Sweden, as well as at companies such as Scania and Ericsson.
Fakebuster fake news detection system using logistic regression technique i...Conference Papers
The document describes a fake news detection system called "FAKEBUSTER" that was developed using logistic regression in machine learning. It analyzed past research that found logistic regression achieved 79-89% accuracy in detecting fake news. The system was trained on a dataset of news articles labeled as real or fake. It uses TF-IDF to convert text to numerical features for the logistic regression model. The model was integrated into a web application called "FAKEBUSTER" that allows users to input a news article or URL to check if it is real or fake. Evaluation found the stance detection approach improved the model's accuracy for fake news classification.
Learn Entity Framework in a day with Code First, Model First and Database FirstJibran Rasheed Khan
Learn Entity Framework in a day with Code First, Model First and Database First
•Introduction to Entity Framework (EF)
•Architecture
•What’s new!
•Different approaches to work with (Code first, Database first and model first)
•Choosing right work model
•Pictorial Tour to each model
•Features & Advantages
•Question & Answer
for any help and understanding feel free to contact
thank you
JavaScript - Chapter 4 - Types and StatementsWebStackAcademy
A computer program is a list of "instructions" to be "executed" by a computer.
In a programming language, these programming instructions are called statements.
A JavaScript program is a list of programming statements.
JavaScript statements are composed of:
Values, Operators, Expressions, Keywords, and Comments.
This statement tells the browser to write "Hello Dolly." inside an HTML element with id="demo":
JavaScript Data Types
JavaScript variables can hold many data types: numbers, strings, objects and more.
In programming, data types is an important concept.
To be able to operate on variables, it is important to know something about the type.
El documento describe los diferentes tipos de tarjetas gráficas y sus conexiones al PC. Explica que las tarjetas pueden ser integradas o no integradas y que se conectan mediante puertos como ISA, EISA, VESA, PCI, AGP o PCIe. También compara las especificaciones y velocidades de los estándares AGP y PCIe, y describe brevemente las diferencias entre las marcas de tarjetas gráficas GeForce de NVIDIA y ATI.
La GPU ha evolucionado a partir de chips gráficos de las décadas de 1970 y 1980, los cuales tenían limitado soporte para sprites y dibujo de figuras. En los años 80 y 90, los microprocesadores de propósito general se usaron comúnmente para implementar GPUs avanzadas. Las GPUs modernas están altamente segmentadas con muchas unidades funcionales para procesar vértices y píxeles. Existen tarjetas de video para usuarios aficionados, usuarios mainstream y para negocios, con diferentes niveles de rendimiento para juegos y aplicaciones
Este documento introduce la computación paralela con GPUs. Explica que las GPUs son procesadores multi-núcleo que ofrecen alto rendimiento y son adecuados para aplicaciones paralelas. Describe conceptos como el paralelismo, GPGPU y CUDA. Finalmente, presenta ejemplos de aplicaciones como redes neuronales y simulaciones moleculares que se pueden acelerar usando GPUs.
The document provides an overview of accelerator technology and OpenCL. It discusses how accelerators like GPUs use SIMD parallelism to speed up computations by processing multiple data items in parallel. GPUs have thousands of lightweight threads that hide memory latency. OpenCL provides a standardized programming model to access the parallel capabilities of CPUs, GPUs, and other accelerators. It executes kernels across a problem domain for data-parallel applications.
This document discusses using CUDA on GPUs to accelerate map projection calculations. It presents a method for implementing the Universal Transverse Mercator projection on a GPU using CUDA. Experiments show the GPU implementation provides a 6-8x speedup over a CPU version when including data transfer times, and a 70-90x speedup when only considering calculation times. Two task assignment approaches are evaluated, with striped partitioning performing slightly better than a matrix distribution method. Future work is proposed to implement other GIS algorithms on GPUs to take advantage of the significant speed increases possible.
The document introduces SGC Ruby CUDA, a Ruby library that provides an object-oriented API for CUDA programming to bridge Ruby and CUDA C/C++. It allows performing operations like memory allocation and transfer as well as kernel launching from Ruby. The library aims to make CUDA programming accessible from Ruby while hiding complexity of the low-level CUDA driver and runtime APIs.
1. CUDA provides a programming environment and APIs that allow developers to leverage GPUs for general purpose computing. The CUDA C API offers both a high-level runtime API and a lower-level driver API.
2. CUDA programs define kernels that execute many parallel threads on the GPU. Threads are organized into blocks that can cooperate through shared memory, and blocks are organized into grids.
3. The CUDA memory model includes a hierarchy from fast per-thread registers to slower shared, global, and host memories. This hierarchy allows threads within blocks to communicate efficiently through shared memory.
Graphics Processing Units (GPUs) are specialized electronic circuits designed to rapidly manipulate and alter memory to accelerate the creation of images in a frame buffer intended for output to a display. GPUs have evolved from simple video controllers to massively parallel multi-core processors capable of general purpose computing. Modern GPUs use a single-instruction, multiple-thread (SIMT) architecture and have a parallel programming model that maps computations to thousands of threads to maximize throughput. Programming frameworks like CUDA and OpenCL allow general purpose programming on GPUs by mapping algorithms to their highly parallel structure.
CUDA is a parallel computing platform and programming model developed by Nvidia that allows software developers and researchers to utilize GPUs for general purpose processing. CUDA allows developers to achieve up to 100x performance gains over CPU-only applications. CUDA works by having the CPU copy input data to GPU memory, executing a kernel program on the GPU that runs in parallel across many threads, and copying the results back to CPU memory. Key GPU memories that can be used in CUDA programs include shared memory for thread cooperation, textures for cached reads, and constants for read-only data.
En esta presentación, se comentan las nuevas tendencias en cuanto al aprovechamiento de la potencia de las GPUs para la implementación y ejecución de algoritmos, para resolver problemas complejos.
El documento proporciona información sobre la tecnología GPU utilizada en las tarjetas gráficas. Explica que una GPU es una unidad de procesamiento dedicada al procesamiento de gráficos para aliviar la carga de trabajo de la CPU. Luego describe las diferencias entre las GPU y CPU, así como la arquitectura de las GPU, incluidos los componentes clave como los vértices, píxeles, memoria y shaders. Finalmente, resume la última arquitectura GT200 de nVidia, incluidos sus desafíos de tama
El documento compara las características de hardware de CPUs, GPUs y MIC a lo largo del tiempo. Los resultados muestran que las CPUs han aumentado ligeramente en procesamiento, mientras que las GPUs y MIC han ganado muchos más núcleos. Las GPUs y MIC ofrecen alto rendimiento de FLOPS, pero las CPUs tienen mejor rendimiento secuencial. El MIC de Intel Xeon Phi está cerrando la brecha entre CPUs y GPUs en términos de procesamiento y ancho de banda de memoria.
Este documento introduce la programación paralela y su evolución histórica. Explica cómo la "pared de ladrillo" obligó el cambio a procesadores multi-núcleo y many-core para hacer frente a los límites de rendimiento, potencia y memoria. Describe lenguajes como OpenMP, Pthreads, CUDA y OpenCL para la programación paralela en CPUs y GPUs. Finalmente, enfatiza la importancia de aprender programación paralela dado que la computación paralela está omnipresente en dispositivos modernos.
Este documento explica cómo programar directamente para la GPU utilizando CUDA. CUDA permite ejecutar kernels (funciones) de forma paralela en miles de hilos simultáneos. Un kernel se divide en una malla de bloques de hilos, donde cada bloque se ejecuta en un procesador de la GPU. El documento incluye un ejemplo Hola Mundo en CUDA y concluye que programar para GPU puede acelerar algoritmos que analizan grandes cantidades de datos.
Este documento ofrece consejos sobre qué considerar antes de comprar una computadora. Explica que es importante determinar el uso previsto y el presupuesto disponible. También recomienda evaluar componentes clave como el procesador, la memoria RAM y la tarjeta gráfica, así como considerar actualizaciones futuras. Incluye ejercicios prácticos para comparar especificaciones y precios de diferentes configuraciones.
Computación Heterogénea: Aplicaciones y Modelado de RendimientoUnai Lopez-Novoa
Este documento describe la computación heterogénea y sus aplicaciones y retos. Explica cómo usar diferentes tipos de procesadores como CPUs, GPUs, FPGAs e Intel Xeon Phi para maximizar el rendimiento. Detalla ejemplos de aplicaciones GPGPU como BLAS, FFT y KDE y los retos de eficiencia computacional, energética y herramientas de desarrollo. Finalmente, propone soluciones como OpenCL, OpenACC y aprovechar mejor las herramientas existentes.
El documento describe las características de la memoria DDR3, tarjetas de video y FireWire. DDR3 permite transferencias de datos más rápidas y mayor capacidad de almacenamiento. Las tarjetas de video contienen una GPU, memoria, unidades especializadas y relojes que determinan su rendimiento. FireWire permite conexiones rápidas y en caliente de periféricos.
El documento describe las características y componentes básicos de las tarjetas de video y gráficas. Explica que las tarjetas contienen una unidad de procesamiento gráfico (GPU) que procesa las imágenes, memoria de video para almacenar las imágenes procesadas, y una interfaz como VGA, DVI o S-Video para conectar la tarjeta a una pantalla. También cubre conceptos como tarjetas aceleradoras 2D y 3D, APIs de gráficos como DirectX y OpenGL, y técnicas de render
Este documento presenta los detalles de una computadora de alto rendimiento que el autor está armando para trabajos de diseño gráfico. Explica los componentes elegidos como un monitor LCD, un disco duro SATA, memoria RAM Kingston, una placa base Intel, un procesador dual core Intel, una impresora plotter HP y otros periféricos. El autor concluye que eligió componentes de primera línea debido a los altos requerimientos técnicos de su trabajo, y que el presupuesto total es de $6.610.
El documento presenta los detalles técnicos de los componentes de una computadora de alto rendimiento que será armada para diseño gráfico, incluyendo un monitor LCD, un disco duro SATA, memoria RAM Kingston, una placa base Intel, un procesador dual core Intel, una tarjeta de video Nvidia y una impresora multifunción HP. El autor concluye que eligió componentes de primer nivel debido a los altos requerimientos técnicos para diseño gráfico.
Este documento presenta los detalles de una computadora personal que el autor está armando para su futuro estudio de diseño gráfico. Describe los componentes elegidos como un monitor LCD de 17 pulgadas, un disco duro SATA de 160GB, memoria RAM Kingston de 1GB, una placa base Intel, un procesador dual core Intel Core 2 Duo, una tarjeta de video Nvidia GeForce 6200, una impresora plotter HP, y otros periféricos estándar. El autor concluye que armó esta PC con componentes de primer nivel para cumplir con los requer
El documento lista las partes internas fundamentales de una computadora personal, incluyendo el disco duro, chipset, memoria RAM, ventiladora, fuente de poder, tarjeta madre, microprocesador, batería y bus de datos. También menciona brevemente las tecnologías AMD HyperTransport y Quick Stream.
El documento describe la evolución de los microprocesadores desde el AMD K7 hasta los futuros procesadores Bulldozer y Bobcat. Explica las características clave del AMD K7 como su bus EV6 de 200MHz, caché L1 de 128KB y soporte para multiprocesamiento. También menciona otros procesadores posteriores como Bulldozer diseñado para un TDP de 10 a 100W y Bobcat orientado a bajo consumo de 1 a 10W.
La tarjeta madre es el componente principal de una computadora personal e integra todos los demás componentes. El documento describe los elementos clave a considerar al escoger una tarjeta madre, incluyendo el procesador, memoria cache, puertos y ranuras compatibles, y la posibilidad de placas multi-procesador que pueden admitir múltiples procesadores.
El documento proporciona información sobre varios componentes clave de una computadora, incluyendo monitores, tarjetas madres, unidades centrales de procesamiento (CPU), y modems. Explica la función de cada componente, su historia y desarrollo técnico a lo largo del tiempo. En particular, describe cómo los monitores han evolucionado desde monocromáticos a colores y mayor resolución, y cómo las tarjetas madres han integrado más funciones y ranuras de expansión.
The document provides an overview of accelerator technology and OpenCL. It discusses how accelerators like GPUs use SIMD parallelism to speed up computations by processing multiple data items in parallel. GPUs have thousands of lightweight threads that hide memory latency. OpenCL provides a standardized programming model to access the parallel capabilities of CPUs, GPUs, and other accelerators. It executes kernels across a problem domain for data-parallel applications.
This document discusses using CUDA on GPUs to accelerate map projection calculations. It presents a method for implementing the Universal Transverse Mercator projection on a GPU using CUDA. Experiments show the GPU implementation provides a 6-8x speedup over a CPU version when including data transfer times, and a 70-90x speedup when only considering calculation times. Two task assignment approaches are evaluated, with striped partitioning performing slightly better than a matrix distribution method. Future work is proposed to implement other GIS algorithms on GPUs to take advantage of the significant speed increases possible.
The document introduces SGC Ruby CUDA, a Ruby library that provides an object-oriented API for CUDA programming to bridge Ruby and CUDA C/C++. It allows performing operations like memory allocation and transfer as well as kernel launching from Ruby. The library aims to make CUDA programming accessible from Ruby while hiding complexity of the low-level CUDA driver and runtime APIs.
1. CUDA provides a programming environment and APIs that allow developers to leverage GPUs for general purpose computing. The CUDA C API offers both a high-level runtime API and a lower-level driver API.
2. CUDA programs define kernels that execute many parallel threads on the GPU. Threads are organized into blocks that can cooperate through shared memory, and blocks are organized into grids.
3. The CUDA memory model includes a hierarchy from fast per-thread registers to slower shared, global, and host memories. This hierarchy allows threads within blocks to communicate efficiently through shared memory.
Graphics Processing Units (GPUs) are specialized electronic circuits designed to rapidly manipulate and alter memory to accelerate the creation of images in a frame buffer intended for output to a display. GPUs have evolved from simple video controllers to massively parallel multi-core processors capable of general purpose computing. Modern GPUs use a single-instruction, multiple-thread (SIMT) architecture and have a parallel programming model that maps computations to thousands of threads to maximize throughput. Programming frameworks like CUDA and OpenCL allow general purpose programming on GPUs by mapping algorithms to their highly parallel structure.
CUDA is a parallel computing platform and programming model developed by Nvidia that allows software developers and researchers to utilize GPUs for general purpose processing. CUDA allows developers to achieve up to 100x performance gains over CPU-only applications. CUDA works by having the CPU copy input data to GPU memory, executing a kernel program on the GPU that runs in parallel across many threads, and copying the results back to CPU memory. Key GPU memories that can be used in CUDA programs include shared memory for thread cooperation, textures for cached reads, and constants for read-only data.
En esta presentación, se comentan las nuevas tendencias en cuanto al aprovechamiento de la potencia de las GPUs para la implementación y ejecución de algoritmos, para resolver problemas complejos.
El documento proporciona información sobre la tecnología GPU utilizada en las tarjetas gráficas. Explica que una GPU es una unidad de procesamiento dedicada al procesamiento de gráficos para aliviar la carga de trabajo de la CPU. Luego describe las diferencias entre las GPU y CPU, así como la arquitectura de las GPU, incluidos los componentes clave como los vértices, píxeles, memoria y shaders. Finalmente, resume la última arquitectura GT200 de nVidia, incluidos sus desafíos de tama
El documento compara las características de hardware de CPUs, GPUs y MIC a lo largo del tiempo. Los resultados muestran que las CPUs han aumentado ligeramente en procesamiento, mientras que las GPUs y MIC han ganado muchos más núcleos. Las GPUs y MIC ofrecen alto rendimiento de FLOPS, pero las CPUs tienen mejor rendimiento secuencial. El MIC de Intel Xeon Phi está cerrando la brecha entre CPUs y GPUs en términos de procesamiento y ancho de banda de memoria.
Este documento introduce la programación paralela y su evolución histórica. Explica cómo la "pared de ladrillo" obligó el cambio a procesadores multi-núcleo y many-core para hacer frente a los límites de rendimiento, potencia y memoria. Describe lenguajes como OpenMP, Pthreads, CUDA y OpenCL para la programación paralela en CPUs y GPUs. Finalmente, enfatiza la importancia de aprender programación paralela dado que la computación paralela está omnipresente en dispositivos modernos.
Este documento explica cómo programar directamente para la GPU utilizando CUDA. CUDA permite ejecutar kernels (funciones) de forma paralela en miles de hilos simultáneos. Un kernel se divide en una malla de bloques de hilos, donde cada bloque se ejecuta en un procesador de la GPU. El documento incluye un ejemplo Hola Mundo en CUDA y concluye que programar para GPU puede acelerar algoritmos que analizan grandes cantidades de datos.
Este documento ofrece consejos sobre qué considerar antes de comprar una computadora. Explica que es importante determinar el uso previsto y el presupuesto disponible. También recomienda evaluar componentes clave como el procesador, la memoria RAM y la tarjeta gráfica, así como considerar actualizaciones futuras. Incluye ejercicios prácticos para comparar especificaciones y precios de diferentes configuraciones.
Computación Heterogénea: Aplicaciones y Modelado de RendimientoUnai Lopez-Novoa
Este documento describe la computación heterogénea y sus aplicaciones y retos. Explica cómo usar diferentes tipos de procesadores como CPUs, GPUs, FPGAs e Intel Xeon Phi para maximizar el rendimiento. Detalla ejemplos de aplicaciones GPGPU como BLAS, FFT y KDE y los retos de eficiencia computacional, energética y herramientas de desarrollo. Finalmente, propone soluciones como OpenCL, OpenACC y aprovechar mejor las herramientas existentes.
El documento describe las características de la memoria DDR3, tarjetas de video y FireWire. DDR3 permite transferencias de datos más rápidas y mayor capacidad de almacenamiento. Las tarjetas de video contienen una GPU, memoria, unidades especializadas y relojes que determinan su rendimiento. FireWire permite conexiones rápidas y en caliente de periféricos.
El documento describe las características y componentes básicos de las tarjetas de video y gráficas. Explica que las tarjetas contienen una unidad de procesamiento gráfico (GPU) que procesa las imágenes, memoria de video para almacenar las imágenes procesadas, y una interfaz como VGA, DVI o S-Video para conectar la tarjeta a una pantalla. También cubre conceptos como tarjetas aceleradoras 2D y 3D, APIs de gráficos como DirectX y OpenGL, y técnicas de render
Este documento presenta los detalles de una computadora de alto rendimiento que el autor está armando para trabajos de diseño gráfico. Explica los componentes elegidos como un monitor LCD, un disco duro SATA, memoria RAM Kingston, una placa base Intel, un procesador dual core Intel, una impresora plotter HP y otros periféricos. El autor concluye que eligió componentes de primera línea debido a los altos requerimientos técnicos de su trabajo, y que el presupuesto total es de $6.610.
El documento presenta los detalles técnicos de los componentes de una computadora de alto rendimiento que será armada para diseño gráfico, incluyendo un monitor LCD, un disco duro SATA, memoria RAM Kingston, una placa base Intel, un procesador dual core Intel, una tarjeta de video Nvidia y una impresora multifunción HP. El autor concluye que eligió componentes de primer nivel debido a los altos requerimientos técnicos para diseño gráfico.
Este documento presenta los detalles de una computadora personal que el autor está armando para su futuro estudio de diseño gráfico. Describe los componentes elegidos como un monitor LCD de 17 pulgadas, un disco duro SATA de 160GB, memoria RAM Kingston de 1GB, una placa base Intel, un procesador dual core Intel Core 2 Duo, una tarjeta de video Nvidia GeForce 6200, una impresora plotter HP, y otros periféricos estándar. El autor concluye que armó esta PC con componentes de primer nivel para cumplir con los requer
El documento lista las partes internas fundamentales de una computadora personal, incluyendo el disco duro, chipset, memoria RAM, ventiladora, fuente de poder, tarjeta madre, microprocesador, batería y bus de datos. También menciona brevemente las tecnologías AMD HyperTransport y Quick Stream.
El documento describe la evolución de los microprocesadores desde el AMD K7 hasta los futuros procesadores Bulldozer y Bobcat. Explica las características clave del AMD K7 como su bus EV6 de 200MHz, caché L1 de 128KB y soporte para multiprocesamiento. También menciona otros procesadores posteriores como Bulldozer diseñado para un TDP de 10 a 100W y Bobcat orientado a bajo consumo de 1 a 10W.
La tarjeta madre es el componente principal de una computadora personal e integra todos los demás componentes. El documento describe los elementos clave a considerar al escoger una tarjeta madre, incluyendo el procesador, memoria cache, puertos y ranuras compatibles, y la posibilidad de placas multi-procesador que pueden admitir múltiples procesadores.
El documento proporciona información sobre varios componentes clave de una computadora, incluyendo monitores, tarjetas madres, unidades centrales de procesamiento (CPU), y modems. Explica la función de cada componente, su historia y desarrollo técnico a lo largo del tiempo. En particular, describe cómo los monitores han evolucionado desde monocromáticos a colores y mayor resolución, y cómo las tarjetas madres han integrado más funciones y ranuras de expansión.
El documento proporciona información sobre los componentes de una computadora. Explica que el monitor muestra las imágenes generadas por la computadora y ha evolucionado desde monitores monocromáticos hasta monitores a color con mayor resolución. La tarjeta madre conecta los diferentes componentes de la computadora como la CPU, tarjetas de video y memoria. La CPU o unidad central de procesamiento interpreta las instrucciones de los programas. El modem convierte señales digitales a analógicas para su transmisión a través de líneas telefónicas.
El documento proporciona definiciones e historias breves de varios componentes clave de una computadora, incluyendo el monitor, la tarjeta madre, la CPU, el modem y las ranuras de expansión en la tarjeta madre. Explica cómo estos componentes funcionan juntos para permitir que una computadora procese y muestre información.
El documento proporciona definiciones e historias breves de varios componentes clave de una computadora, incluyendo el monitor, la tarjeta madre, la CPU, el modem y las ranuras de expansión en la tarjeta madre. Explica cómo estos componentes funcionan juntos para permitir que una computadora procese y muestre información.
Este documento proporciona definiciones e historias breves sobre varios componentes clave de una computadora, incluyendo el monitor, tarjeta madre, CPU, y modem. Explica cómo estos dispositivos funcionan y cómo han evolucionado a lo largo del tiempo, desde los primeros monitores monocromáticos hasta los estándares modernos como VGA, PCI y USB.
Similar a Computación paralela con gp us cuda (20)
1. INTRODUCCIÓN A LA
COMPUTACIÓN PARALELA CON
GPUS
Sergio Orts Escolano sorts@dtic.ua.es
Vicente Morell Giménez vmorell@dccia.ua.es
Universidad de Alicante
Departamento de tecnología informática y computación
2. Contenido
Introducción a la computación
paralela con GPU,s
GPU
Paralelismo
GPGPU
Introducción a CUDA
Aplicaciones
Conclusiones
3. GPU
Introducción a la computación paralela con
GPU,s
Unidad de procesamiento gráfico (GPUs) son
procesadores de varios núcleos que ofrecen alto
rendimiento
Procesador dedicado al procesamiento de gráficos
u operaciones de coma flotante
4. GPU
Introducción a la computación paralela con
GPU,s
Hoy en día las GPU son muy potentes y pueden
incluso superar la frecuencia de reloj de una CPU
antigua (más de 800MHz)
Arquitecturas Many-core con una cantidad ingente
de núcleos que realizan operaciones sobre múltiples
datos
5. Contenido
Introducción a la computación paralela con
GPU,s
GPU
Paralelismo
GPGPU
Introducción a CUDA
Aplicaciones
Conclusiones
6. Paralelismo
Introducción a la computación paralela con
GPU,s
El paralelismo es una forma de computación en la
cual varios cálculos pueden realizarse
simultáneamente.
Basado en el principio de dividir los problemas
grandes para obtener varios problemas pequeños,
que son posteriormente solucionados en paralelo.
(Divide y vencerás)
7. SIMD
Introducción a la computación paralela con
GPU,s
Todos los núcleos ejecutan la misma instrucción al mismo tiempo.
Solo se necesita decodificar la instrucción una única vez para todos los
núcleos
Ejemplo: Unidades vectoriales: suma, producto de vectores, etcétera
• SIMD: Una instrucción múltiples datos
8. Paralelismo
Introducción a la computación paralela con
GPU,s
Computación paralela sobre GPUs explicado por los
cazadores de mitos: CPU vs GPU
VÍDEO INCRUSTADO
NVIDIA_ Adam and Jamie explain parallel
processing on GPU's(360p_H.264-AAC)
9. Contenido
Introducción a la computación paralela con
GPU,s
GPU
Paralelismo
GPGPU
Introducción
CPU y GPU
Evolución
Introducción a CUDA
Aplicaciones
Conclusiones
10. GPGPU
Introducción a la computación paralela con
GPU,s
Computación de propósito general sobre
procesadores gráficos
Cómputo de aplicaciones tradicionalmente
ejecutadas sobre CPUs
Aprovechamiento capacidades GPU:
Grandes vectores de datos
Paralelismo de grano fino SIMD
Baja latencia en operaciones en punto flotante
11. Históricamente GPGPU
Introducción a la computación paralela con
GPU,s
Restricciones:
APIs gráficas complejas
Capacidades de los Shader reducida
Comunicación limitada
Entre píxeles
Conjunto de instrucciones
Falta de operaciones con enteros
12. Evolución GPU
Introducción a la computación paralela con
GPU,s
1. Ordenadores sin tarjeta gráfica.
2. Aparición de GPUs para la representación en pantalla.
3. GPUs para procesamiento gráfico: industria del
videojuego (3dfx,NVIDIA,ATI).
4. En 2004 surge la idea de utilizar las GPU para
computación de alto rendimiento (HPC).
5. 2007. NVIDIA ve oportunidad en el mercado del HPC y
desarrolla CUDA. (Lenguaje específico para aprovechar
la capacidad de las GPU).
6. Actualmente NVIDIA ha tenido éxito en la computación
GPGPU. Los supercomputadores top utilizan clústers de
GPUs para aumentar su potencia computacional.
13. Oportunidad de mercado
Introducción a la computación paralela con
GPU,s
Si hay un mercado suficientemente grande, alguien
desarrollará el producto.
La oportunidad de ganar dinero dirige la
computación, así como la tecnología.
Se necesitan economías de escala para producir de
forma barata, algo que solo pocas empresas
pueden permitirse.
Observar tendencias de mercado
14. El gran desarrollo de las GPU
Introducción a la computación paralela con
GPU,s
La evolución de las tarjetas gráficas ha venido
acompañado de un gran crecimiento en el mundo
de los videojuegos y las aplicaciones 3D
Gran producción de chips gráficos por parte de
grandes fabricantes:
NVIDIA
AMD(ATI)
IBM: desarrollo en colaboración con Sony y Toshiba
procesadores Cell
Intel: Desarrollo chips GPU Larrabee
15. Comparación CPU y GPU
Introducción a la computación paralela con
GPU,s
Intel Core 2 / Xeon / i7
4-6 núcleos MIMD
Pocos registros, cache multi-nivel
10-30 GB/s ancho de banda hacia la memoria principal
NVIDIA GTX480
512 núcleos, organizados en 16 unidades SM cada una con
32 núcleos.
Muchos registros, inclusión cachés nivel 1 y 2.
5 GB/s ancho de banda hacia el procesador HOST.
180 GB/s ancho de banda memoria tarjeta gráfica.
18. Contenido
Introducción a la computación paralela con
GPU,s
Introducción a CUDA
Hardware
Software
Manejo de la memoria
Manejo de los hilos
Librerías
Cómo afrontar el desarrollo de una nueva aplicación
19. Hardware: Ubicación GPU
Introducción a la computación paralela con
GPU,s
La GPU se sitúa sobre una placa gráfica pci-e dentro de un
computador con uno o varios núcleos.
23. Introducción a la computación paralela con
GPU,s
A nivel de GPU, los detalles dependen de la generación
de los chips.
Primeras generaciones
GeForce Series 8,9, GTX2XX
Tesla C1060, S1070 para HPC, sin salida gráfica, más
memoria.
Generaciones actuales
Nueva arquitectura Fermi: GeForce GTX4XX
Tesla C2050,S2050 para HPC.
Hardware: Generaciones de chips gráficos
24. Hardware: Características 1ª
generación
Introducción a la computación paralela con
GPU,s
Primeras generaciones:
Compuestas de SM “Streaming Multiprocessor”:
8 núcleos, cada uno con 2048 registros
Hasta 128 hilos por núcleo
16 KB de memoria compartida
8 KB de caché para constantes
Diferentes chips tienen distinto número de SM,s
Modelo SM,s Ancho de banda
GTX260 27 110 GB/S
GTX285 30 160 GB/S
Tesla C1060 30 102 GB/S
25. Introducción a la computación paralela con
GPU,s
Generación actual: Fermi
Cada SM “Streaming Multiprocessor”:
32 núcleos, cada uno con 1024 registros
Hasta 48 hilos por núcleo
64 KB de memoria compartida / Caché L1
Cache L2 común a los SM.
8 KB de caché para constantes
Modelo SM,s Ancho de banda
GTX470 14 134 GB/s
GTX480 15 180 GB/s
Tesla C2050 14 140 GB/S
Hardware: Características generación
actual
26. SIMT: Una instrucción múltiples hilos
Introducción a la computación paralela con
GPU,s
Característica clave de los núcleos dentro de un SM.
Todos los núcleos ejecutan la misma instrucción
simultáneamente pero con distintos datos
Similar a la computación en los supercomputadores
CRAY
Mínimo de 32 hilos realizando la misma tarea (casi) al
mismo tiempo
Técnica tradicional en el procesamiento gráfico y en
muchas aplicaciones científicas
27. Múltiples hilos
Introducción a la computación paralela con
GPU,s
Gran cantidad hilos clave alto rendimiento
No penalización cambios de contexto. Cada hilo tiene
sus propios registros lo cual limita el número máximo de
hilos activos.
Los hilos se ejecutan en los SM en grupos de 32
denominados “WARPS”. La ejecución alterna entre
“warps” activos y “warps” temporalmente inactivos.
28. Múltiples hilos
Introducción a la computación paralela con
GPU,s
Gran cantidad hilos clave alto rendimiento
No penalización cambios de contexto. Cada hilo tiene
sus propios registros lo cual limita el número máximo de
hilos activos.
Los hilos se ejecutan en los SM en grupos de 32
denominados “WARPS”. La ejecución alterna entre
“warps” activos y “warps” temporalmente inactivos.
29. Contenido
Introducción a la computación paralela con
GPU,s
Introducción a CUDA
Hardware
Software
Manejo de la memoria
Manejo de los hilos
Librerías
Cómo afrontar el desarrollo de una nueva aplicación
30. Software: Flujo de ejecución
Introducción a la computación paralela con
GPU,s
En el nivel más alto encontramos un proceso sobre la
CPU (Host) que realiza los siguientes pasos:
1. Inicializa GPU
2. Reserva memoria en la parte host y device
3. Copia datos desde el host hacia la memoria device
4. Lanza la ejecución de múltiples copias del kernel
5. Copia datos desde la memoria device al host
6. Se repiten los pasos 3-5 tantas veces como sea necesario
7. Libera memoria y finaliza la ejecución proceso maestro
CPU GPU
init()
cudaMalloc()
<<>>kernel()
cudaMemCpy()
31. Software: Dentro de la GPU
Introducción a la computación paralela con
GPU,s
En el nivel más bajo dentro de la GPU:
Cada copia del programa se ejecuta sobre un SM
Si el número de copias excede el número máximo de
SMs, entonces más de uno se ejecutará al mismo tiempo
sobre cada SM hasta ocupar todos los recursos, en ese
caso esperarán para su posterior ejecución.
No hay garantía en el orden de ejecución en el cual
cada copia se ejecuta
32. Software: CUDA
Introducción a la computación paralela con
GPU,s
CUDA (Compute Unified Device Architecture)
Hace referencia tanto a un compilador como a un
conjunto de herramientas de desarrollo creadas por
NVIDIA
Basado en C con algunas extensiones
Soporte C++ , Fortran. Envoltorios para otros lenguajes:
.NET, Python, Java, etcétera
Gran cantidad de ejemplos y buena documentación, lo
cual reduce la curva de aprendizaje para aquellos con
experiencia en lenguajes como OpenMPI y MPI.
Extensa comunidad de usuarios en los foros de NVIDIA
33. Software: Programación CUDA
Introducción a la computación paralela con
GPU,s
Un programa en cuda tiene dos partes:
Código Host en la CPU que hace interfaz con la GPU
Código Kernel que se ejecuta sobre la GPU
En el nivel host, existen dos APIs
Runtime: Simplificada, más sencilla de usar.
Driver: más flexible, más compleja de usar.
La versión driver no implica más rendimiento, sino más
flexibilidad a la hora de trabajar con la GPU
34. Software: Conceptos básicos
Introducción a la computación paralela con
GPU,s
Bloque:
Agrupación de hilos
Cada bloque se ejecuta sobre un solo SM
Un SM puede tener asignados varios bloques
35. Software: Conceptos básicos
Introducción a la computación paralela con
GPU,s
Kernel: es una función la cual al ejecutarse lo hará
en N distintos hilos en lugar de en secuencial.
Grid: forma de estructurar los bloques en el kernel
Bloques: 1D,2D
Hilos/Bloque: 1D,2D o 3D
36. Software: Ejecución
Introducción a la computación paralela con
GPU,s
Cada bloque se divide
en warps de 32 hilos
Los hilos de un warp se
ejecutan físicamente en
paralelo
Aprovechamiento
pipeline gpu
Ejecución paralela sobre
los 32 núcleos del SM
37. Contenido
Introducción a la computación paralela con
GPU,s
Introducción a CUDA
Hardware
Software
Manejo de la memoria
Manejo de los hilos
Librerías
Cómo afrontar el desarrollo de una nueva aplicación
38. Memoria
Introducción a la computación
paralela con GPU,s
Desafío clave en las arquitectura modernas de
computadoras
No tiene sentido aumentar la capacidad de computo si
la memoria no está a la altura
Las aplicaciones grandes trabajan con mucha memoria
La memoria rápida es muy cara de fabricar
Aspectos que obligan a un sistema jerárquico de
memoria
40. Jerarquía de memoria:
Principio de localidad
Introducción a la computación paralela con
GPU,s
La velocidad de ejecución se basa en la explotación
de la localidad de los datos:
Localidad temporal: un dato usado recientemente es
probable que se use otra vez a corto plazo
Localidad espacial: es probable usar los datos
adyacentes a los usados, por ello se usan caches para
guardar varios datos en una línea del tamaño del bus
41. Caché Arquitectura Fermi
Introducción a la computación paralela con
GPU,s
Líneas de caché de 128 bytes (32 floats o 16 doubles)
Bus de memoria de 384 bits hacia L2
Ancho de banda de mas de 160 GB/s
Una caché L2 de 384kB compartida por todos los
multiprocesadores (SM)
Cada SM tiene una caché L1 de 16kB o 48 kB (64 kb a
repartir entre L1 y la memoria compartida)
No hay coherencia global de cachés como en las CPUs
así que debería evitarse que varios bloques actualicen
los mismos elementos de la memoria global
42. Importancia de la localidad GPU
Introducción a la computación paralela con
GPU,s
1 Tflops GPU (para precisión simple)
100 GB/s entre la memoria y la caché L2
128 bytes/línea
100 Gb/s ≈ 800M líneas/s ≈ 24 Gfloat/s
En el peor caso, cada operación(flop) necesita 2 entradas y una
salida, si pertenecen a líneas diferentes entonces ≈ 260 Mflops
para conseguir una velocidad de 500Gflops son necesarios unas 20
operaciones por cada float transferido.
Incluso con una buena implementación, muchos algoritmos no logran
superar esta limitación.
45. Tipos de memoria:
Memoria Global
Introducción a la computación paralela con
GPU,s
Declarada y manejada desde la parte Host
Ubicación para los datos de la aplicación,
normalmente vectores y las variables globales del
sistema.
Es la memoria compartida por todos los SM
46. Tipos de memoria:
Memoria Constante
Introducción a la computación paralela con
GPU,s
Sus valores no pueden ser cambiados.
Optimizada para lecturas, su uso aumenta
notablemente la velocidad del sistema.
Su velocidad es similar a los registros sin necesidad
de ocuparlos
debido a que disponen de su propia
mem. caché.
47. Tipos de memoria:
Registros
Introducción a la computación paralela con
GPU,s
Ubicación para las variables usadas en los kernels
Cada SM dispone de un numero de registros a
repartir entre el numero de hilos
En la arquitectura Fermi:
32k registros de 32 bits por SM
63 registros por hilo, unos 1536 hilos
Para grandes aplicaciones,
su manejo es esencial
48. Tipos de memoria:
Memoria Local
Introducción a la computación paralela con
GPU,s
Destinada a la información local de cada hilo.
Para variables o vectores locales que no caben en
sus respectivos registros
Tiene bastante capacidad y su velocidad es como
la mem. Global.
Las nuevas arquitecturas han mejorado bastante su
uso mediante las caches L1/L2.
49. Tipos de memoria:
Memoria Compartida
Introducción a la computación paralela con
GPU,s
Memoria dedicada a cada multiprocesador
Compartida por todos los hilos de un mismo bloque,
útil para compartir información
Puede necesitar instrucciones de control de acceso y
flujo para controlar los accesos.
Normalmente se copian los datos desde la mem.
global en la memoria
compartida
50. Contenido
Introducción a la computación paralela con
GPU,s
Introducción a CUDA
Hardware
Software
Manejo de la memoria
Manejo de los hilos
Librerías
Cómo afrontar el desarrollo de una nueva aplicación
51. Hilos CUDA
Introducción a la computación
paralela con GPU,s
Los hilos de CUDA se distribuyen automáticamente
entre los SM
Para identificar el hilo y poder trabajar con su
parte se usan las variables:
int mi_ID=blockIdx.x * blockDim.x + threadIdx.x
52. Control de flujo
Introducción a la computación paralela con
GPU,s
Todos los hilos de un mismo warp ejecutan al mismo
tiempo la misma instrucción
Los kernels con varios posibles caminos se preparan
para que todos ejecuten la misma instrucción pero
cada hilo ejecute su respectiva funcionalidad
if (x < 0.0)
z=x-2.0;
else
z=sqrt(x);
53. Control de flujo
Introducción a la computación paralela con
GPU,s
Para resolver los diferentes caminos, el compilador
predica las instrucciones:
De esta forma todos los hilos ejecutan las mismas
instrucciones.
if (x < 0.0)
z=x-2.0;
else
z=sqrt(x);
p = (x<0.0);
p: z = x-2.0;
!p: z = sqrt(x);
54. Sincronización
Introducción a la computación paralela con
GPU,s
Para sincronizar los hilos de forma interna al kernel,
se utiliza la instrucción:
__syncthreads()
Si se utiliza código condicional hay que asegurarse
que todos los hilos alcancen la instrucción de
sincronización
55. Operaciones Atómicas
Introducción a la computación paralela con
GPU,s
Hay operaciones que necesitan asegurar que se
van a ejecutar una tras otra en los diferentes hilos
necesarias para trabajar con la memoria
compartida
Existen varias operaciones atómicas:
Incrementos, mínimos, máximos…
__shared__ int cont;
…
cont++; //dentro de un kernel
56. Ejemplo de Kernel
Introducción a la computación
paralela con GPU,s
__global__ void sharedABMultiply(float *a,float* b,float *c,int N){
__shared__ float aTile[TILE_DIM][TILE_DIM],
bTile[TILE_DIM][TILE_DIM];
int row = blockIdx.y * blockDim.y + threadIdx.y;
int col = blockIdx.x * blockDim.x + threadIdx.x;
float sum = 0.0f;
aTile[threadIdx.y][threadIdx.x]=a[row*TILE_DIM+threadIdx.x];
bTile[threadIdx.y][threadIdx.x] = b[threadIdx.y*N+col];
__syncthreads();
for (int i = 0; i < TILE_DIM; i++) {
sum += aTile[threadIdx.y][i]* bTile[i][threadIdx.x];
}
c[row*N+col] = sum;
}
Mem compartida
Indicación kernel
registros
Identifadores hilo
Barrera para todos los hilos del mismo bloque
57. Contenido
Introducción a la computación paralela con
GPU,s
Introducción a CUDA
Hardware
Software
Manejo de la memoria
Manejo de los hilos
Librerías
Cómo afrontar el desarrollo de una nueva aplicación
58. Librerías basadas en CUDA
Introducción a la computación paralela con
GPU,s
Se desarrollaron muchas aplicaciones especificas
Mas tarde, comenzaron a aparecer varias librerías
sobre CUDA para varios ámbitos:
CUBLAS: operaciones sobre algebra lineal
CUFFT : transformadas rápidas de Fourier
CUDPP: operaciones paralelas primitivas
59. Librerías basadas en CUDA
Introducción a la computación paralela con
GPU,s
Thrust: desarrollada por uno de los desarrolladores
de CUDA e incluida en la versión 4.
Ofrece una abstracción de la programación de los
kernel
Implementa varios algoritmos paralelos de datos
Máximo, suma, Multiplicación de vectores, …
60. Librerías basadas en CUDA
Introducción a la computación paralela con
GPU,s
CUVILib: librería que implementa sobre GPU
algoritmos de visión por computador y procesamiento
de imágenes.
Cálculo de flujo de
movimiento:
Lucas and Kanade
Algorithm
61. Contenido
Introducción a la computación paralela con
GPU,s
Introducción a CUDA
Hardware
Software
Manejo de la memoria
Manejo de los hilos
Librerías
Cómo afrontar el desarrollo de una nueva aplicación
62. Diseñar aplicación con CUDA
Introducción a la computación paralela con
GPU,s
1) La aplicación a desarrollar…
Hay algo similar en el SDK de CUDA?
En los foros de CUDA hay algún proyecto relacionado?
Hay algo en la red ? (google)
2) ¿Qué partes son paralelizables?
¿tiene suficiente paralelismo?
CUDA es eficiente cuando trabaja con miles de hilos
63. Diseñar aplicación con CUDA
Introducción a la computación paralela con
GPU,s
3) Dividir el problema en funcionalidades
diferenciadas:
Alguna de las partes esta ya implementada?
Diseñar un kernel para cada funcionalidad..
Puede servir alguna de las librerías ya
implementadas?
4) Va a existir mucha divergencia en los warp?
Hay mucho código condicional a las entradas?
La máxima eficiencia se consigue con la poca
divergencia
64. Diseñar aplicación con CUDA
Introducción a la computación paralela con
GPU,s
5) Habrá un problema con el ancho de banda?
El tiempo de trasferir la información entre la CPU y la
GPU se verá recompensado por la ventaja de
paralelizar el problema?
Para aplicaciones para varios kernels, es apropiado
utilizar ciertas funciones en la GPU o conviene mover
toda la funcionalidad en la GPU
Siempre tener en cuenta que el número de operaciones
por dato debe ser alto para compensar las
transferencias
65. Diseñar aplicación con CUDA
Introducción a la computación paralela con
GPU,s
6.a) ¿El problema es de computación intensiva?
No hay que preocuparse tanto por la optimización de
memoria
Cuidado si los cálculos son doubles
6.b) ¿O sin embargo es para trabajar con muchos
datos?
Hay que utilizar muy bien los niveles de memoria
66. Contenido
Introducción a la computación paralela con
GPU,s
GPU
Paralelismo
GPGPU
Introducción a CUDA
Aplicaciones
Conclusiones
67. Aplicaciones en CUDA
Introducción a la computación paralela con
GPU,s
En la pagina de www.nvidia.com podemos encontrar una larga lista
de aplicaciones especificas y modificaciones de programas para
aprovechar esta tecnología, para diferentes ámbitos de aplicación:
Gobierno y defensa
Dinámica molecular
Bioinformática
Electrodinámica y electromagnetismo
Imágenes medicas
Combustibles y gases
Computación financiera
Extensiones de Matlab
Tratamiento de video y visión por computador
Modelado del tiempo y los océanos
68. Aplicaciones en CUDA
Introducción a la computación paralela con
GPU,s
Actualmente estamos trabajando en:
Visión:
Aceleración algoritmos redes neuronales auto-
organizativas (GNG,NG)
Reconstrucción escenarios 3D
Representación 3D objetos
69. Aplicaciones en CUDA
Introducción a la computación paralela con
GPU,s
Actualmente estamos trabajando en:
CAD/CAM: Calculo de rutas de maquinas-
herramienta para recrear modelos digitales
Y axis
Z axis
X axis
70. Contenido
Introducción a la computación paralela con
GPU,s
GPU
Paralelismo
GPGPU
Introducción a CUDA
Aplicaciones
Conclusiones
71. CUDA para acelerar algoritmos
Buenas prácticas :
Paralelizar la mayor parte posible del algoritmo.
Disminuir las operaciones de memoria entre device y host
Organizar la memoria de forma que los accesos paralelos
sean óptimos:
Copiando partes de la memoria global a la compartida
Transformando los datos para que los accesos sean concurrentes
Alinear y conjuntar la memoria para que en menos accesos se
lean los datos necesarios.
Usar medidas tanto de tiempo como de ancho de banda
utilizado para optimizar los algoritmos.
72. Conclusiones
CUDA es una tecnología que permite obtener
grandes rendimientos para problemas con un alto
paralelismo.
Hay que tener claro su funcionamiento para saber
si es adecuado y obtener el mayor rendimiento
posible.
Programar en CUDA es fácil, pero no lo es obtener
rendimiento.