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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

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

coprocesador de la CPU principal, o host. En otras palabras, los datos <strong>para</strong>lelos,<br />

cálculo int<strong>en</strong>sivo de porciones de aplicaciones ejecutándose <strong>en</strong> el host son cargados<br />

<strong>en</strong> el device. De forma más precisa, una parte de una aplicación que se ejecuta<br />

muchas veces, pero con datos difer<strong>en</strong>tes e indep<strong>en</strong>di<strong>en</strong>tes, puede ser aislada <strong>en</strong> una<br />

función que es ejecutada <strong>en</strong> el device como muchos hilos indep<strong>en</strong>di<strong>en</strong>tes. Como<br />

dicha función es compilada, la instrucción obt<strong>en</strong>ida a partir <strong>del</strong> device (<strong>en</strong> nuestro<br />

caso, la <strong>GPU</strong>) y el programa resultante, llamado kernel, se descargan <strong>en</strong> el device.<br />

Tanto el host como el device manti<strong>en</strong><strong>en</strong> su propia DRAM, referidas como memoria<br />

<strong>del</strong> host y memoria <strong>del</strong> device respectivam<strong>en</strong>te. Una puede copiar datos de una<br />

memoria a la otra a través de llamadas a una API optimizada, que usa el Acceso<br />

Directo a Memoria (DMA) <strong>del</strong> device [23].<br />

Hilos, Bloques y Grids<br />

El tratami<strong>en</strong>to por lotes de los hilos que ejecuta el kernel está organizado como<br />

un grid de bloques de hilos, ilustrado <strong>en</strong> la figura 3.9. Un bloque de hilos es un lote<br />

de hilos que pued<strong>en</strong> cooperar juntos comparti<strong>en</strong>do datos efici<strong>en</strong>tem<strong>en</strong>te a través de la<br />

memoria compartida y sincronizar sus ejecuciones <strong>para</strong> coordinar los accesos a<br />

memoria. De forma precisa, uno puede especificar puntos de sincronización <strong>en</strong> el<br />

kernel, donde los hilos <strong>en</strong> un bloque están susp<strong>en</strong>didos hasta que todos ellos alcanc<strong>en</strong><br />

el punto de sincronización. Cada hilo es id<strong>en</strong>tificado por su id<strong>en</strong>tificador de hilo<br />

(thread ID), que es el número de hilo d<strong>en</strong>tro de un bloque [23].<br />

Hay un número máximo de hilos que un bloque puede cont<strong>en</strong>er (512 hilos<br />

concretam<strong>en</strong>te). Sin embargo, los bloques de misma dim<strong>en</strong>sión y tamaño que<br />

ejecutan el mismo kernel pued<strong>en</strong> ser tratados por lotes de forma conjunta, <strong>en</strong> un grid<br />

de bloques, así que el número total de hilos puede ser lanzado <strong>en</strong> una única<br />

invocación <strong>del</strong> kernel es mucho más grande. Esto se debe al gasto de reducir la<br />

cooperación <strong>en</strong>tre hilos, porque los hilos <strong>en</strong> difer<strong>en</strong>tes bloques <strong>del</strong> mismo grid no<br />

pued<strong>en</strong> comunicarse ni sincronizarse con los de los demás. Este mo<strong>del</strong>o permite a los<br />

kernels ejecutarse efici<strong>en</strong>tem<strong>en</strong>te sin recompilación <strong>en</strong> varios devices con difer<strong>en</strong>tes<br />

capacidades <strong>para</strong>lelas: un device puede ejecutar todos los bloques de un grid<br />

secu<strong>en</strong>cialm<strong>en</strong>te si ti<strong>en</strong>e poca capacidad, o <strong>en</strong> <strong>para</strong>lelo si ti<strong>en</strong>e mucha, o<br />

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

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

Saved successfully!

Ooh no, something went wrong!