Implementación en GPU del algoritmo K-Means para ... - UMBC
Implementación en GPU del algoritmo K-Means para ... - UMBC
Implementación en GPU del algoritmo K-Means para ... - UMBC
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
<strong>Implem<strong>en</strong>tación</strong> <strong>en</strong> <strong>GPU</strong> <strong>del</strong> <strong>algoritmo</strong> K-<strong>Means</strong> <strong>para</strong> procesami<strong>en</strong>to <strong>para</strong>lelo<br />
de imág<strong>en</strong>es de satélite disponibles <strong>en</strong> la herrami<strong>en</strong>ta Google Maps<br />
Un vertex shader es una función que recibe como parámetro un vértice. Sólo<br />
trabaja con un vértice a la vez, y no puede eliminarlo, sólo transformarlo. Para ello,<br />
modifica propiedades <strong>del</strong> mismo <strong>para</strong> que repercutan <strong>en</strong> la geometría <strong>del</strong> objeto al<br />
que pert<strong>en</strong>ece. Con esto se pued<strong>en</strong> lograr ciertos efectos específicos, como los que<br />
ti<strong>en</strong><strong>en</strong> que ver con la deformación <strong>en</strong> tiempo real de un elem<strong>en</strong>to; por ejemplo, el<br />
movimi<strong>en</strong>to de una ola. Donde toma una gran importancia es <strong>en</strong> el tratami<strong>en</strong>to de las<br />
superficies curvas.<br />
En cambio, un píxel shader básicam<strong>en</strong>te especifica el color de un píxel. Este<br />
tratami<strong>en</strong>to individual de los píxeles permite que se realic<strong>en</strong> cálculos principalm<strong>en</strong>te<br />
relacionados con la iluminación <strong>del</strong> elem<strong>en</strong>to <strong>del</strong> cual forman parte <strong>en</strong> la esc<strong>en</strong>a, y <strong>en</strong><br />
tiempo real.<br />
La incorporación de los píxel shaders y vertex shaders permite a los<br />
programadores una mayor libertad a la hora de diseñar gráficos <strong>en</strong> tres dim<strong>en</strong>siones,<br />
ya que puede tratarse a cada píxel y cada vértice por se<strong>para</strong>do. De esta manera, los<br />
efectos especiales y de iluminación pued<strong>en</strong> crearse mucho más detalladam<strong>en</strong>te,<br />
sucedi<strong>en</strong>do lo mismo con la geometría de los objetos.<br />
Pipeline clásico de procesami<strong>en</strong>to <strong>en</strong> una <strong>GPU</strong><br />
Cuando revisamos las arquitecturas hardware, el flujo de datos, y las operaciones<br />
pipeline, a m<strong>en</strong>udo es bu<strong>en</strong>o empezar por el nivel más alto, donde los datos llegan<br />
desde la CPU a la <strong>GPU</strong>, y el proceso se desarrolla hacia abajo a través de múltiples<br />
fases de procesami<strong>en</strong>to hasta que un píxel es dibujado definitivam<strong>en</strong>te <strong>en</strong> la pantalla.<br />
Para situarnos, las <strong>GPU</strong>s han utilizado diseños pipeline tradicionales, como los que<br />
aparec<strong>en</strong> ilustrados <strong>en</strong> la figura 3.3.<br />
Después que la <strong>GPU</strong> recibe los datos vertex (vértices) desde el host (CPU), la<br />
fase vertex se ejecuta <strong>en</strong> primer lugar. La función de fijado transforma la imag<strong>en</strong> y el<br />
hardware de luminosidad operado <strong>en</strong> esta fase se lleva a cabo; <strong>en</strong>tonces los píxeles<br />
shaders programables, y el control de flujo dinámico de los mo<strong>del</strong>os shaders <strong>en</strong>tran<br />
<strong>en</strong> juego. El sigui<strong>en</strong>te paso <strong>en</strong> el pipeline clásico es la configuración, donde los<br />
vértices son <strong>en</strong>samblados d<strong>en</strong>tro de primitivas como triángulos, líneas o puntos. Las<br />
primitivas son convertidas por la fase de “rasterización” <strong>en</strong> fragm<strong>en</strong>tos de píxeles (o<br />
Trabajo Fin de Máster -27- Sergio Bernabé García