30.07.2015 Views

Actas JP2011 - Universidad de La Laguna

Actas JP2011 - Universidad de La Laguna

Actas JP2011 - Universidad de La Laguna

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>Actas</strong> XXII Jornadas <strong>de</strong> Paralelismo (<strong>JP2011</strong>) , <strong>La</strong> <strong>La</strong>guna, Tenerife, 7-9 septiembre 2011Listado 1: Cálculo <strong>de</strong>l áera <strong>de</strong>l conjunto <strong>de</strong> Man<strong>de</strong>lbrot llc1 # pragma omp target <strong>de</strong>vice ( cuda ) copy_in (c)2 # pragma omp parallel for reduction (+: numoutsi<strong>de</strong> ) private (i,j,ztemp ,z) shared (nt ,c)3 {4 numoutsi<strong>de</strong> = 0;5 for (i = 0; i < npoints ; i ++) {6 z. creal = c[i]. creal ;7 z. cimag = c[i]. cimag ;8 for (j = 0; j < MAXITER ; j ++) {9 ztemp = (z. creal * z. creal ) - (z. cimag * z. cimag ) + c[i]. creal ;10 z. cimag = z. creal * z. cimag * 2 + c[i]. cimag ;11 z. creal = ztemp ;12 if (z. creal * z. creal + z. cimag * z. cimag > THRESOLD ) {13 numoutsi<strong>de</strong> ++;14 break ;15 }16 } /* for j */17 } /* for i */18 }mentación pura en OpenMP (8 hilos, uno por core)con el código CUDA generado por llCoMP especificando(etiqueta CUDA v2) las transferencias <strong>de</strong>memoria con dichas cláusulas y sin hacerlo (etiquetaCUDA v1).En nuestra estrategia <strong>de</strong> traducción sincronizamoslas memorias <strong>de</strong> host y dispositivo al final <strong>de</strong> cadaregión paralela. Dentro <strong>de</strong> una región paralela asumimosque las posiciones <strong>de</strong> memoria ubicadas en elhost no cambian.El bucle anidado <strong>de</strong>l método <strong>de</strong> Jacobi es un buencandidato a optimizarse utilizando fusión <strong>de</strong> bucles.Cuando el backend CUDA <strong>de</strong> llCoMP encuentradicha cláusula genera un kernel 2D. <strong>La</strong> coor<strong>de</strong>nada xrepresenta el primer bucle y la coor<strong>de</strong>nada y representalas iteraciones <strong>de</strong>l segundo bucle. Esta implementaciónproduce hilos CUDA más ligeros, reducelos conflictos en el acceso a memoria e incrementala granularidad. Sin embargo, <strong>de</strong>be ser escogida concuidado la configuración para lanzar el kernel paramejorar el rendimiento, como se pue<strong>de</strong> observar enla Figura 3. Los resultados computacionales que utilizanintercambio <strong>de</strong> bucles no producen mejoras significativas<strong>de</strong>l rendimiento.C. Dinámica molecular (MD)El código MD calcula la energía y fuerzas <strong>de</strong> unsistema formado por N partículas. El problema requierenumerosas iteraciones para obtener una aproximacióna la solución, cuya exactitud está <strong>de</strong>terminadapor el incremento temporal escogido para lasimulación.En cada paso <strong>de</strong> la simulación el algoritmo realizados operaciones básicas: calcular y actualizar. <strong>La</strong>actualización se realiza mediante un bucle for queactualiza las posiciones, velocida<strong>de</strong>s y aceleraciones<strong>de</strong> las partículas.Des<strong>de</strong> el punto <strong>de</strong> vista computacional, la rutina<strong>de</strong> cálculo es más costosa que la <strong>de</strong> <strong>de</strong> actualización.Con este problema preten<strong>de</strong>mos estudiar la mejorcombinación GPU/CPU para el código paralelo. Denotandoa la CPU con C y a la GPU con una G.Hemos medido el rendimiento <strong>de</strong> cuatro versiones diferentes<strong>de</strong>l código:CC: las dos rutinas en la CPU (código puroOpenMP)GG: las dos rutinas en la GPU (código puroCUDA)GC: cálculo en la GPU y actualización en la CPUCG: cálculo en la CPU y actualización en la GPUFig. 3: Aceleración en el código Jacobi usando lacláusula COLLAPSE(2). Los parámetros óptimos paraejecutar el kernel <strong>de</strong>pen<strong>de</strong>n <strong>de</strong> la arquitectura.Fig. 4: Aceleración <strong>de</strong>l código MD para diferentesestrategias <strong>de</strong> paralelización usando Tesla C1060 yocho hilos OpenMP<strong>JP2011</strong>-691

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

Saved successfully!

Ooh no, something went wrong!