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> KK-<strong>Means</strong><br />

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

La solución sería reservar memoria no paginable y emplear la primitiva<br />

cudaMemcpyAsync(…) <strong>en</strong> vez de malloc(…) pero sin abusar:<br />

Otro problema d<strong>en</strong>tro de la memoria global son los accesos ccesos coalesc<strong>en</strong>tes kernel<br />

<strong>GPU</strong> – Memoria <strong>GPU</strong> y viceversa. En este caso los accesos por threads van a ser<br />

agrupados <strong>para</strong> minimizar el número de transfer<strong>en</strong>cias. Vamos a poder t<strong>en</strong>er<br />

segm<strong>en</strong>tos de 32,64 y 128 bits.<br />

Un ejemplo lo podemos t<strong>en</strong>er al realizar la traspuesta de una matriz, <strong>en</strong> donde las<br />

lecturas serán coalesc<strong>en</strong>tes, pero las escrituras NO (ver figura 8.4).<br />

Figura 8.4. Ejemplo: traspuesta de una matriz utilizando memoria global global.<br />

En este caso t<strong>en</strong>dremos que aprovechar la memoria compartida (shared memory)<br />

<strong>para</strong> solucionarlo.<br />

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

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

Saved successfully!

Ooh no, something went wrong!