miércoles, 21 de noviembre de 2012

Empezando a "cocinar"

GPU. Graphics Processing Unit

De forma simple, una unidad de procesamiento gráfico es un chip de procesamiento dedicado para realizar operaciones de construcción de imágenes para salida de video en una computadora.

Una GPU puede aplicar instrucciones en una misma operación sobre un cojunto de datos, en este caso, y debido a la naturaleza de las aplicaciones gráficas, la mayor parte de ellas involucran operaciones sobre matrices y vectores. 

Una GPU está formada por varios núcleos pequeños y diseñados de forma eficiente para realizar estos cálculos en forma paralela. Las características propias de las GPUs debido a su estructura de programación altamente en paralelo, y la incorporación de múltiples núcleos y memoria RAM dedicada, se han utilizado, y utilizarán para algo más que desarrollo de procesamiento gráfico.

GPGU. General Purpose GPU

Este acrónimo hace referencia al uso de una GPU como una alternativa a un microprocesador "común", usando su poder de procesamiento en paralelo, para su aplicación en otras tareas de propósito general, y que no involucren precisamente trabajos sobre gráficos.

El cálculo de operaciones en la GPU ofrece un rendimiento a nivel de teraflops, al descargar en las GPU las partes de la aplicación que requieren gran capacidad computacional, mientras que el resto del código sigue ejecutándose en la CPU.

Esto consituye una combinación de CPU  + GPU, usando la CPU formada por varios núcleos para el procesamiento en serie, mientras que la GPU consta también de varios núcleos optimizados para procesamiento en paralelo. 


Las partes en serie del código se ejecutan en la CPU, mientras que las paralelas en la GPU


NVIDIA CUDA. Compute Unified Device Architecture


Los primeros usos de las GPU como GPGPU, en los años 1999 y 2000, precisaban el uso de APIs de programació de gráficos como OpenGL y Cg para programar las GPU. Debido a esa limitación, NVIDIA ofreció un ambiente de programación transparente para desarolladores con lenguajes familiares como C, C++ y Fortran.

El primer SDK se publicó en el año 2007, y actualmente se puede instalar en plataformas Linux, Mac o Windows. La versión más nueva del SDK es Cuda 5, publicada en octubre del 2012.

Links interesantes