Está en la página 1de 6

Programación de alto rendimiento en el

procesador Cell: Aplicación a simulación de


fluı́dos
1
Carlos H. González, Basilio B. Fraguela, Diego Andrade, José A. Garcı́a 2 , Manuel J.
Castro 3

Resumen— En el diseño de los procesadores mo- Element, PPE) acompañado de una serie de núcleos
dernos es cada vez más común incorporar varios que realizan la labor de unidades aceleradoras (Sy-
núcleos de procesamiento. En algunas arquitecturas
estos núcleos no son homogéneos, sino que están es- nergistic Processing Elements, SPEs), dotadas de
pecializados en la realización de funciones especı́ficas. una pequeña memoria local sobre la cual trabajan, y
Uno de los procesadores de este tipo más destacables que se comporta como una memoria caché que debe
es el Cell, creado por Sony, Toshiba e IBM, que incor-
pora en un solo chip un núcleo PowerPC común y has-
ser operada explı́citamente por el software. La pro-
ta 8 núcleos aceleradores, llamados Synergistic Proce- gramación sobre esta plataforma entraña una gran
sing Elements, que alcanzan una gran rendimiento en complejidad tanto a nivel de utilización óptima del
operaciones en punto flotante mediante procesamien-
juego de instrucciones como de gestión de las memo-
to vectorial. En este trabajo estudiaremos este pro-
cesador y su rendimiento con aplicaciones cientı́ficas. rias locales, pero al mismo tiempo permite obtener
Optimizaremos para el procesador Cell una simula- un alto rendimiento. En este trabajo hemos estudia-
ción de un sistema de aguas someras con transporte do las caracterı́sticas de este procesador, haciendo
de contaminantes utilizando un método de volúmenes
finitos. Ésta es una aplicación áltamente paraleliza- hincapié en los aspectos que lo diferencian de los
ble, al tiempo que utiliza operaciones sobre matrices procesadores de propósito general, y lo hemos pro-
y vectores de dimensión 4, con lo que se adapta a la gramado para resolver un problema cientı́fico que se
arquitectura de este procesador.
adapta muy bien a la arquitectura de este procesa-
Palabras clave— Computación de altas prestaciones,
Método de volúmenes finitos, Vectorización, Parale-
dor, como es el de la simulación de un sistema de
lismo, Arquitecturas heterogéneas aguas someras con transporte de contaminantes me-
diante un método de volúmenes finitos.
I. Introducción El método de volúmenes finitos es altamente pa-
ralelizable, puesto que presenta pocas dependencias

L A evolución en el proceso de diseño de nuevos mi-


croprocesadores ha llegado en los últimos años a
un punto en el que es difı́cil seguir aumentando la
de datos que limiten la distribución de los mismos
entre distintas unidades de procesamiento. Además,
se basa en gran cantidad de operaciones entre ma-
frecuencia de reloj de un núcleo individual. Por ello, trices y vectores pequeños. Por ello también existen
la tendencia actual es la de aprovechar el mayor nivel implementaciones del método adaptadas para entor-
de integración para añadir más núcleos dentro de un nos clúster, juego de instrucciones SSE de Intel [2] y
mismo chip. Hay dos clases principales de procesa- más recientemente sobre GPUs [3].
dores multinúcleo: los homogéneos y lo heterogéneos. El procesador Cell permite aprovechar el parale-
En los primeros todos los núcleos tienen idénticas ca- lismo inherente al problema, gracias a sus múltiples
racterı́sticas, por lo que pueden ejecutar los mismos SPEs basados totalmente en instrucciones vectoria-
programas y acceder a la memoria y los dispositivos les. Para realizar el desarrollo hemos seguido una se-
de entrada y salida. Ejemplo de este tipo son los pro- rie de pasos: análisis del algoritmo, reestructuración
cesadores Core2 Duo o Quad de Intel. Por otro lado, de algunas operaciones para su vectorización, diseño
los heterogéneos cuentan con núcleos diseñados para de la distribución de datos y tareas, implementación
propósitos diferentes, con su propia arquitectura y sobre las SPUs y optimización de transferencias de
juego de instrucciones. Normalmente, un núcleo de memoria. El empleo óptimo de los recursos del pro-
propósito general se combinará con varios núcleos op- cesador Cell de una PlayStation3 nos ha permitido
timizados para tareas especı́ficas. El procesador más acelerar el rendimiento en un factor de 32 respec-
representativo de este tipo es el Cell. to a la implementación de referencia del método de
El procesador Cell [1] –diseñado por el consorcio volúmenes finitos ejecutada en un Xeon. La mayor
STI formado por Sony, Toshiba e IBM–, como pro- parte de la computación se realiza en los SPEs, dado
cesador multinúcleo heterogéneo, contiene un núcleo que gracias a su diseño especı́fico cada una de ellas
principal de propósito general (PowerPC Processing ejecuta el algoritmo 5 veces más rápido que el PPE.
1 Grupo de Arquitectura de Computadores, Dpto.
El resto del trabajo se organiza de la siguiente
de Electrónica y Sistemas, Univ. da Coruña, e-mail: manera: en la sección II explicamos la arquitectu-
{cgonzalezv,basilio,dcanosa}@udc.es. ra del procesador Cell. En la sección III describimos
2 Área de Matemática Aplicada, Dpto. de Matemáticas,
el método de volúmenes finitos, mientras que en la
Univ. da Coruña, e-mail: jagrodiguez@udc.es
3 Dpto. de Análisis Matemático, Univ. de Málaga, e-mail: sección IV explicamos cómo se ha realizado la imple-
castro@anamat.cie.uma.es mentación del mismo y en la sección V mostramos
Procesador Cell/BE
Grupo SPE PPE
X El Element Interconnection Bus (EIB), un bus
RMT con estructura de anillo y de gran ancho de
SPE 1 SPE 2 SPE 3 SPE 4
SL1
SPE 5 SPE 6 SPE 7 PPU banda que conecta los SPEs y PPE entre ellos,
SPU SPU SPU SPU SPU SPU SPU SPU ası́ como con el exterior mediante el MIC y el
L1
LS LS LS LS LS LS LS LS
MFC MFC MFC MFC MFC MFC MFC MFC
RMT
BIC.
MMU
RMT
MMU
RMT
MMU
RMT
MMU
RMT
MMU
RMT
MMU
RMT
MMU
RMT
MMU
RMT L2
BIU BIU
El entorno de desarrollo utilizado para este trabajo
EIB está centrado en una PlayStation3. Este sistema dis-
IIC BIC MIC pone de un procesador Cell a 3.2GHz, con 6 SPUs
disponibles para el programador, reservándose una
Entrada/Salida Memoria para el sistema operativo y estando otra desactivada
Fig. 1. Procesador Cell de la PlayStation3
en fábrica. Además, tiene 256MB de memoria RAM
y un disco duro de 40GB.
Para programar este hardware se pueden barajar
los resultados obtenidos. Por último, en la sección VI
distintas alternativas, según nuestros requisitos y dis-
detallamos las conclusiones y el trabajo futuro.
ponibilidad de recursos, algunos de ellos orientados
II. Arquitectura del procesador Cell exclusivamente al desarrollo de videojuegos. Para es-
te trabajo hemos empleado el CellSDK 3.0 de IBM.
La arquitectura del procesador Cell está orientada Se trata de un entorno de desarrollo basado en Linux,
a la computación de altas prestaciones. Ası́, está for- que incluye herramientas estándar de este sistema
mado por cuatro unidades funcionales fundamenta- como GCC, GDB o Eclipse, y se puede instalar so-
les, entre las que se incluyen un núcleo de propósito bre una PlayStation3 común. Hemos adoptado esta
general encargado principalmente de gestión de ta- solución porque permite trabajar sobre el procesador
reas y un conjunto de núcleos aceleradores para el Cell de forma muy económica, y la no accesibilidad
cómputo intensivo, además de por una serie de uni- al hardware gráfico de la consola no es relevante para
dades que las complementan. Estas unidades se pue- los experimentos que vamos a realizar.
den ver en la figura 1.
Con el CellSDK 3.0 se distribuyen una serie de
X El PowerPC Processing Element (PPE), que librerı́as que realizan labores de alto nivel, como ges-
contiene un núcleo PowerPC [4][5], llamado tión de tareas u operaciones matemáticas. Sin em-
PowerPC Processing Unit (PPU), compatible bargo, para obtener el máximo rendimiento posible
con el juego de instrucciones PowerPC Instruc- del procesador y estudiar su funcionamiento hemos
tion Set Architecture y con una unidad Alti- utilizado los componentes fundamentales del SDK,
vec [6], que proporciona el juego de instruccio- implementando nosotros todas las funciones compu-
nes vectorial y los registros vectoriales asocia- tacionales y de gestión de comunicaciones y tareas
dos. Dispone de 512KB de memoria caché L2 sobre las rutinas básicas del sistema. Ası́, la creación
compartida para datos e instrucciones, ası́ como de procesos y posterior asignación a las SPUs se rea-
dos cachés L1 separadas de datos e instrucciones liza mediante la librerı́a pthreads estándar en UNIX,
de 32KB cada una. y la librerı́a libspe2 incorporada en el CellSDK, que
X El Synergistic Processing Element (SPE), for- implementa funciones básicas de control de tareas.
mado por un núcleo llamado Synergistic Pro- A la hora de realizar la vectorización de los cálcu-
cessing Unit o (SPU) y 256KB de memoria lo- los, hemos empleado las intrı́nsecas vectoriales que
cal, que funciona como una caché gestionada por proporciona el compilador [7].
software. Esta unidad está totalmente basada en
instrucciones SIMD, y en las implementaciones La comunicación y transferencias de datos se pue-
iniciales del Cell existen 8 en cada procesador. den realizar básicamente de dos formas. Mediante
X El Memory Flow Controler (MFC), encargado comandos de DMA podemos mover datos entre la
de gestionar las transferencias de DMA. memoria RAM y las memorias locales de los SPEs,
X El Internal Interrupt Controller (IIC), que ma- ası́ como realizar transferencias entre dos memorias
neja las interrupciones procedentes de los ele- locales. Los comandos deben referirse siempre a di-
mentos internos del procesador. recciones de memoria alineadas a 16 bytes. Además,
es recomendable que los accesos a la RAM se ali-
El resto de componentes presentes en la figura 1
neen a 128 bytes. La otra forma implica el uso de
son:
los mailboxes, registros disponibles en las SPUs que
X El Memory Interface Controller (MIC), que sir- son accesibles por la PPU y organizados como colas
ve de interfaz con la memoria RAM del sistema. FIFO de distinta profundidad. Desde la SPU, una de
X El Bus Interface Control (BIC), que sirve de las colas es de escritura (la PPU lee) y tiene profundi-
interfaz con los dispositivos de entrada y salida. dad 1 y la otra es de lectura (la PPU escribe) y tiene
X Los Bus Interface Units (BIU), que controlan profundidad 4. Mientras que los accesos por parte
los accesos al bus. de la PPU pueden ser bloqueantes o no bloqueantes,
X La memoria SL1, que cachea los datos de las los accesos desde la SPU sı́ son bloqueantes, lo cual
operaciones DMA. puede utilizarse para la sincronización de procesos.
III. Modelo matemático y método de problemas de Riemann unidimensionales proyecta-
volúmenes finitos dos en la dirección normal a cada arista Eij . Estos
Para simular el transporte inerte de un contami- problemas de Riemann se linealizan mediante un es-
nante en un fluido, tomaremos como modelo el que quema de Roe conservativo por caminos [10]. Final-
resulta de acoplar las ecuaciones de aguas someras y mente las soluciones aproximadas de estos problemas
una ecuación de transporte: de Riemann lineales se promedia en las celdas para
obtener nuevas aproximaciones constantes a trozos
de la solución. El esquema numérico queda como si-
∂h ∂qx ∂qy
8
>
> + + = 0, gue:
∂t ∂x ∂x
>
>
>
>
∆t X
>
qx2
„ «
∂qx ∂ 1 2 ∂ “ qx qy ” ∂H
>

Win+1 = Win −
>
>
> + + gh + = gh , |Eij |Fij , (4)
|Vi | j∈N
>
< ∂t ∂x h 2 ∂y h ∂x
>
>
i
! (1)
∂qy ∂ “ qx qy ” ∂ qy2 1 ∂H
+ gh2 = gh
>
+ + ,
>
>
>
>
>
> ∂t ∂x h ∂y h 2 ∂y donde
>
>
− −
(Aij (Wjn − Win ) − Sij (Hj − Hi )),
>
>
>
> ∂hC ∂qx C ∂qy C Fij = Pij (5)
>
: + + = 0,
∂t ∂x ∂y
y donde Hα = H(Nα ), α = i, j, y Aij y Sij son las
donde las incógnicas del problema son la altura de evaluaciones de
la columna del agua h(x, t), el caudal q(x, t) =
∂F1 ∂F2
(qx (x, t), qy (x, t)) y la concentración de contaminan- A(W, η ) =
∂W
(W )ηx +
∂W
(W )ηy ,
te C(x, t). El caudal es el producto de h(x, t) por la
velocidad del fluido, y
S(W, η ) = S1 (W )ηx + S2 (W )ηy ,

u(x, t) = h(x, t)(ux (x, t), uy (x, t))


q(x, t) = h(x, t)u en (W, η ) = (Wij , η ij ), siendo Wij el “estado inter-
medio” de Roe entre Win y Wjn .
, H(x) es la batimetrı́a del fondo. La matriz Pij se calcula como:
El sistema (1) puede escribirse como un sistema de
leyes de conservación con términos fuente: − 1 −1
Pij = Kij · (I − sgn(Dij )) · Kij ,
2
∂W ∂F1 ∂F2 ∂H ∂H donde I es la matriz identidad, Dij y Kij son las
+ (W ) + (W ) = S1 (W ) + S2 (W ) (2)
∂t ∂x ∂y ∂x ∂y matrices de autovalores y autovectores de Aij , res-
donde pectivamente.
Puesto que el esquema numérico obtenido es
explı́cito, para garantizar su estabilidad, es necesario
»
q2 1 qx qy

imponer una condición de tipo CF L. En la práctica
F1 (W ) = qx , x + gh2 , , qx , C , esta condición supone una restricción en el paso de
h 2 h
"
q 2
# tiempo; para avanzar de la iteración tn a la tn+1 el
qx qy y 1
F2 (W ) = qy , , + gh2 , qy , C , paso temporal viene dado por:
h h 2
(P )
S1 (W ) = [0, gh, 0, 0] , S2 (W ) = [0, 0, gh, 0] . n j∈Ni |Eij | kDij k∞
∆t = mı́n ,
i=1,...,L 2γ|Vi |

Para discretizar el sistema (2), descomponemos siendo kDij k∞ es la norma infinito de la matriz Dij ,
el dominio computacional en celdas o volúmenes de es decir el máximo de los autovalores de la matriz
control, Vi ⊂ R2 , i = 1, . . . , L. Se usa la siguiente Aij .
notación: dado un volumen finito Vi , Ni es el con-
junto de ı́ndices j tales que Vj es vecino de Vi , Eij es IV. Implementación
la arista común de dos celdas vecinas Vi y Vj , y |Eij | La adaptación del programa original [2] optimiza-
su longitud, ηij = (ηij,x , ηij,y ) es el vector unitario do para procesadores Intel se ha realizado siguiendo
normal al la arista Eij y que apunta hacia la celda una serie de etapas diferenciadas: análisis del algo-
Vj . ritmo, vectorización de las operaciones, diseño de la
La discretización del sistema (2) se lleva a cabo distribución de datos entre las SPUs y optimización.
mediante un esquema de volúmenes finitos [8][9]. Si
W (x, t) es la solución exacta denotaremos por Wi n A. Análisis del algoritmo
una aproximación del promedio de la solución en el La implementación del método de volúmenes fini-
volumen Vi en tn , tos con la que empezamos a trabajar sigue el diagra-
1
Z
ma de flujo de la figura 2. En la etapa de descom-
Wi n ' W (x, tn )dx. (3)
|Vi | Vi posición del dominio {1} se divide el conjunto total
de volúmenes en subconjuntos disjuntos, que se dis-
donde |Vi | es el área de la celda y tn = tn−1 +∆t es tribuyen entre los diferentes procesos que realizarán
el instante de tiempo, siendo ∆t el paso de tiempo. el cálculo en paralelo. Posteriormente, un bucle itera
Conocida la aproximación en el tiempo tn , Win , en tiempo durante el periodo que se quiere simular.
para avanzar en tiempo, se considera una familia de Para cada paso de tiempo se realizan tres procesos:
Inicio

Descomposición del dominio {1}

Cálculo en las aristas {2}

Cálculo de Δt mínimo {3}

Fig. 3. Malla estructurada


Actualización del estado
{4}
de los volúmenes

sidad de soportar mallas no estructuradas. Sin em-


bargo, en la práctica es posible emplear mallas es-

¿Queda tiempo
de simulación?
tructuradas en una gran parte de los problemas, en
las que los volúmenes rectangulares se ordenan en
No
una matriz de dos dimensiones de forma regular. De
Fin
esta forma, no es necesario almacenar información
sobre las aristas, y a partir del ı́ndice de un volumen
Fig. 2. Diagrama de flujo del algoritmo dentro de la matriz es trivial calcular las posiciones
de sus vecinos. El ahorro de memoria es considera-
ble, logrando una reducción de hasta el 75 % en los
en un bucle se calcula para cada arista el flujo que requisitos de memoria.
se produce a través de ella entre los dos volúmenes La figura 3 ilustra la disposición de los volúmenes
que comunica {2}. Este cálculo asocia a cada volu- en una malla estructurada. Las flechas indican los
men un valor de paso de tiempo. Entre estos valores flujos entre volúmenes que se han de calcular. Con
se buscará el mı́nimo {3}. Finalmente, con este valor este ordenamiento cambia la forma de operar en ca-
mı́nimo de paso de tiempo se actualizarán los valo- da iteración del bucle en tiempo: en lugar de iterar
res de las variables en todos los volúmenes {4}, para sobre las aristas, se itera sobre los volúmenes, y para
llegar al siguiente estado. cada uno de ellos se calcula el flujo entre él y sus
Para realizar este procesamiento los datos se al- vecinos derecho e inferior. Además, esta estructura
macenan en una estructura tipo grafo compleja, que también facilita la división en bloques de la malla,
contiene los datos correspondientes a cada volumen para su distribución entre las distintas SPUs, y per-
y arista, ası́ como las relaciones entre ellos: qué dos mite utilizar transferencias de DMA sobre conjuntos
volúmenes comunica cada arista, y qué aristas deli- grandes de datos consecutivos, más eficientes que los
mitan cada volumen. Esta estructura permite traba- movimientos de pequeñas cantidades de datos que
jar con mallas no estructuradas, con conectividades corresponderı́an a cada volúmen individual sobre el
y volúmenes arbitrarios, aunque la implementación que se trabajarı́a en una malla no estructurada.
original de la que partimos sólo emplea mallas con La distribución de los volúmenes tiene lugar en dos
volúmenes rectangulares. niveles, desde el punto de vista de las SPUs: externo e
El primer paso que hemos dado para transformar interno. En el nivel externo se distribuyen las colum-
este programa de forma que utilice óptimamente el nas de la malla por bloques entre las diferentes SPUs.
procesador Cell ha sido la vectorización de las opera- Los volúmenes en la primera y última columnas asig-
ciones fundamentales. Estas operaciones matemáti- nadas a una SPU presentan el problema de no dispo-
cas entre vectores y matrices se encuentran encapsu- ner de los datos de sus vecinos izquierdo y derecho,
ladas en [2] en una serie de clases C++, que hacen respectivamente. Para solucionarlo, optamos por uti-
uso de las librerı́as Integrated Performance Primiti- lizar regiones de solapamiento entre los bloques asig-
ves de Intel. Para poder ejecutar el programa en un nados a las SPU: cada una obtiene dos columnas de
sistema PowerPC como es la PPU del Cell, hemos datos extra, una perteneciente al bloque anterior y
sustituido las llamadas a esta librerı́a por implemen- otra perteneciente al siguiente. Debido a esto se cal-
taciones equivalentes que emplean las instrucciones culan los datos de los extremos por duplicado, una
vectoriales Altivec. En el sistema que nos ocupa se vez en cada SPU participante en ese margen, pero es-
trabaja con cuatro variables –profundidad, concen- ta duplicidad tiene un impacto muy reducido puesto
tración de contaminante y flujo en los ejes x e y–, que sólo representa el 0,21 % del total de operaciones.
lo que resulta en matrices cuadradas y vectores de El nivel interno se refiere a la división en bloques
dimensión 4, el mismo número de valores en punto necesaria para procesar todos los datos en cada SPU.
flotante de simple precisión que se pueden acomodar La memoria local de éstas es muy limitada, dispo-
en los registros vectoriales de 128 bits de la PPU y niendo solo de 256KB, lo que impide almacenar la
de las SPUs. malla completa. La solución que adoptamos fue la de
dividir el bloque de columnas que se le asigna a cada
B. Distribución de datos SPU en subbloques de columnas, de las que se leerán
Como se ha mencionado antes, la estructura de un grupo de filas de cada vez. El número de columnas
datos que almacena la información de la malla de de estos subbloques es tal que cada fila se pueda ob-
volúmenes finitos es compleja, derivada de la nece- tener con una transferencia de DMA, que puede ser
Malla en memoria principal Buffer en memoria loca 6
1 2 3 4 5 6 10
1 2 3 4
1 Xeon
1
2 PPU
2 5
3
10 1 SPU
3

log[ Tiempo(segundos) ]
4 2 SPUs
4 4 SPUs
Paso 1 10
6 SPUs
1 2 3 4 5 6
1 1 2 3 4 3
2 3 10
3 4

4 2
10
Paso 2

1 2 3 4 5 6 1
4 5 6
1 10
1
2
2
3 0
3 10
4 9000 36000 144000 576000 2304000
Paso 3 Número de volúmenes

1 2 3 4 5 6
4 5 6
1
3
2
4
Fig. 5. Tiempos de ejecución
3
4

Paso 4

El número de lı́neas que se leen por adelanta-


Fig. 4. Transferencias con regiones de solapamiento do está dimensionado de forma que no se produz-
can nunca esperas por datos, y el número de buffers
será el doble de este valor para almacenar también
como máximo de 16KB de datos. Para el cálculo en los datos calculados mientras son escritos de nuevo
los volúmenes en los extremos del bloque es necesario en memoria principal. El número de buffers en nues-
nuevamente disponer del estado actual de volúmenes tro programa es 12, en cada uno de los cuales caben
que pertenece a bloques vecinos, por lo que se vuel- 256 volúmenes, lo que hace un total de 192KB. Este
ven a emplear regiones de solapamiento. En la figura es el tamaño óptimo, pues oculta totalmente las la-
4 se ilustra cómo se realizan estas transferencias paso tencias y aprovecha al máximo la memoria local de
a paso. La obtención de cada bloque de volúmenes se las SPUs dejando 64KB libres para el programa, las
hace con una fila y una columna extras, que contie- variables globales y la pila.
nen los datos de los vecinos de los volúmenes en los
extremos. Cuando se almacenen en memoria princi- V. Resultados
pal contendrán resultados parciales del cálculo que Para la realización de los experimentos se ha uti-
se completarán con el cálculo en bloques siguientes. lizado una simulación de un sistema consistente en
Como optimización, la fila de sombra es reaprovecha- un canal rectangular con medidas 75 × 30 metros,
da en la memoria local, colocándola al comienzo del cuyo fondo presenta una cresta dada por la función
buffer, de forma que no se almacena en la RAM para 2
B(x, y) = e−0,075(x−37,5) . Suponemos inicialmente
obtenerla de nuevo inmediatamente. un contaminante ocupando un cı́rculo con centro ubi-
Con la distribución de datos propuesta no es ne- cado en (15, 15) y de radio 6m, y un flujo inicial
cesario ningún tipo de comunicación explı́cita entre constante q = (1, 0), ası́ como una superficie libre
las distintas SPU, lo que redunda en un programa constante de 3m de altura en su parte más profun-
algo más sencillo y con menos sobrecargas por espe- da. Consideramos condiciones de contorno libres y
ras de datos. La sincronización se realiza entre las un valor de CF L de 0,9, dejando evolucionar la si-
SPUs y la PPU para obtener el valor de paso de mulación hasta un tiempo de 200 segundos. A fin
tiempo mı́nimo: las primeras almacenan en su mail- de medir el rendimiento obtenido ante problemas de
box de salida el valor local obtenido, que será leı́do distinto tamaño y por tanto diversos grados de car-
por la PPU y de los cuales ésta obtendrá el mı́nimo. ga computacional, hemos realizado las medidas so-
Posteriormente escribirá este valor en los mailboxes bre cinco simulaciones, las cuales emplean mallas de
de entrada de las SPUs, que lo leerán mediante una 9000, 36000, 144000, 576000 y 2304000 volúmenes
lectura bloqueante. respectivamente. Como referencia hemos ejecutado
el programa original en una máquina con procesa-
C. Optimización
dor Xeon E5440 a 2,83GHz con 6MB de memoria
Las transferencias de datos entre las memorias lo- caché L2.
cales de las SPUs y la memoria principal se hacen La figura 5 muestra los tiempos de ejecución tanto
siempre mediante transferencias de DMA, que es de del programa original en un Xeon, compilado con
naturaleza ası́ncrona. Es posible, por tanto, solapar GCC 4.1.2 y las opciones de optimización -O3 -
la computación con estas transferencias para ocul- ffunrol-all-loops -ffast-math -ftree-vectorize y -msse2,
tar la latencia de memoria. Para ello utilizamos una como de nuestra implementación sobre la PPU utili-
técnica de multibuffering, en la que se definen una zando distinto número de SPUs, con las opciones -O3
serie de buffers en la memoria local de las SPUs, -ffunrol-all-loops y -ffast-math de GCC 4.1.1, agru-
de forma que el programa solicita que se traigan de pados según el tamaño de la malla. Las pocas depen-
memoria RAM datos que se usarán más adelante a dencias de datos presentes en el algoritmo y la mi-
ciertos buffers, solapándose dicha transferencia con nimización de las comunicaciones en la implementa-
la realización de computaciones sobre datos ya dis- ción, permiten que el rendimiento aumente de forma
ponibles en otros buffers. casi lineal con el número de SPUs, con lo que tene-
TABLA I
35
Tiempos de referencia en el Xeon E5440@2.83GHz
9000 vol.
36000 vol.
30
144000 vol. Volúmenes Tiempo (s)
576000 vol.
25 2304000 vol.
9000 94.36
36000 857.20
144000 8196.80
Aceleración

20
576000 70014.18
15 2304000 657686.36

10 TABLA II
Aceleración de la versión con multibuffering sobre la
5
versión sin multibuffering

0 XX
1 2 4 6 XXX SPUs
Número de SPUs X 1 2 4 6
Volúmenes XXXX
9000 1,12 1,16 1,19 1,23
Fig. 6. Aceleraciones usando 6 SPUs frente al Xeon 36000 1,15 1,14 1,21 1,14
144000 1,18 1,15 1,12 1,10
576000 1,18 1,16 1,07 1,05
mos un programa muy escalable. Nótese que la ver- 2304000 1,20 1,18 1,11 1,05
sión del programa original adaptada a la PPU no se
ha podido ejecutar para la malla de 2304000 volúme-
nes, pues los 256Mb de memoria de la PlayStation3
no son suficientes para almacenar la información tal Agradecimientos
como estaba estructurada originalmente. Este trabajo ha sido financiado por la Xunta de
Los tiempos de ejecución en un Xeon E5440 a Galicia bajo el proyecto INCITE08PXIB105161PR
2.83GHz están reflejados en la tabla I, mientras que y por el Ministerio de Ciencia e Innovación con
la aceleración obtenida al usar el procesador Cell se fondos FEDER de la Unión Europea (proyec-
muestran en la figura 6, donde se puede observar que to TIN2007-67537-C03-02 y proyectos MTM2006-
nuestra implementación mejora sus aceleraciones a 08075, MTM2007-67596-C02-01). Agradecemos a la
medida que se emplean más volúmenes. Ası́, se lle- Red Gallega de Computación de Altas Prestaciones
ga a una aceleración de 32x para 2304000 volúmenes (Red G-HPC) por promover colaboraciones interdis-
utilizando las 6 SPUs de la PlayStation3. ciplinares entre grupos de la red, ası́ como los comen-
Estos datos se refieren a la versión totalmente op- tarios y sugerencias del profesor Ramón Doallo.
timizada, que hace uso de multibuffering. El impacto
de esta técnica en el programa es significativo, como Referencias
se puede ver en la tabla II, dónde se aprecia que se [1] IBM, Sony, and Toshiba, Cell Broadband Engine Archi-
tecture, IBM, 2006.
obtiene una aceleración de 1,15 de media respecto a [2] M.J. Castro, J.A. Garcı́a-Rodrı́guez, J.M. González-
la implementación sin multibuffering, si bien este va- Vida, and C. Parés, “Solving shallow-water systems in
lor varı́a con el tamaño del conjunto de trabajo y el 2D domains using Finite Volume methods and multime-
dia SSE instructions,” Journal of Computational and
número de SPUs. Applied Mathematics, vol. 221, pp. 16–32, 2008.
[3] J. Lobeiras, M. Arenaz, M. Amor, B. B. Fraguela, J. A.
VI. Conclusiones Garcı́a, and M.J. Castro, “Optimización de simulación
de aguas superficiales con contaminante en una GPU me-
En este trabajo se ha partido de una implementa- diante Brook+,” XX Jornadas de Paralelismo, 2009.
[4] IBM, PowerPC Architecture, Book I, IBM, Enero 2005.
ción del método de volúmenes finitos para procesado- [5] IBM, PowerPC Architecture, Book II, IBM, Enero 2005.
res x86 para conseguir una adaptación al procesador [6] IBM, PowerPC Microprocessor Family: Vector/SIMD
Cell que consigue un rendimiento considerablemente Multimedia Extension Technology Programming Envi-
ronments Manual, IBM, 2006.
superior. Ésto se ha conseguido mediante un estudio [7] IBM, Sony, and Toshiba, C/C++ Language Extensions
detallado de la arquitectura, de forma que hemos lo- for Cell Broadband Engine Architecture, IBM, 2006.
grado unos tiempos hasta 32 veces mejores. [8] M.J. Castro, J.A. Garcı́a-Rodrı́guez, J.M. González-
Vida, and C. Parés, “A parallel 2D finite volume scheme
En cuanto a lı́neas de trabajo futuro, hay varios for solving systems of balance laws with nonconserva-
puntos que se pueden considerar, tales como consi- tive products: Application to shallow flows,” Computer
methods in applied mechanics and engineering, pp. 2788–
derar la paralelización entre varios procesadores Cell 2815, Julio 2005.
(bien sobre memoria compartida o distribuida), la [9] M.J. Castro, E.D. Fernández-Nieto, A.M. Ferreiro, J.A.
implementación de versiones de la aplicación que Garcı́a-Rodrı́guez, and C. Parés, “High order extensions
of Roe schemes for two dimensional nonconservative hy-
operen con valores en punto flotante de doble pre- perbolic systems,” Comput. Journal of Sci. Comput.,
cisión (lo cual es necesario para problemas de una vol. 39, pp. 67–114, 2009.
mayor dimensionalidad) o el desarrollo de una im- [10] M.J. Castro and C. Parés, “On the well balance property
of Roe’s method for nonconservative hyperbolic systems.
plementación genérica que soporte mallas no estruc- application to shallow-water systems,” ESAIM:M2AN,
turadas de forma eficiente. vol. 38, pp. 821–852, 2004.

También podría gustarte