29.04.2013 Views

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

SHOW MORE
SHOW LESS

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 />

clusters y una vez que este bucle termine, los resultados serán almac<strong>en</strong>ados <strong>en</strong> la<br />

memoria <strong>del</strong> dispositivo.<br />

Un aspecto importante de este código es el uso de la memoria constante <strong>para</strong> el<br />

almac<strong>en</strong>ami<strong>en</strong>to de los datos relacionados con cada uno de los clusters. La memoria<br />

constante es una parte cacheable de la memoria <strong>del</strong> device. En el mo<strong>del</strong>o c1060 de<br />

Tesla, t<strong>en</strong>emos 16 KB por cada bloque de threads. Su utilización proporciona un<br />

acceso rápido a determinadas variables, que <strong>en</strong> nuestro caso se trataba de acceder a la<br />

información de cada uno de los clusters, de modo que cada thread d<strong>en</strong>tro <strong>del</strong> bucle<br />

pudiera acceder a la información de cada cluster. Nos dimos cu<strong>en</strong>ta que su<br />

utilización fue tan importante que de no haberla utilizado (por tanto se habría<br />

utilizado la memoria global), los resultados hubieran sido de un ord<strong>en</strong> m<strong>en</strong>or a los<br />

obt<strong>en</strong>idos tras esta implem<strong>en</strong>tación.<br />

5.1.3. Tercera etapa<br />

La tercera parte de esta implem<strong>en</strong>tación se trata de actualizar los c<strong>en</strong>tros una vez<br />

que cada uno de los píxeles se ha asignado al c<strong>en</strong>tro de cluster más cercano y de<br />

comprobar si se ha alcanzado la condición de converg<strong>en</strong>cia o incluso si se ha llegado<br />

al máximo de iteraciones definidas por el usuario. Esta parte <strong>del</strong> código se decidió<br />

realizarla <strong>en</strong> serie <strong>en</strong> el host.<br />

Todos los pasos descritos <strong>en</strong> el <strong>algoritmo</strong> se van a realizar hasta que se llegue al<br />

máximo de iteraciones permitidas por el usuario o bi<strong>en</strong> hasta que se alcance la<br />

Trabajo Fin de Máster -54- Sergio Bernabé García

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!