-
UNIVERSIDAD AUTONOMA
METROPOLITANA UNIDAD IZTAPALAPA
Maestra en Ciencias y Tecnologas de la Informacin Departamento
de Ingeniera Elctrica Trimestre 13-P Estado del Arte
Propuesta de un sistema Paralelo para la Construccin de Redes
Porosas utilizando un nodo multi-core con GPU
Alumno: Ing. Angel Gonzlez Mndez
Asesor: Dra. Graciela Romn Alonso
10 julio de 2013
-
Contenido Contenido
.................................................................................................................................
2 Resumen
...................................................................................................................................
3 1 Introduccin
.......................................................................................................................
4 2 Modelado de Redes Porosas mediante DSBM
...................................................................
5 3 Algoritmos para la creacin de redes porosas
...................................................................
6
3.1 Algoritmo Secuencial BiaSED
....................................................................................
7 3.2 Algoritmo Paralelo BiaSED
........................................................................................
7 3.3 Algoritmo Secuencial NoMISS
...................................................................................
8 3.4 Algoritmo Paralelo S-NoMISS
....................................................................................
9 3.5 Algoritmo Paralelo D-NoMISS
.................................................................................
10
4 Programacin Hbrida Multi-Core/GPU
............................................................................
10 5 Avances
............................................................................................................................
12
5.1 Distribucin de la red porosa
..................................................................................
13 5.2 Implementacin de NoMISS con OMP
....................................................................
14 5.3 Resultados
...............................................................................................................
14
6 Conclusiones
.....................................................................................................................
15 7 Calendario
........................................................................................................................
16 8 Referencias
.......................................................................................................................
16
-
Resumen En la actualidad la tecnologa avanza rpidamente en
trminos de hardware lo cual apoya a
mejorar el rendimiento de aplicaciones especificas a travs del
cmputo paralelo. Las Unidades de procesamiento grafico(GPUs) es una
tecnologa que ha permitido ocupar las capacidades de las tarjetas
graficas para mejorar el rendimiento de aplicaciones de propsito
general, su aporte a sido tal que varias de las supercomputadoras
del mundo integran esta tecnologa. Otra tecnologa muy importante en
la paralelizacin de aplicaciones de propsito general son
procesadores multi-core, cuando se utilizan en conjunto las GPUs
con los procesadores multi-core en aplicaciones paralelas surge el
reto de aprovechar ambas tecnologas. La mayor parte de los
materiales que nos rodean contienen poros o huecos, el estudio de
estos materiales tiene una gran relevancia debido a se pueden
determinar las caractersticas especificas de un material. El
estudio de materiales porosos se hace a travs de la simulacin
debido a que el realizar experimentos con materiales reales suele
ser costoso y en ocasiones peligroso, una forma de simular los
materiales porosos es mediante el modelo dual de sitios y enlaces
mediante el cual se representa el material poroso o red porosa. Se
han diseados distintos algoritmos tanto secuenciales como paralelos
para la creacin de redes porosas, sin embargo los algoritmos
actualmente implementados no toman en cuenta a las GPU`s. En este
documento se presenta una revisin de los algoritmos utilizados para
la creacin de redes porosas y un anlisis sobre el uso de
procesadores multi-core en conjunto con GPUs para la paralizacin de
aplicaciones.
-
1 Introduccin La simulacin por computadora es una herramienta
altamente utilizada debido a que nos
permite obtener una aproximacin de solucin sobre un escenario de
la vida real, la simulacin se hace a travs de un modelo en el cual
se abstraen las caractersticas y limitaciones del problema real. En
general la simulacin por computadora se realiza para ahorrar
recursos o disminuir riesgos.
Uno de los modelos tericos para obtener un adecuada descripcin
de la estructura y propiedades de un medio poroso es el Modelo Dual
de Sitios y Enlaces(DSBM)[2], en este modelo existen dos tipos de
huecos o poros: sitos y enlaces, donde cada sitio est conectado con
C enlaces, para la construccin de redes porosas se sigue el
Principio de Construccin (CP) el cual nos dice que el tamao de cada
sitio siempre es mayor o igual al tamao de cualquiera de los
enlaces conectados al sitio. En [2] y [3] se muestran dos
algoritmos para la creacin de redes, en la primera se muestra un
algoritmo con el cual se genera una red porosa vlida a partir de
una invlida (BiaSED) y en la segunda se muestra un algoritmo glotn
que genera una red vlida a travs de soluciones parcialmente vlidas
(NoMISS).
La creacin de redes porosas de gran tamao requiere de grandes
capacidades de cmputo lo que se implica grandes tiempos de
ejecucin, debido a lo anterior se requieren soluciones paralelas
para la creacin de redes porosas y de esta forma disminuir los
tiempos de ejecucin y aprovechar las arquitecturas actuales, en [4]
se presentan 3 versiones paralelas basadas en los algoritmos BiaSED
y NoMISS.
Actualmente existen dos arquitecturas principales de hardware
para el cmputo paralelo: los procesadores multi-core y las GPUs.
Cada nueva generacin de estas arquitecturas hacen que se mejore de
manera significativa el rendimiento de aplicaciones que hacen uso
de ellas a travs de un modelo paralelo de programacin. Varias de
las supercomputadoras del mundo se conforman por nodos compuestos
con procesadores multi-core y GPUs, para obtener el mejor
rendimiento en cada nodo se requiere de un modelo de programacin
hbrido. En un modelo de programacin hbrido se requiere analizar la
distribucin de carga y la comunicacin entre las arquitecturas
utilizadas.
En [6], [7] y [8] se muestran diversos experimentos sobre los
distintos modelos de programacin paralela y las herramientas
actualmente se utilizan para cada modelo de programacin paralela,
tambin se muestran las ventajas que se obtienen al utilizar modelos
de programacin paralela hbridos. En los modelos de programacin
hbridos la comunicacin entre las arquitecturas utilizadas es un
factor de gran relevancia debido a que una comunicacin sncrona
(alta o baja) afecta directamente el rendimiento del modelo hbrido,
una de las soluciones al problema de la comunicacin entre
arquitecturas es la superposicin, en [9] se muestra la viabilidad
de usar dicha tcnica entre procesadores multi-core y GPUs. Otro
factor a considerar al usar un modelo de programacin hbrido es el
particionamiento de los datos, debido
-
a que cada arquitectura tiene caractersticas propias, por lo que
es necesario utilizar un modelo adecuado como se muestra en
[10].
En el presente documento se presenta un estado del arte respecto
a la creacin de redes porosas y el uso de procesadores multi-core
en conjunto con GPUs; en la Seccin 2 se describe el Modelo Dual de
Sitios y el Principio de construccin. En la Seccin 3 se describen
los algoritmos ms relevantes tanto secuenciales como paralelos para
la creacin de redes porosas. En la seccin 4 se presenta un resumen
sobre uso de procesadores multi-core en conjuntos con GPUs. En la
seccin 5 se presentan los avances obtenidos en el trimestre 13-P y
por ltimo en la seccin 6 se presenta las conclusiones y el trabajo
futuro.
2 Modelado de Redes Porosas mediante DSBM Los algoritmos
presentados en [2], [3] y [4] para la creacin de redes y en [5]
para la
simulacin de la porosimetra del mercurio se basan en DSBM [1].
El DSBM define a un material poroso a travs de dos tipos de huecos
o poros: los sitios y los enlaces como, cada sitio est conectado a
C enlaces, donde C es la conectividad de la red. Cada enlace
permite la conexin entre dos sitios, en la Figura 1 se puede
observar una representacin del DSBM.
Figura 1: Representacin de un medio poroso a travs del DSMB.
Para la creacin de redes porosas se tiene en principio de
construccin (CP) el cual establece que: El tamao de cada sitio debe
ser mayor o al menos igual al tamao de cualquiera de los enlaces
conectados al mismo. Los tamaos de los poros se representan a travs
de dos distribuciones normales FS(RS) para los sitios y FB(RB) para
los enlaces. RS es el radio de la esfera que representa a los
sitios y RB es el radio del cilindro que representa a los enlaces.
Dada las anteriores distribuciones se sabe que si FS(RS) y FB(RB)
se traslapan, algunos sitios y enlaces tendrn valores iguales. A
esta interseccin se le conoce como traslape (Figura 2). El traslape
representa la dificultad de que los sitios y enlaces se conecten se
una forma vlida, respetando el CP.
Los algoritmos para la creacin de redes porosas definen una red
porosa se concibe como una matriz cbica, la cual est formada por la
conexin de sitios y enlaces, donde cada sitio se
-
encuentra conectado a tres enlaces directos y a tres enlaces de
forma indirecta a travs de los sitios vecinos, por lo que se tiene
que C=6. El tamao de la red se caracteriza por el parmetro L, el
cual representa el nmero de sitos a lo largo de un borde de la
matriz cbica. Con este modelo se tiene que una red de tamao L
contiene L3 sitios y 3L3 enlaces (Figura 3).
Figura 2: Traslape entre FS(RS) y FB(RB)
Figura 3: Red Porosa con L=3 y C=6
3 Algoritmos para la creacin de redes porosas Existen varios
algoritmos para la creacin de redes porosas utilizando que siguen
el DSBM
entre los ms destacados estn el BiaSED[2] y el No-MISS[3] y sus
respectivas versiones paralelas descritas en [5]. A continuacin
explicaremos de manera breve y concisa el funcionamiento de cada
uno de ellos.
Los algoritmos paralelos descritos en [4] estn diseados para
Message Passing Interface(MPI), en cada versin paralela la red se
divide en pequeas subredes como se observa en la Figura 4, esta
divisin se hace en base al nmero de nodos a utilizar, cada nodo
tiene una subred de tamao Lx x Ly x Lz. Los nodos mantienen una
topologa tipo toro, esto para crear una interconexin entre las
distintas subredes. Para la explicacin de los algoritmos es
establece que un nodo es un proceso MPI.
-
Figura 4: Red porosa dividida en 8 Partes
3.1 Algoritmo Secuencial BiaSED Este algoritmo se basa en el uso
puro del Mtodo de Montecarlo[1][2], para una matriz
cbica la conectividad es contante(C=6), los sitios son asignados
a la red mientras que los enlaces son asignados a los sitios. Los
pasos del algoritmo son:
1. El tamao de los sitos y enlaces se obtienen de forma
aleatorio en base a las distribuciones FS(RS) y FB(RB). Conforme se
van obteniendo los sitios con sus enlaces, los sitios se van
asignado a la red. Al finalizar la asignacin se contabiliza el
nmero total de violaciones al CP.
2. Se elijen de forma aleatoria dos sitios(o enlaces) y se
intercambia el radio, si el nmero de violaciones al CP disminuye o
permanece igual el intercambio es vlido, en caso contrario se
rechaza el intercambio.
3. El intercambi del paso dos se realiza 4L3 veces.
El paso 2 y 3 constituyen un paso de Monte Carlo (MCS), despus
de un nmero de MCS se espera que la red resultante cumpla en su
totalidad con el CP. Adicionalmente se requiere de un nmero N0 de
MCS adicional para que la red creada sea lo ms realista
posible.
3.2 Algoritmo Paralelo BiaSED El algoritmo paralelo BiaSED se
describe con mayor detalle en [4], los pasos del algoritmo
son:
1. Cada nodo generar L3/N sitios y 3L3/N enlaces, donde N es el
nmero de nodos a utilizar, cada nodo ejecuta el paso uno del
algoritmo secuencial.
-
2. Lo siguiente es ejecutar 4L3/N MCSs sobre cada subred a esto
los llamamos MCS paralelo, esto se realiza excluyendo a los sitios
de las caras exteriores de la subred.
3. Para que cada poro tenga la posibilidad de intercambiarse con
otro de una subred distinta, se realiza una transferencia parcial
de su subred a los nodos vecinos.
4. Repetir los pasos 2 y 3, alternando los ejes x, y y z. Hasta
un nmero de MCSs paralelos y se obtiene una red porosa vlida, al
terminar se realiza un nmero adicional de MCSs para que la red sea
aun ms real.
3.3 Algoritmo Secuencial NoMISS Este es algoritmo glotn lo que
implica que en base a soluciones parcialmente vlidas se
genere una solucin totalmente vlida, el algoritmo se describe en
[3], desde el inicio el algoritmo realiza una conexin adecuada
entre sitios y enlaces, los pasos para la creacin de una red porosa
vlida con limitacin en las fronteras de la red( los enlaces caras
externas de la red deben cumplir el CP con los sitios de las caras
externas opuestas):
1. Se generan L3 sitios de forma aleatoria en base a FS(RS) y se
ordenan de manera ascendente en una lista de sitios(LS).
2. Se asignan los 3L3 enlaces, se genera un enlace de forma
aleatorio en base a FB(RB) y se intenta conectar al primer elemento
de la lista LS, mientras se cumpla el CP, en caso de que un enlace
no se vincule con el primer elemento se recorre la lista LS, hasta
que se conecte el enlace con un sitio. Cada vez que el primer sitio
en LS completa sus seis enlaces el sitio es movido a la lista
ordenada LSC. Al finalizar el paso 2 se tienen dos listas ordenadas
LSC y LS, una con sitios con sus conexiones completas y otras con
sitios con conexiones incompletas.
3. Se asigna una conjunto aleatorio de semillas(sitios) de la
LSC en la matriz cbica, en posiciones aleatorias. El resto de los
elementos de la LSC son sembrados alrededor de cada semilla hasta
llegar aun tamao establecido como cluster-size, este proceso es
secuencial es decir se hace el sembrado en un semilla a la vez.
Mientras se esta sembrando se tiene que para dos sitios son
adyacentes solo se requiere de un enlace, se elige el enlace ms
grande(solo si cumple el PC), el otro enlace es liberado y se
intenta conectar con los sitios en LS siguiendo las normas
establecidas en el paso 2. En caso de traslape entre Clusters se
omite el sembrado en ese lugar y se continua con los espacios
vacos(Figura 5).
4. Para rellenar los huecos en la red, se elije al azar un
cluster y este crece hasta que todos los espacios vacos en la red
se ocupen. Al terminar este paso se tiene una red vlida.
5. Se ejecutan un nmero N0 de pasos de Monte Carlo(MCS), para
obtener una red aun ms real.
-
Figura 5: Construccin de un cluster de tamao 3x3x3 mediante
NoMISS
3.4 Algoritmo Paralelo S-NoMISS El algoritmo paralelo S-NoMISS
se describe con mayor detalle en [4], este utiliza un mtodo
esttico para la distribucin de carga, los pasos del algoritmo
son:
1. Cada nodo generar L3/N sitios y 3L3/N enlaces, donde N es el
nmero de nodos a utilizar, los sitios se ordenan de forma
ascendente(Parallel-Quicksort). Y cada nodo crea las listas locales
LS y LCS basndose en los pasos 1 y 2 del algoritmo NoMISS
secuencial.
2. Cada nodo ejecuta sobre su subred los pasos 3 y 4 del
algoritmo NoMISS secuencial. Con la restriccin de que se omiten las
caras externas de cada sub red.
3. Para lograr cumplir el CP entre las fronteras de las subredes
adyacentes y rellenar los espacios vacos existentes entre estas, se
realizan un serie de trasferencias a lo largo de los ejes x, y y z
entre las sub redes vecinas para que de esta forma se generan
subredes temporales que toman en cuenta las fronteras de cada
subred(Figura 6). En las subredes temporales se siguen asignado
nodos sitios y enlaces en los espacios vacos. Al terminar los pasos
2 y 3 se tiene una red porosa vlida.
4. Ejecutar un nmero de MCSs paralelos en cada subred, esto se
hace para que la red sea lo ms cercana a la realidad.
-
3.5 Algoritmo Paralelo D-NoMISS El algoritmo paralelo D-NoMISS
se describe con mayor detalle en [4], este algoritmo ejecuta los
pasos 1 y 4 del algoritmo S-NoMISS exactamente igual. Los pasos que
cambian respecto al algoritmo secuancial NoMISS son los pasos 3 y
4:
1. Generacin de poros(paso 1 de S-NoMISS)
2. Sembrado paralelo: El sembrado inicial de forma normal como
en NoMISS omitiendo las caras externas de cada subred, las semillas
y los Clusters ocupan el 25% de la subred. Para que cada poro tenga
la posibilidad de ser sembrado al inicio, cada nodo trasfiere la
mitad de la subred a los vecinos(x, y y z), por cada trasferencia
se realiza una siembra paralela. Cabe destacar que las listas LSC
locales de cada nodo no son necesariamente del mismo tamao al final
de la siembra.
3. Rellenado paralelo: Cada nodo intenta llenar los lugares
vacos de su subred mediante un cluster que se extiende hasta un
tamao (Lx -2)x(Ly -2)x(Lz -2), excluyendo las caras externas de la
subred. Debido al paso dos y las posibilidad de que las listas LSC
sean de distintos tamaos se genera una poltica de distribucin de
carga que hace que las listas permanezcan equilibradas.
4. Ejecutar un nmero de MCSs paralelos en cada subred(paso 4 de
S-NoMISS).
Figura 6: Transferencia entre subredes vecinas(en el eje y)
4 Programacin Hbrida Multi-Core/GPU En [6], [7] y [8] se muestra
una comparacin entre los distintos modelos de programacin
paralela puros y las ventajas que supe el uso en conjunto de
estos, adems identifican las herramientas ms utilizadas para cada
modelo de programacin
-
Los modelos de programacin puros se pueden clasificar como:
1. Programacin con memoria compartida con multi-cores a travs de
POSIX Threads o Open Multi-Processing(OMP)
2. Programacin con memoria compartida con GPUs a travs de
Compute Unified Device Architecture(CUDA) o Open Computing
Language(OpenCL)
3. Programacin distribuida utilizando Message Passing
Interface(MPI)
La programacin paralela clsica utiliza un solo modelo de
programacin, siendo que en la actualidad las computadoras
utilizadas para computo de alto rendimiento integran uno o varios
procesadores multi-core y una o varias GPUs. En la Figura 7 y
Figura 8 se muestra la arquitectura bsica de un procesador
multi-core y la arquitectura de un GPU respectivamente. En los
ltimos aos las GPUs se han convertido en un referente para el
computo de alto rendimiento ya que el uso de estas en aplicaciones
paralelas de propsito general han mostrado mejor muy
significativas.
Figura 7: Arquitectura bsica de un procesador multi-core
Figura 8: Arquitectura bsica de un GPU
Para poder obtener el mejor rendimiento de cada computadora o
cluster se requiere el uso de modelos de programacin hbridos que
saquen provecha de cada arquitectura. Sin embargo se
-
deben de tomar en cuenta dos importantes aspectos: la
comunicacin y el particionamiento, ambos son consecuencias
inherentes del combinar uno o ms modelos.
Los modelos de programacin hbridos ms utilizados son:
1. Programacin distribuida con MPI y OMP
2. Programacin distribuida con MPI y Posix Threads
3. Programacin distribuida con MPI y CUDA
4. Programacin distribuida con MPI y OpenCL
En particular el modelo hbrido de programacin mutl-core con GPU
no es muy utilizado debido a que por lo general al tener GPUs se
les asigna toda la carga a estas dejando a un lado a los
procesadores multi-core. Los resultados mostrados en [7], [8], [9]
y [10] muestran que el uso en conjunto de procesadores multi-core y
GPUs aumentan significativamente el rendimiento, si el caso de
estudio en cada artculo no fue el mismo en todos se llega a la
conclusin de que existe un cuello de botella en trminos de
comunicacin entre estas dos arquitecturas lo cual puede afectar en
lugar de beneficiar para esto en los artculos revisados recomiendan
que la comunicacin entre las arquitecturas sea la mnima.
Para contrarrestar el cuello de botella provocado por la
comunicacin entre procesadores multi-core y GPUs en [9] se muestra
un mtodo de comunicacin llamado superposicin, la idea general de
este mtodo es tratar de ocultar los tiempos de latencia entre las
arquitecturas, esto se logra a travs de un mtodo de comunicacin
asncrono el cual debe ser diseado para cada aplicacin.
Otro mtodo para evitar el cuello de botella es el
particionamiento de datos el cual se muestra en [10] el cual se
basa en el Modelo Funcional de Rendimiento(MFR), la idea de este
mtodo es medir la capacidad de computo por segundo de cada unidad
de procesamiento y a partir este dato y el volumen de datos generar
una distribucin de carga equitativa para cada unidad de
procesamiento. Esta solucin esta pensada para aplicaciones que se
paralelizaran mediante data-paralelismo.
5 Avances En base a los algoritmos presentados en la Seccin 3 y
los resultados presentados en[4], se
eligi tomar como punto de referencia el algoritmo NoMISS por que
debido a la naturaleza del algoritmo y como se describe en [4] este
tiempo de algoritmo disminuye sustancialmente los tiempos de
ejecucin en comparacin con el algoritmo BiaSED. Al analizar las
versiones paralelas S-NoMISS y D-NoMISS, se observo que el
algoritmo es altamente paralelo y adems accesible para modelarse
con modelo programacin paralela hbrida.
Los objetivos alcanzados durante el trimestre son:
-
1. Generar un algoritmo de distribucin de la red
2. Implementacin del algoritmo NoMISS con Open
Multi-Processing(OMP) con sembrado dinmico
5.1 Distribucin de la red porosa Se creo un algoritmo el cual
toma como parmetro el nmero hilos a ocupar(NT), el
algoritmo factoriza NT en los tres nmeros ms pequeos(a, b y c)
que satisfacen NT=axbxc, en el mejor de los casos es que NT tenga
raz cubica en este caso el algoritmo termina de forma inmediata.
Por ejemplo si se tiene NT=4 la mejor factorizacin sera (2,2,1),
NT=45 la mejor factorizacin sera (3,3,5), NT=27 la mejor
factorizacin sera (3,3,3). La propiedad de que los factores sean
los ms pequeos posibles se debe a que las subredes generadas tengan
una estructura lo ms cercana a un cubo, adems de que con factores
pequeos se mejora la isotropa de la red. En la se muestra como los
factores a partir de los factores de divide la red.
Figura 9: Particionamiento de la red en base al nmero de hilos,
a) 4 hilos con una distribucin (2,2,4), b) 8 hilos con una
distribucin(2,2,2) y c) 64 hilos con una distribucin (4,4,4).
Los pasos del algoritmo de distribucin son:
1. Se vlida NT tiene raz cubica entera, si es verdadero los
factores son (NT1/3, NT1/3, NT1/3).
2. En caso de que no tenga raz entera se propone una distribucin
inicial (techo(NT1/3), 1, 1)
3. Se vlida si la multiplicacin de los factores es menor que NT.
Si es menor se incrementa en uno el segundo factor y se ejecuta el
paso 4. En caso contrario se
-
incrementa en uno el primer factor, el segundo y tercero se
establecen a 1 y se repite el paso 3.
4. Se vlida si la multiplicacin de los factores es mayor que NT
o el segundo factor es mayor que el techo de NT1/3. En caso
afirmativo se incrementa el tercer factor en uno, se establece el
segundo factor a 1 y ejecuta el paso 3. En caso contrario se
ejecuta el paso 3.
5. El algoritmo termina cuando la multiplicacin de los factores
sea igual a NT.
5.2 Implementacin de NoMISS con OMP 1. Se particiona la red en
base al algoritmo descrito en Seccin 5.1
2. Cada nodo generar L3/N sitios y 3L3/N enlaces en base a
FS(RS) y FB(RB) respectivamente, donde N es nmero de hilos a
utilizar, los sitios y enlaces generados se almacenan en dos listas
ordenadas(descendentes) LS y LB respectivamente, estas listas son
locales a cada hilo.
3. Se inicia el proceso de sembrado semillas(sitios) y la
generacin de sus respectivos clsteres en cada subred que esta
delimitada por Lx , Ly y Lz, tomando los sitios de la lista LS. Por
cada cluster terminado se cambia el origen(x,y,z) de forma
aleatoria, esto permite que el sembrado se realice en toda la red
sin restriccin.
4. Una vez que se sembraron todos los clusters, se prosigue con
el rellenado de los espacios vacos de cada sub red. Tanto en el
paso 2 y 3 cada sitio sembrado se borra de la lista LS y se inserta
en la lista ordenada(descendente) LS2 aadiendo sus coordenadas en
la red.
5. Terminando el paso 3 cada hilo prosigue a asignar los enlaces
de su lista LB, por cada sitio en LS2 se asignan 3 enlaces por
sitio, siguiendo el CP con el sitio y con los 3 sitios
adyacentes.
6. Al final se vlida el numero de violaciones al CP.
5.3 Resultados Se realizaron algunas pruebas con el nuevo
algoritmo implementado con OMP con una red
porosa de Tamao L=100, Nmero de clusters NC=2000, y Tamao de
cluster CS=15. Las pruebas se realizaron en un equipo con cuatro
cores y 4GB de memoria RAM. El tiempo del algoritmo secuencial es
de 3,586 segundos el cual tuvo 10847 violaciones al CP. En la Tabla
1se muestran los resultados obtenidos en tiempo y nmero de
violaciones al CP. con el algoritmo desarrollado. En la Figura 10
se muestra de manera grafica una comparacin entre la versin
secuencial y la implementada con OMP en trminos de tiempo y no. de
violaciones al CP respectivamente.
-
Hilos Tiempo(s) No. De Violaciones al CP 2 743 10832 3 360 14621
4 205 8676 8 76 16918
Tabla 1: Tiempos de ejecucin y numero de violaciones obtenidos
el algoritmo implementado
a)
b)
Figura 10: a) Comparacin en tiempo y b) Comparacin en No. De
violaciones al CP, entre los Secuencial NoMISS y OMP NoMISS
En base a los resultados podemos observar que la versin paralela
con OMP disminuye de manera significativa el tiempo de creacin y el
nmero de violaciones tiende a crecer conforme el nmero de hilos
aumenta, sin embargo con la ganancia en tiempo se podran aplicar
una serie de MCSs extras para disminuir el nmero de violaciones
geomtricas.
6 Conclusiones Se observo que la simulacin de materiales porosos
es un campo de gran relevancia por
varias razones como son: ahorro de recursos, disminucin de
riesgos y generar experimentos reales ms exactos a partir de los de
las simulaciones. El Modelo Dual de Sitios y Enlaces es el punto de
partida para los algoritmos que se revisaron en este documento,
esto lo atribuye a que el modelo es muy claro, completo y adems
permite modelar los materiales porosos a travs de una estructura de
datos bastante sencilla de manipular. De los algoritmos revisados
se concluye que el algoritmo NoMISS tanto en sus versiones
secuencial y paralelas se obtienen resultados muy favorables en
trminos de escalabilidad. La escalabilidad es de los puntos ms
importantes cuando se habla de computo paralelo y/o distribuido y
como se ha visto en los ltimos aos las GPUs se han convertido en
una de las tecnologas ms importantes para el computo de alto
rendimiento, sin embargo la base de las computadoras actuales son
los procesadores multi-core y es por eso
-
que se requiere de aprovechar ambas tecnologas. Los modelos de
programacin hbridos tal como se mostro en este documento hacen
posible obtener un mayor rendimiento debido a que hace posible que
trabajen en conjunto los procesadores multi-core y las GPUs, sin
embargo hay que tomar en cuanta dos aspectos importantes: la
comunicacin y el balance de carga(datos), esto se debe a que las
capacidades de cmputo y transferencia de datos son diferentes para
cada arquitectura.
7 Calendario Trimestre Actividad
13-P Estudio del Estado del Arte, la problemtica y la metodologa
de investigacin. Estos avances sern presentados por escrito y en el
seminario organizado para tal fin.
13-O Implementacin y evaluacin del desempeo de los algoritmos
propuestos. Los avances del proyecto sern presentados por escrito,
en formato de artculo. Estos resultados sern presentados en el
seminario organizado para tal fin.
14-I Escritura y entrega de una primera versin de la comunicacin
idnea de resultados. Los resultados sern presentados en el
seminario organizado para tal fin.
14-P Implementacin y evaluacin del desempeo de los algoritmos
propuestos. Los avances del proyecto sern presentados por escrito,
en formato de artculo. Estos resultados sern presentados en el
seminario organizado para tal fin.
8 Referencias [1] S. Cordero, et al., Review: Site-Bond Network
Modeling of Disordered Porous
Media, Part. Part. Syst. Charact. vol. 21, pp. 101116, 2004.
[2] S. Cordero, F. Rojas, J.L. Riccardo, Simulation of
three-dimensional porous networks, Colloids and Surfaces A:
Physicochemical and Engineering Aspects, vol. 187188, pp. 425-438,
2001.
[3] G. Romn, F. Rojas, M. Aguilar, S. Cordero, M.A. Castro,
In-silico simulation of porous media: Conception and development of
a greedy algorithm, Microporous and Mesoporous Materials, vol. 137,
pp. 18-31, 2011.
[4] J. Matadamas, G. Roman-Alonso, F. Rojas, F. Castro, A.
Boukerche, M. Aguilar, S. Cordero, "Parallel Simulation of Pore
Networks Using Multicore CPUs, IEEE Transactions on Computers,
2012.
-
[5] C.H. Moreno, F. Rojas, G. Romn, S. Cordero, M.A. Castro, M.
Aguilar, A Parallel Simulator for Mercury (Hg) Porosimetry, M. Ropo
et al. (Eds.): EuroPVM/MPI 2009. LNCS, Springer, vol. 5759, pp.
294304, 2009.
[6] J. Diaz, C. Munoz, A. Nino, "A Survey of Parallel
Programming Models and Tools in the Multi and Many-Core Era", IEEE
Transactions on Parallel and Distributed Systems, vol.23, no.8,
pp.1369-1386, 2012.
[7] Y. Chao, H. Chih, L. Cheng, C. Tzu, "Hybrid Parallel
Programming on GPU Clusters", International Symposium on Parallel
and Distributed Processing with Applications (ISPA), pp. 142-147,
2010.
[8] K.A. Hawick, A. Leist, D.P. Playne, Mixing Multi-Core CPUs
and GPUs for Scientific Simulation Software, Res. Lett. Inf. Math.
Sci., vol. 14, pp. 25-77, 2010.
[9] J.B. White, J.J. Dongarra, "Overlapping Computation and
Communication for Advection on Hybrid Parallel Computers", IEEE
International Parallel & Distributed Processing Symposium
(IPDPS), pp.59-67, 2011.
[10] Z. Ziming, V. Rychkov, A. Lastovetsky, "Data Partitioning
on Heterogeneous Multicore and Multi-GPU Systems Using Functional
Performance Models of Data-Parallel Applications", IEEE
International Conference on Cluster Computing (CLUSTER), pp.
191-199, 2012.