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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Actas</strong> XXII Jornadas <strong>de</strong> Paralelismo (<strong>JP2011</strong>) , <strong>La</strong> <strong>La</strong>guna, Tenerife, 7-9 septiembre 2011quitectura. Actualmente, los SMs están compuestospor treinta y dos SPs en las arquitecturas Fermi másextendidas [19], [20].Para optimizar la explotación <strong>de</strong> la arquitecturaGPU <strong>de</strong> NVIDIA, el programador tien<strong>de</strong> a maximizar:(1) el ratio entre el número <strong>de</strong> warps activospor multiprocesador y el número máximo <strong>de</strong> (posibles)warps activos; este propósito se pue<strong>de</strong> lograr:eligiendo el valor óptimo <strong>de</strong> BS, balanceando la carga<strong>de</strong> trabajo <strong>de</strong> los hilos y evitando las instrucciones <strong>de</strong>control <strong>de</strong> flujo que podrían causar la divergencia <strong>de</strong>los hilos, (por ejemplo, manteniendo los multiprocesadoresen el dispositivo tan ocupados como sea posible);y (2) el ancho <strong>de</strong> banda <strong>de</strong> memoria; el manejo<strong>de</strong> la memoria se optimiza cuando el patrón <strong>de</strong> acceso<strong>de</strong> los diferentes hilos pertenecientes a cada halfwarp(16 hilos) verifica las condiciones <strong>de</strong> coalescenciay alineamiento. Los accesos a memoria pue<strong>de</strong>nllevarse a cabo en paralelo y la latencia <strong>de</strong> memoriasería la misma que para un solo acceso. A<strong>de</strong>más, elhecho <strong>de</strong> utilizar la cache <strong>de</strong> texturas como memoriacache mejora el rendimiento [19].Aparte <strong>de</strong> CUDA, NVIDIA proporciona un conjunto<strong>de</strong> rutinas básicas o librerías (CuBLAS yCuFFT) que aceleran <strong>de</strong> forma óptima una ampliavariedad <strong>de</strong> operaciones con matrices sobre GPUs.Se han <strong>de</strong>sarrollado múltiples implementaciones <strong>de</strong>lSpMV basadas en CUDA [6], [7], [8], [9], [10] ya quela operación SpMV es, en realidad, la clave en el <strong>de</strong>sarrollo<strong>de</strong>l método BCG utilizando GPUs.Nosotros hemos seleccionado dos implementacionesCUDA para computar el SpMV con el fin<strong>de</strong> implementar el método BCG sobre GPUs: (1)el kernel incluido en la librería CUSPARSE [6] y(2) el kernel ELLR-T que está basado en el formatoELLPACK-R [10], [11]. <strong>La</strong> evaluación comparativa<strong>de</strong>scrita en [10] muestra que ELLR-T alcanza unrendimiento mejor que otras aproximaciones para laoperación SpMV sobre GPUs. Sin embargo, la rutinapara computar el SpMV <strong>de</strong> la librería CUSPARSEno está incluida en el mencionado estudio. En nuestrotrabajo, hemos seleccionado ambos kernels paracomputar la operación SpMV y po<strong>de</strong>r <strong>de</strong>sarrollar elmétodo BCG sobre GPUs.<strong>La</strong> clave <strong>de</strong> este artículo es el <strong>de</strong>sarrollo y evaluación<strong>de</strong> las implementaciones <strong>de</strong>l BCG basadasen ambos kernels. En a<strong>de</strong>lante, la implementaciónbasada en la librería CUSPARSE será referenciadacomo CuBCG CS , y la implementación basada en larutina ELLR-T se <strong>de</strong>nominará CuBCG ET . A continuaciónse <strong>de</strong>scriben ambas aproximaciones con <strong>de</strong>talle:• CuBCG CS se basa en la librería CUSPARSEla cual proporciona un conjunto <strong>de</strong> subrutinasbásicas <strong>de</strong> álgebra lineal para el manejo <strong>de</strong> matricesdispersas. El formato utilizado para compactarlas matrices es el <strong>de</strong> almacenamientocomprimido por fila (CRS). El paradigma <strong>de</strong>la librería CUSPARSE es el siguiente: se <strong>de</strong>finenmúltiples bloques, B i , en función <strong>de</strong> la dimensión<strong>de</strong> A, don<strong>de</strong> cada bloque está encargado<strong>de</strong> procesar un grupo <strong>de</strong> filas, (G j ). Y acada fila se le asignada un grupo <strong>de</strong> hilos, T k .A<strong>de</strong>más, se han tenido en cuenta una serie <strong>de</strong>consi<strong>de</strong>raciones adicionales para incrementar elrendimiento: (1) ajustar el número <strong>de</strong> hilos porfila para evitar el <strong>de</strong>sequilibrio entre hilos; (2)alinear hilos por fila para favorecer la coalescenciay (3) utilizar tanto la memoria compartidacomo la memoria <strong>de</strong> texturas [6].• CuBCG ET se basa en la rutina <strong>de</strong> ELLR-T cuyoformato es el ELLPACK-R, el cual permite almacenarla matriz dispersa <strong>de</strong> una forma regular.Para el formato ELLR-T, cada conjunto<strong>de</strong> T hilos calcula un elemento <strong>de</strong>l vector <strong>de</strong>salida. El acceso <strong>de</strong> la matriz a la memoriaglobal es coalescente y alineado. Según el mapeado<strong>de</strong> los hilos en la computación <strong>de</strong> cada fila,se pue<strong>de</strong>n ejecutar múltiples configuraciones <strong>de</strong>lformato ELLR-T. Para optimizar el rendimiento<strong>de</strong>l método, los valores <strong>de</strong> dos parámetros. elnúmero <strong>de</strong> hilos (T ) y el tamaño <strong>de</strong> bloque <strong>de</strong>los hilos (BS), <strong>de</strong>ben modificarse para cada tipo<strong>de</strong> matrices dispersasEn la siguiente sección se muestran los rendimientosobtenidos al evaluar la operación SpMV sobrelos formatos CUSPARSE y ELLR-T, así comopara nuestras implementaciones <strong>de</strong>l método BCG:CuBCG CU y CuBCG ET .IV. EvaluaciónPara evaluar los tiempos <strong>de</strong> ejecución <strong>de</strong> nuestros<strong>de</strong>sarrollos, hemos empleado dos conjuntos distintos<strong>de</strong> matrices dispersas sobre la plataforma GPUGeForce GTX 480. Estas matrices <strong>de</strong> testeo proce<strong>de</strong>n<strong>de</strong> un amplio espectro <strong>de</strong> disciplinas relacionadascon la ciencia y la ingeniería. Por lo tanto, po<strong>de</strong>mosencontrar tanto matrices regulares y bien estructuras,como matrices con una gran irregularidady <strong>de</strong>sequilibrio en el número <strong>de</strong> elementos no nulospor fila. <strong>La</strong> Tabla I ilustra los principales parámetros<strong>de</strong> estas matrices: número <strong>de</strong> filas (N), número total<strong>de</strong> elementos no nulos (nz) y promedio <strong>de</strong> entradaspor fila (Av). Resulta <strong>de</strong> interés <strong>de</strong>stacar que la dimensión<strong>de</strong> todas las matrices es N x N.En los experimentos realizados para evaluar elrendimiento <strong>de</strong> los kernels CUSPARSE y ELLR-T, para cada matriz <strong>de</strong> prueba, se ha consi<strong>de</strong>radola configuración óptima <strong>de</strong> los parámetros T yBS. A<strong>de</strong>más, los productos escalares se han aceleradogracias a la librería CUBLAS. En cuanto alos conjuntos <strong>de</strong> matrices <strong>de</strong> tipo real y complejo,los elementos han sido almacenados como uno o dosnúmeros reales, respectivamente.<strong>La</strong> figura 1 muestra el rendimiento (GFLOPs)<strong>de</strong> la operación SpMV sobre la plataforma GPUGeForce GTX 480, utilizando los kernels CUS-PARSE y ELLR-T (para tipos <strong>de</strong> datos reales y complejos).Cada prueba ha consistido en 1000 ejecuciones<strong>de</strong> la rutina SpMV, obteniendo así tiempos <strong>de</strong>ejecución fiables. Los lenguajes <strong>de</strong> programación utilizadospara diseñar los códigos han sido C y CUDA.<strong>JP2011</strong>-137

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

Saved successfully!

Ooh no, something went wrong!