20 research outputs found

    Adaptación de algoritmos de aprendizaje automático para su ejecución sobre GPUs

    Full text link
    [ES] El presente trabajo de final de grado implementa redes neuronales en Unidades de Procesamiento Gráfico (GPU) manejadas con tecnología CUDA bajo C++ para efectuar el reconocimiento de cifras manuscritas. El sistema utilizado demuestra ser eficiente y aplicable a múltiples programas de Inteligencia Artificial.[CA] El present treball de final de grau implementa xarxes neuronals en Unitats de Processament Gràfic (GPU) manejades amb tecnología CUDA sota C++ per a efectuar el reconeixement de xifres manuscrites. El sistema utilitzat demostra ser eficient i aplicable a múltiples programes d'Intel·ligència Artificial.[EN] This project implements neural networks in Graphical Processing Units (GPU) managed with CUDA technology under C++ in order to recognize handwritten digits. The system used proves to be efficient and applicable to multiple Artificial Intelligence programs.Grau Moreso, V. (2015). Adaptación de algoritmos de aprendizaje automático para su ejecución sobre GPUs. http://hdl.handle.net/10251/55389.TFG

    Avaluació de la tecnologia de les GPUs

    Get PDF
    En el projecte s'ha dut a terme un estudi sobre la tecnologia que aporten les targetes gràfiques (GPU) dins l'àmbit de programació d'aplicacions que tradicionalment eren executades en la CPU o altrament conegut com a GPGPU. S'ha fet una anàlisi profunda del marc tecnològic actual explicant part del maquinari de les targetes gràfiques i de què tracta el GPGPU. També s'han estudiat les diferents opcions que existeixen per poder realitzar els tests de rendiment que permetran avaluar el programari, quin programari està dissenyat per ser executat amb aquesta tecnologia i quin és el procediment a seguir per poder utilitzar-los. S'han efectuat diverses proves per avaluar el rendiment de programari dissenyat o compatible d'executar en la GPU, realitzant taules comparatives amb els temps de còmput. Un cop finalitzades les diferents proves del programari, es pot concloure que no tota aplicació processada en la GPU aporta un benefici. Per poder veure millores és necessari que l'aplicació reuneixi una sèrie de requisits com que disposi d'un elevat nombre d'operacions que es puguin realitzar en paral lel, que no existeixin condicionants per a l'execució de les operacions i que sigui un procés amb càlcul aritmètic intensiu.En el proyecto se ha llevado a cabo un estudio sobre la tecnología que aportan las tarjetas gráficas (GPU) dentro del ámbito de programación de aplicaciones que tradicionalmente eran ejecutadas en la CPU o también conocido como GPGPU. Se ha realizado un análisis profundo del marco tecnológico actual explicando parte del hardware de las tarjetas gráficas y de qué trata el GPGPU. También se han estudiado las diferentes opciones que existen para poder realizar las pruebas de rendimiento que servirán para evaluar el software, qué software está diseñado para ser ejecutado con esta tecnología y cuál es el procedimiento a seguir para poder utilizarlos. Se han efectuado diferentes pruebas para poder evaluar el rendimiento del software diseñado o compatible de ejecutar en la GPU, realizando tablas comparativas con los tiempos de cómputo. Una vez realizadas las pruebas de software, se concluye que no todas las aplicaciones procesadas en la GPU aportan beneficios. Para poder ver las mejoras es necesario que la aplicación reúna una serie de requisitos como disponer de un elevado número de operaciones que se puedan realizar en paralelo, que no existan condicionantes para la ejecución de las operaciones y que sea un proceso de cálculo intensivo.This project has carried out a study about the technology that brings the graphics cards (GPU) within the scope of programming applications which traditionally were executed in the CPU or also known as GPGPU. It has made a thorough analysis of the current technological framework explaining the hardware side of the graphics cards and what GPGPU is. It has also studied the different options available to performance testing which will help to evaluate the software, decide which software is designed to run with this technology and what is the procedure to use it. There has been carried out various tests to evaluate performance or compatible software designed to run on the GPU, making comparative computation times tables. Once finished the software testing, it is concluded that not all applications processed on the GPU provide benefits. To see the improvements it is necessary that the program satisfies certain requirements such as having a high number of operations which can be performed in parallel, there are no conditions for execution operations and the process has to be a compute-intensive process

    High-performance simulation of the 16th Hilbert's problem

    Get PDF
    L'objectiu principal d'aquest treball de fi de grau és abordar numèricament la segona part del famós problema 16 de Hilbert, en particular la detecció de cicles límit en sistemes bidimensionals d'equacions diferencials ordinàries quadràtiques. Hem desenvolupat i verificat amb èxit un algorisme d'alt rendiment per a abordar aquest problema de manera concurrent, aprofitant les capacitats computacionals de les unitats de processament gràfic (GPU) modernes. En aquest projecte hem estudiat el rendiment i la precisió de diferents mètodes numèrics per a resoldre el sistema d'equacions diferencials, i hem triat el millor algorisme amb els paràmetres òptims per a obtenir la millor convergència i rendiment. Hem desenvolupat i programat un solucionador numèric basat en l'esquema d'integració Runge-Kutta de quart ordre. A més, hem aplicat el mapatge de Poincaré per a identificar els cicles límit en els sistemes utilitzant diferents esquemes d'interpolació. Considerem exemples coneguts amb quatre cicles límit i els vam reproduir amb èxit. Primer implementem el codi de manera seqüencial en MATLAB, i posteriorment desenvolupem una implementació paral·lela en Julia utilitzant la biblioteca Cuda.jl. Comprovem la precisió del solucionador en el cas analític d'un sistema d'oscil·ladors harmònics circulars. Després d'això, vam ser capaços de replicar amb precisió l'exemple proporcionat en [REF]. El codi desenvolupat és de lliure accés en el repositori allotjat en github.com/fiberfranch/hilberts-16 i és útil per a trobar els cicles límit de qualsevol sistema ODE quadràtic de manera eficient utilitzant les GPU.The main goal of this Bachelor's thesis is to numerically tackle the second part of the famous Hilbert's 16th problem, particularly the detection of limit cycles in two-dimensional systems of quadratic ordinary differential equations (ODEs). We developed and successfully verified a high-performance algorithm to concurrently target this problem, harvesting the computational capabilities of modern Graphical Processing Units (GPUs). In this project we studied the performance and precision of different numerical methods for solving the system of differential equations, and have chosen the best algorithm with optimal parameters for the best convergence and performance. We developed and programmed a numerical solver based on the fourth-order Runge-Kutta integration scheme. In addition, we applied Poincaré mapping for identifying the limit cycles in the systems using different interpolation schemes. We considered known examples with four limit cycles and successfully reproduced them. We first implemented the code sequentially in MATLAB, and later developed a parallel implementation in Julia using the library Cuda.jl. We benchmarked the accuracy of the solver in the analytically solvable case of a circular harmonic oscillator system. After that, we were able to accurately replicate the example provided in [REF]. The developed code is freely accessible in repository hosted in github.com/FiberFranch/Hilberts-16 and is useful for finding the limit cycles of any quadratic ODE system efficiently using GPUs

    Simulació dels efectes d'erosió a una dàrsena portuària per efecte de les embarcacions

    Get PDF
    El present treball consisteix en la realització d’un model numèric que pretén reproduïr un model assajat en una piscina de proves hidrodinàmiques. Per tal d’aconseguir-ho s’ha après a fer servir el programa GiD amb el tipus de problema corresponent per aquest cas concret. S’han seguit els manuals i tutorials que proporciona les pagines del programa i a més s’han realitzat consultes a un expert del programa. Per tal reproduir els resultats s’han realitzat dos tipus de models, un per comprovar el comportament de del fluid i altre pel efecte erosiu produïda pel flux resultant de les hèlixs propulsores. Per dissenyar correctament els models es van establir simplificacions i idealitzacions dels models assajats. Es va crear tota la geometria, tractant sempre d’optimitzar-la per tenir un mallat més eficient. Es va haver de dur a terme diverses correccions i proves del mateix model amb petites modificacions per aconseguir resultats acceptables. La comprovació del resultats va ser possible gràcies als coneixements adquirits d’assignatures que han estat superades al llarg de la carrera. Finalment, es va poder aconseguir resultats vàlids pel model hidrodinàmic. Però pel cas de l’efecte erosiu, on es fan servir partícules DEM al mallat, no ha estat possible la seva resolució amb resultats que es consideressin acceptables. Tot i això es considera que existeix futur en la recerca d’aquest tipus de problemes mitjançant càlculs numèrics, ja que només cal implementar les millores que ja s’estan desenvolupant dels programes existents en el estudi de integració de fluids y partícules DEM

    El requisito de sostenibilidad en una aplicación de medición de Impacto

    Get PDF
    El propósito de este trabajo es responder a la pregunta sobre la viabilidad de ejecutar una aplicación, cuyas tareas principales son la comunicación con una base de datos, en diferentes entornos. Tradicionalmente, la ejecución de un programa viene gestionada por una Unidad de Procesamiento Central (CPU). Sin embargo, se ha observado el gran potencial de las Unidades de Procesamiento Gráfico (GPU) para ejecutar tareas de mayor complejidad o que requieren un procesado de datos muy elevado. Con este proyecto quieren observarse las implicaciones que supone ejecutar la misma aplicación en un escenario, donde la mayor parte de tareas las ejecuta una GPU. Finalmente, se tendrán en cuenta las implicaciones energéticas y de rendimiento para determinar si esta transición es realmente una opción viable.The aim of this project is to answer the question on the viability of running an application, of which the main tasks consist in communicating with a database, in different environments. Traditionally, the Central Processing Unit (CPU) oversees the execution of a program. Nonetheless, Graphic Processing Units (GPU) have shown a high potential when processing big amounts of data or more complex information. The goal is to observe the different implications that migrating from one environment to another, will have. All in all, energy usage and performance implications will be considered, to determine whether this alternative is a viable solution, or not

    From high-level languages to dataflow circuits

    Get PDF
    La manera tradicional de computar alguna cosa és creant software que es pot executar en la unitat de processament central (CPU) d'un processador. El problema és que una CPU no té la capacitat de còmput suficient per executar correctament aplicacions pertanyents a certs àmbits, com per exemple l'aprenentatge profund o la mineria de cripto-monedes. Amb el pas del temps, les unitats de processament gràfic (GPUs) es van començar a utilitzar en altres camps més enllà dels ideats inicialment (p.e. videojocs), permetent l'execució d'aquelles aplicacions que les CPU no podien. No obstant, existeix una altra manera per executar programes o algorismes, la qual és molt més eficient en el consum de temps i energia que executar software en CPUs i GPUs. Aquesta altra manera consisteix a dissenyar i implementar directament un circuit hardware per executar alguna cosa en particular, en lloc d'utilitzar un circuit de propòsit general que permet executar qualsevol cosa. Per aquesta raó, l'objectiu d'aquest projecte és el de desenvolupar una eina de síntesis que generi circuits de data flow a partir de llenguatges de programació d'alt nivell. Aquests circuits es poden implementar en tecnologies com les matrius de portes programables (FPGAs). Aquest projecte crearà el back end d'un compilador, amb l'ajuda d'algun front end d'un compilador que permeti la traducció de codi d'alt nivell en una representació intermèdia, com per exemple LLVM. La idea és tenir un únic codi intermedi per múltiples llenguatges d'alt nivell. Aleshores, aquesta representació intermèdia es passarà al nostre back end, i aquest generarà un conjunt de mòduls amb diferents funcionalitats, i canals per transmetre dades entre mòduls, en la forma d'un graf dirigit. Finalment, aquests grafs s'implementaran en les mencionades FGPAs, creant el circuit hardware final que s'executarà. El funcionament d'aquests circuits seguirà el paradigma del data flow, proposat en el MIT a mitjans dels anys 70.The traditional way to compute something is writing software that can be executed in the processor's central processing unit (CPU). However, a CPU does not have the computing capacity to properly run applications belonging to certain fields like for example, deep learning and cryptocurrency mining. With the passage of time, graphic processing units (GPUs) began to be used in other fields besides the initially intended ones (e.g. video games), permitting the execution of those applications that CPUs could not. Nevertheless, exists a different way to execute programs or algorithms, that is much more efficient in time and power consumption than executing software in CPUs and GPUs. This other way consists in directly designing and implementing a hardware circuit to particularly execute something, instead of using a general-purpose circuitry that can compute anything. For this reason, the goal of this project is the development of a synthesis tool that generates data flow circuits from high-level languages. These circuits can be later be implemented in technologies such as field-programmable gate arrays (FPGAs). This project will create a compiler back end, with the help of some existing compiler front end that can translate the initial high-level code into some intermediate representation, such as LLVM. The idea is to have a unique intermediate code for multiple high-level languages. Then, this intermediate representation will be fed to our back end, and it will generate a set of modules with different functions, and channels to transmit data between modules, in the form of directed graphs. Finally, these graphs will be implemented in the mentioned FPGAs, creating the final hardware circuit that will be run. The functioning of these circuits, will follow the data flow paradigm proposed at the MIT in the mid 70's

    From high-level languages to dataflow circuits

    Get PDF
    La manera tradicional de computar alguna cosa és creant software que es pot executar en la unitat de processament central (CPU) d'un processador. El problema és que una CPU no té la capacitat de còmput suficient per executar correctament aplicacions pertanyents a certs àmbits, com per exemple l'aprenentatge profund o la mineria de cripto-monedes. Amb el pas del temps, les unitats de processament gràfic (GPUs) es van començar a utilitzar en altres camps més enllà dels ideats inicialment (p.e. videojocs), permetent l'execució d'aquelles aplicacions que les CPU no podien. No obstant, existeix una altra manera per executar programes o algorismes, la qual és molt més eficient en el consum de temps i energia que executar software en CPUs i GPUs. Aquesta altra manera consisteix a dissenyar i implementar directament un circuit hardware per executar alguna cosa en particular, en lloc d'utilitzar un circuit de propòsit general que permet executar qualsevol cosa. Per aquesta raó, l'objectiu d'aquest projecte és el de desenvolupar una eina de síntesis que generi circuits de data flow a partir de llenguatges de programació d'alt nivell. Aquests circuits es poden implementar en tecnologies com les matrius de portes programables (FPGAs). Aquest projecte crearà el back end d'un compilador, amb l'ajuda d'algun front end d'un compilador que permeti la traducció de codi d'alt nivell en una representació intermèdia, com per exemple LLVM. La idea és tenir un únic codi intermedi per múltiples llenguatges d'alt nivell. Aleshores, aquesta representació intermèdia es passarà al nostre back end, i aquest generarà un conjunt de mòduls amb diferents funcionalitats, i canals per transmetre dades entre mòduls, en la forma d'un graf dirigit. Finalment, aquests grafs s'implementaran en les mencionades FGPAs, creant el circuit hardware final que s'executarà. El funcionament d'aquests circuits seguirà el paradigma del data flow, proposat en el MIT a mitjans dels anys 70.The traditional way to compute something is writing software that can be executed in the processor's central processing unit (CPU). However, a CPU does not have the computing capacity to properly run applications belonging to certain fields like for example, deep learning and cryptocurrency mining. With the passage of time, graphic processing units (GPUs) began to be used in other fields besides the initially intended ones (e.g. video games), permitting the execution of those applications that CPUs could not. Nevertheless, exists a different way to execute programs or algorithms, that is much more efficient in time and power consumption than executing software in CPUs and GPUs. This other way consists in directly designing and implementing a hardware circuit to particularly execute something, instead of using a general-purpose circuitry that can compute anything. For this reason, the goal of this project is the development of a synthesis tool that generates data flow circuits from high-level languages. These circuits can be later be implemented in technologies such as field-programmable gate arrays (FPGAs). This project will create a compiler back end, with the help of some existing compiler front end that can translate the initial high-level code into some intermediate representation, such as LLVM. The idea is to have a unique intermediate code for multiple high-level languages. Then, this intermediate representation will be fed to our back end, and it will generate a set of modules with different functions, and channels to transmit data between modules, in the form of directed graphs. Finally, these graphs will be implemented in the mentioned FPGAs, creating the final hardware circuit that will be run. The functioning of these circuits, will follow the data flow paradigm proposed at the MIT in the mid 70's

    Improving Performance and Energy Efficiency of Heterogeneous Systems with rCUDA

    Full text link
    Tesis por compendio[ES] En la última década la utilización de la GPGPU (General Purpose computing in Graphics Processing Units; Computación de Propósito General en Unidades de Procesamiento Gráfico) se ha vuelto tremendamente popular en los centros de datos de todo el mundo. Las GPUs (Graphics Processing Units; Unidades de Procesamiento Gráfico) se han establecido como elementos aceleradores de cómputo que son usados junto a las CPUs formando sistemas heterogéneos. La naturaleza masivamente paralela de las GPUs, destinadas tradicionalmente al cómputo de gráficos, permite realizar operaciones numéricas con matrices de datos a gran velocidad debido al gran número de núcleos que integran y al gran ancho de banda de acceso a memoria que poseen. En consecuencia, aplicaciones de todo tipo de campos, tales como química, física, ingeniería, inteligencia artificial, ciencia de materiales, etc. que presentan este tipo de patrones de cómputo se ven beneficiadas, reduciendo drásticamente su tiempo de ejecución. En general, el uso de la aceleración del cómputo en GPUs ha significado un paso adelante y una revolución. Sin embargo, no está exento de problemas, tales como problemas de eficiencia energética, baja utilización de las GPUs, altos costes de adquisición y mantenimiento, etc. En esta tesis pretendemos analizar las principales carencias que presentan estos sistemas heterogéneos y proponer soluciones basadas en el uso de la virtualización remota de GPUs. Para ello hemos utilizado la herramienta rCUDA, desarrollada en la Universitat Politècnica de València, ya que multitud de publicaciones la avalan como el framework de virtualización remota de GPUs más avanzado de la actualidad. Los resutados obtenidos en esta tesis muestran que el uso de rCUDA en entornos de Cloud Computing incrementa el grado de libertad del sistema, ya que permite crear instancias virtuales de las GPUs físicas totalmente a medida de las necesidades de cada una de las máquinas virtuales. En entornos HPC (High Performance Computing; Computación de Altas Prestaciones), rCUDA también proporciona un mayor grado de flexibilidad de uso de las GPUs de todo el clúster de cómputo, ya que permite desacoplar totalmente la parte CPU de la parte GPU de las aplicaciones. Además, las GPUs pueden estar en cualquier nodo del clúster, independientemente del nodo en el que se está ejecutando la parte CPU de la aplicación. En general, tanto para Cloud Computing como en el caso de HPC, este mayor grado de flexibilidad se traduce en un aumento hasta 2x de la productividad de todo el sistema al mismo tiempo que se reduce el consumo energético en un 15%. Finalmente, también hemos desarrollado un mecanismo de migración de trabajos de la parte GPU de las aplicaciones que ha sido integrado dentro del framework rCUDA. Este mecanismo de migración ha sido evaluado y los resultados muestran claramente que, a cambio de una pequeña sobrecarga, alrededor de 400 milisegundos, en el tiempo de ejecución de las aplicaciones, es una potente herramienta con la que, de nuevo, aumentar la productividad y reducir el gasto energético del sistema. En resumen, en esta tesis se analizan los principales problemas derivados del uso de las GPUs como aceleradores de cómputo, tanto en entornos HPC como de Cloud Computing, y se demuestra cómo a través del uso del framework rCUDA, estos problemas pueden solucionarse. Además se desarrolla un potente mecanismo de migración de trabajos GPU, que integrado dentro del framework rCUDA, se convierte en una herramienta clave para los futuros planificadores de trabajos en clusters heterogéneos.[CA] En l'última dècada la utilització de la GPGPU(General Purpose computing in Graphics Processing Units; Computació de Propòsit General en Unitats de Processament Gràfic) s'ha tornat extremadament popular en els centres de dades de tot el món. Les GPUs (Graphics Processing Units; Unitats de Processament Gràfic) s'han establert com a elements acceleradors de còmput que s'utilitzen al costat de les CPUs formant sistemes heterogenis. La naturalesa massivament paral·lela de les GPUs, destinades tradicionalment al còmput de gràfics, permet realitzar operacions numèriques amb matrius de dades a gran velocitat degut al gran nombre de nuclis que integren i al gran ample de banda d'accés a memòria que posseeixen. En conseqüència, les aplicacions de tot tipus de camps, com ara química, física, enginyeria, intel·ligència artificial, ciència de materials, etc. que presenten aquest tipus de patrons de còmput es veuen beneficiades reduint dràsticament el seu temps d'execució. En general, l'ús de l'acceleració del còmput en GPUs ha significat un pas endavant i una revolució, però no està exempt de problemes, com ara poden ser problemes d'eficiència energètica, baixa utilització de les GPUs, alts costos d'adquisició i manteniment, etc. En aquesta tesi pretenem analitzar les principals mancances que presenten aquests sistemes heterogenis i proposar solucions basades en l'ús de la virtualització remota de GPUs. Per a això hem utilitzat l'eina rCUDA, desenvolupada a la Universitat Politècnica de València, ja que multitud de publicacions l'avalen com el framework de virtualització remota de GPUs més avançat de l'actualitat. Els resultats obtinguts en aquesta tesi mostren que l'ús de rCUDA en entorns de Cloud Computing incrementa el grau de llibertat del sistema, ja que permet crear instàncies virtuals de les GPUs físiques totalment a mida de les necessitats de cadascuna de les màquines virtuals. En entorns HPC (High Performance Computing; Computació d'Altes Prestacions), rCUDA també proporciona un major grau de flexibilitat en l'ús de les GPUs de tot el clúster de còmput, ja que permet desacoblar totalment la part CPU de la part GPU de les aplicacions. A més, les GPUs poden estar en qualsevol node del clúster, sense importar el node en el qual s'està executant la part CPU de l'aplicació. En general, tant per a Cloud Computing com en el cas del HPC, aquest major grau de flexibilitat es tradueix en un augment fins 2x de la productivitat de tot el sistema al mateix temps que es redueix el consum energètic en aproximadament un 15%. Finalment, també hem desenvolupat un mecanisme de migració de treballs de la part GPU de les aplicacions que ha estat integrat dins del framework rCUDA. Aquest mecanisme de migració ha estat avaluat i els resultats mostren clarament que, a canvi d'una petita sobrecàrrega, al voltant de 400 mil·lisegons, en el temps d'execució de les aplicacions, és una potent eina amb la qual, de nou, augmentar la productivitat i reduir la despesa energètica de sistema. En resum, en aquesta tesi s'analitzen els principals problemes derivats de l'ús de les GPUs com acceleradors de còmput, tant en entorns HPC com de Cloud Computing, i es demostra com a través de l'ús del framework rCUDA, aquests problemes poden solucionar-se. A més es desenvolupa un potent mecanisme de migració de treballs GPU, que integrat dins del framework rCUDA, esdevé una eina clau per als futurs planificadors de treballs en clústers heterogenis.[EN] In the last decade the use of GPGPU (General Purpose computing in Graphics Processing Units) has become extremely popular in data centers around the world. GPUs (Graphics Processing Units) have been established as computational accelerators that are used alongside CPUs to form heterogeneous systems. The massively parallel nature of GPUs, traditionally intended for graphics computing, allows to perform numerical operations with data arrays at high speed. This is achieved thanks to the large number of cores GPUs integrate and the large bandwidth of memory access. Consequently, applications of all kinds of fields, such as chemistry, physics, engineering, artificial intelligence, materials science, and so on, presenting this type of computational patterns are benefited by drastically reducing their execution time. In general, the use of computing acceleration provided by GPUs has meant a step forward and a revolution, but it is not without problems, such as energy efficiency problems, low utilization of GPUs, high acquisition and maintenance costs, etc. In this PhD thesis we aim to analyze the main shortcomings of these heterogeneous systems and propose solutions based on the use of remote GPU virtualization. To that end, we have used the rCUDA middleware, developed at Universitat Politècnica de València. Many publications support rCUDA as the most advanced remote GPU virtualization framework nowadays. The results obtained in this PhD thesis show that the use of rCUDA in Cloud Computing environments increases the degree of freedom of the system, as it allows to create virtual instances of the physical GPUs fully tailored to the needs of each of the virtual machines. In HPC (High Performance Computing) environments, rCUDA also provides a greater degree of flexibility in the use of GPUs throughout the computing cluster, as it allows the CPU part to be completely decoupled from the GPU part of the applications. In addition, GPUs can be on any node in the cluster, regardless of the node on which the CPU part of the application is running. In general, both for Cloud Computing and in the case of HPC, this greater degree of flexibility translates into an up to 2x increase in system-wide throughput while reducing energy consumption by approximately 15%. Finally, we have also developed a job migration mechanism for the GPU part of applications that has been integrated within the rCUDA middleware. This migration mechanism has been evaluated and the results clearly show that, in exchange for a small overhead of about 400 milliseconds in the execution time of the applications, it is a powerful tool with which, again, we can increase productivity and reduce energy foot print of the computing system. In summary, this PhD thesis analyzes the main problems arising from the use of GPUs as computing accelerators, both in HPC and Cloud Computing environments, and demonstrates how thanks to the use of the rCUDA middleware these problems can be addressed. In addition, a powerful GPU job migration mechanism is being developed, which, integrated within the rCUDA framework, becomes a key tool for future job schedulers in heterogeneous clusters.This work jointly supported by the Fundación Séneca (Agencia Regional de Ciencia y Tecnología, Región de Murcia) under grants (20524/PDC/18, 20813/PI/18 and 20988/PI/18) and by the Spanish MEC and European Commission FEDER under grants TIN2015-66972-C5-3-R, TIN2016-78799-P and CTQ2017-87974-R (AEI/FEDER, UE). We also thank NVIDIA for hardware donation under GPU Educational Center 2014-2016 and Research Center 2015-2016. The authors thankfully acknowledge the computer resources at CTE-POWER and the technical support provided by Barcelona Supercomputing Center - Centro Nacional de Supercomputación (RES-BCV-2018-3-0008). Furthermore, researchers from Universitat Politècnica de València are supported by the Generalitat Valenciana under Grant PROMETEO/2017/077. Authors are also grateful for the generous support provided by Mellanox Technologies Inc. Prof. Pradipta Purkayastha, from Department of Chemical Sciences, Indian Institute of Science Education and Research (IISER) Kolkata, is acknowledged for kindly providing the initial ligand and DNA structures.Prades Gasulla, J. (2021). Improving Performance and Energy Efficiency of Heterogeneous Systems with rCUDA [Tesis doctoral]. Universitat Politècnica de València. https://doi.org/10.4995/Thesis/10251/168081TESISCompendi

    Integració a MATLAB de la visualització volumètrica mitjançant l'algorisme de Ray Casting basat en GPU

    Get PDF
    Treballs Finals de Grau d'Enginyeria Informàtica, Facultat de Matemàtiques, Universitat de Barcelona, Any: 2013, Director: Anna Puig PuigNuclear medicine has been a great advance for medicine in general. Thanks to this discipline is possible accurately detect pathological areas in different parts of the body using devices such as scanners, RMI­PETs, SPECT or any other device that uses radiation. This become a great benefit for diagnose, detection and disease prevention. To facilitate the task of nuclear hysicians, in this project a software application will be developed to able to manage RMI­PET medical volumes and to deal with a graphic interface that renders the volume with distinct pathological areas. Moreover, it will allow to interact with the volume modifying several parameters such as the view position, zoom areas, contrast parameters... etc, in order to enhance the professionals' experience where they will be able to classify the patient's condition based on the results. One of the biggest problems in MATLAB are the slow speed in the operations with hugh matrices. Consequently, the display of volumes is slow and tedious. To speed and to solve this problem, it is necessary an external rendering algorithm capable to increase image processing in MATLAB. RayCasting's algorithm is one of the best algorithms for image processing due to its quality. Moreover, the use of the paralelism that offers recent GPUs allows to process graphics speedier than CPU would do. Along this project we will see how to integrate in this application an external Ray Casting algorithm based on GPU which will be capable of improving the problem of slow display. Furthermore, it will be analyzed and discussed in detail with real datasets and we present the obtained results, improvements and developed implementation
    corecore