Improving the execution time of a lattice-boltzmann kernel using the NVIDIA G80 architecture
dc.contributor.author | Carrillo Lindado, Snaider Jose | spa |
dc.contributor.author | Siegel, Jakob | spa |
dc.contributor.author | Li, Xiaoming | spa |
dc.date | 2009-07-01 | |
dc.date.accessioned | 2019-09-19T21:43:57Z | |
dc.date.available | 2019-09-19T21:43:57Z | |
dc.description | Las sentencias de control utilizadas en el entorno de programación de las tarjetas gráficas de video (GPUs), tales como sentencias condicionales e iterativas, presentan problemas de concurrencia al momentos de ser ejecutadas debido a que tienden a minimizar el nivel de ocupación, el cual es una medida que nos permite establecer el número de procesos que se están ejecutando de forma concurrente en las GPUs. A diferencia de las unidades de procesamiento de datos tradicionales presentes en un microprocesador de propósito general, una GPU no puede ceder el control de flujo de datos a la CPU debido a que actualmente no existe un mecanismo que permita dicho control de flujo sin comprometer la integridad de los datos procesados en dichas arquitecturas.En este artículo se proponen y evalúan dos nuevas técnicas de optimización a nivel de instrucciones enfocadas a hacer un mejor uso de los recursos de tipo hardware de las GPUs, en la arquitectura NV-DIA G80. Estás técnicas llamadas Loop splitting and branch splitting incrementan de forma controlada la redundancia de código, lo cual puede ser considerado como "no óptimo" en una arquitectura convencional como la CPU; sin embargo en la arquitectura multiprocesador NVIDIA G80 dicha redundancia se ve reflejada en el incremento de la ocupación de sus multiprocesadores y en un aumento del paralelismo de los programas ejecutados en este tipo de arquitectura. Los resultados obtenidos a partir del banco de pruebas, basados en el algoritmo del método de Lattice Boltzmann (LBM), muestra que estas técnicas incrementan la ocupación y el paralelismo de la arquitectura NVIDIA G80 comparado con la ejecución de la versión non-splitting del mismo algoritmo. | es-ES |
dc.description | Control statements such as loops and branches poseserious challenges for their efficient utilization onGraphic Processing Units (GPUs) as those controlstatements will lead to a serialization of threads andconsequently ruin the occupancy and parallelism on GPUs. Unlike traditional central processingunits (CPUs), the GPU cannot leave the controlstatements to the CPU because fine-grain statementscheduling between GPU and CPU cannot begranted, as the GPU acts as a co-processing device.This paper analyzes the impact for using two leveltransformation techniques, namely loop/branchsplitting, which improves the register utilizationto manage the control statements on GPUs, inorder to implement the Lattice Boltzmann Method(LBM) benchmark application. Results executed inthe NVIDIA G80 architecture illustrate that thesetechniques are very efficient in term of parallelismand can lead to an increase in occupancy and adrastic improvement in performance, compared tonon-split version of the programs. | en-US |
dc.format | application/pdf | |
dc.identifier | https://revistas.udistrital.edu.co/index.php/Tecnura/article/view/6665 | |
dc.identifier | 10.14483/22487638.6665 | |
dc.identifier.uri | http://hdl.handle.net/11349/20476 | |
dc.language | spa | |
dc.publisher | Universidad Distrital Francisco José de Caldas. Colombia | es-ES |
dc.relation | https://revistas.udistrital.edu.co/index.php/Tecnura/article/view/6665/8248 | |
dc.source | Tecnura Journal; Vol 13 No 25 (2009): July - December; 5-13 | en-US |
dc.source | Tecnura; Vol. 13 Núm. 25 (2009): Julio - Diciembre; 5-13 | es-ES |
dc.source | 2248-7638 | |
dc.source | 0123-921X | |
dc.title | Improving the execution time of a lattice-boltzmann kernel using the NVIDIA G80 architecture | en-US |
dc.title | Mejoramiento del tiempo de ejecución de un núcleo Lattice-Boltzmann utilizando la arquitectura NVIDIA G80 | es-ES |
dc.type | info:eu-repo/semantics/article | |
dc.type | info:eu-repo/semantics/publishedVersion | |
dc.type.coar | http://purl.org/coar/resource_type/c_6501 |