bachelorThesis
GPGPU, un cambio de paradigma para el diseño de programas de alto rendimiento en la Universidad Tecnológica de Pereira y sus áreas de influencia
Autor
Valencia Suárez, Fabio
Institución
Resumen
Una de las formas de calcular el número pi (π) es con el siguiente algoritmo: * Dibujar un círculo dentro de un cuadrado de tamaño 1. * Generar puntos aleatorios dentro del cuadrado. * determinar el número de puntos que están dentro del círculo. * La variable r será igual al número de puntos en el círculo dividido por el número total de puntos. * El número Pi será aproximadamente igual a cuatro multiplicado por r (4 * r). Este algoritmo tiene una característica especial y es un gran número de cálculos que pueden ser ejecutados por partes en el mismo instante de tiempo y finalmente reunir los resultados parciales y obtener el resultado final. Este algoritmo se puede clasificar como un algoritmo paralelo. Al igual que este, muchos otros problemas como por ejemplo el cifrado de datos (Encryption), el cual se puede realizar por sustitución (cambiar unas letras por otras) o por transposición (cambiar el orden de las letras en una palabra), las consultas a bases de datos, los algoritmos de búsquedas de coincidencias y el alineamiento de secuencias en bioinformática, entre otros, se pueden solucionar más rápidamente a través de cálculos en paralelo que realizando operaciones en forma secuencial. En la actualidad existen sistemas que permiten utilizar muchas unidades de proceso de forma concurrente y aumentar la velocidad (cálculos por segundo), como por ejemplo los supercomputadores, pero estas son soluciones que tienen un alto costo comercial, además de necesitar software especializado, constante mantenimiento y manejo de personal calificado, siendo una opción no muy deseable para el sector comercial, educativo y científico. En búsqueda de una solución a ambos inconvenientes (Velocidad vs. Precio) se encontró que las unidades de procesamiento gráfico (Tarjetas Gráficas) actuales cumplían con este requisito (Múltiples unidades de proceso independientes) con un costo muy bajo en comparación con sistemas de alto desempeño, y se encontró en ellas una solución que permitía aumentar el rendimiento de la programación paralela en un sistema de cómputo actual, sin que esto significara una inversión demasiado alta y así es como nació la Programación de propósito General en Unidades de Procesamiento Gráfico o GPGPU.