Full text
Proyeto Fin de Carrera Ingeniería en Informátia Estrategias de paralelizaión de un ó digo de simulaión hidráulia de ujos transitorios 2D en volúmenes nitos Asier Heradio Laasta Soto Diretor: Javier Burguete Tolosa 1 Ponente: Vitor Viñals Yúfera 2 (1) Departamento Suelo y Agua Estaión Exp erimental Aula Dei/CSIC (2) Departamento de Informátia e Ingeniería de Sistemas Centro Politénio Sup erior Universidad de Zaragoza Curso 2010/2011 Abril 2011
2
A Papá, Mamá, María(s), José Miguel, Eva, Celia, Pepe, Tita, Diego y Tati
4
Agradeimientos Quiero agradeer, en primer lugar, a Pilar Garía, Diretora del Grup o de Hidráulia Computaional, la onanza y atenión mostradas, así omo la p osibilidad de realizar este traba jo. En segundo lugar, al resto de omp onentes de este Grup o p or su inestimable olab oraión, muy esp eialmente a Mario Morales, Javier Murillo y Daniel Caviedes, p or hab er p o dido saar el segundo de atenión que mis dudas requerían. Agradezo también a Juan Antonio Garía, p or su buen trato y p or su interés. Mis agradeimientos a Javier Burguete y Vitor Viñals, p or hab er aeptado ser el diretor y p onente resp etivos, así omo p or su ayuda en la revisión y orreión del texto que se presenta. También a Darío Suárez, p or hab erme p o dido resp onder uantas dudas omputaionales iban surgiendo. Además, me gustaría agradeer de manera esp eial a Arturo Giner y Guillermo Losilla la olab oraión que han mantenido onmigo en to do momento preo upándose de ofreerme to do lo que estaba en su mano para p o der realizar los tests que en este traba jo se presentan. i
ii
Resumen En este proyeto se plantea la optimizaión de SFS2D, un ó digo ientío de simulaión hidráulia, seuenial y esrito en Fortran, on una gran arga omputaional. SFS2D sirve para mo delar situaiones muy diversas que van desde la simulaión de las onseuenias de una rotura de presa al estudio de una reida rep entina del audal de un río. SFS2D ha sido desarrollado p or el Grup o de Hidráulia Computaional de la Universidad de Zaragoza y se basa en un méto do de resoluión de ujos de sup erial libre que en la atualidad sirve omo sop orte para desarrollar nuevos mo delos numérios aoplados. Sin embargo, tras varios años de evoluión, el rendimiento de SFS2D es esaso y las simulaiones de interés se prolongan demasiado en el tiemp o. Esto es un problema a la hora de obtener resultados, siendo neesaria algún tip o de optimizaión que haga disminuir estos tiemp os lo máximo p osible. Para esto y omo veremos a lo largo del traba jo, se han estudiado distintas op iones de optimizaión, desde las prop orionadas p or el propio ompilador hasta el desarrollo de versiones adaptadas a diversas plataformas multipro esador. Para ello, se han onsiderado los dos mo delos prinipales de ejeuión paralela en álulos ientíos: memoria ompartida y paso de mensa jes. La versión paralela de memoria ompartida se ha o diado utilizando primitivas Op enMP y es apropiada para su ejeuión en máquinas multiore , que integran varios pro esadores de alto rendimiento en un hip. La versión paralela basada en memoria distribuída se ha programado usando primitivas MPI y es apropiada para su ejeuión de un número p otenialmente grande de no dos de álulo indep endientes p ero onetados mediante una red de alto rendimiento (máquinas de memoria distribuida). En la evaluaión exp erimental se observa que el esalado de la versión basada en paso de mensa jes es muy bueno también en máquinas de memoria ompartida p or lo que se onsidera la ap ortaión prinipal de este proyeto. Para araterizar el rendimiento de nuestras soluiones, usamos omo arga de traba jo tres simulaiones diferentes que ubren la asuístia general de las simulaiones que se haen a través del ámbito abarado p or SFS2D. La evaluaión del rendimiento se ha realizado además en máquina real, utilizando tres lúster 1 suientemente distintos omo para dar validez a nuestras onlusiones. El primero de ellos es un lúster onformado p or equip os de araterístias no destinado a este tip o de ejeuiones. El segundo equip o, denominado Terminus, está esp eializado en omputaión y onsigue una gran densidad de álulo mediante una organizaión en blades y una jerarquía de interonexión optimizada. Por último se utiliza también el no do de la Red Española de Sup eromputaión en Zaragoza, Caesaraugusta. Caesaraugusta es un sup eromputador destinado úniamente a álulo ientío de memoria distribuida on 512 pro esadores interonetados mediante una red de ba ja latenia (Myrinet). 1 Conjunto de no dos de álulo iii
iv
Índie general 1 Intro duión 1 1.1 Contexto del traba jo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.1.1 El Grup o de Hidráulia Computaional . . . . . . . . . . . . . . . . . . . 2 1.1.2 El Grup o de Arquiteturas de la Universidad de Zaragoza . . . . . . . . . 2 1.2 Estrutura de la memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2 Coneptos prinipales 5 3 Paralelizaión de la apliaión 9 3.1 Paralelizaión en máquinas de memoria ompartida . . . . . . . . . . . . . . . . . 9 3.1.1 Cálulo del ∆W y ∆t ............................. 10 3.1.2 Atualizaión de la variable W . . . . . . . . . . . . . . . . . . . . . . . . 10 3.1.3 Resultados de la ejeuión en máquinas de memoria ompartida . . . . . . 11 3.2 Paralelizaión en máquinas de memoria distribuida . . . . . . . . . . . . . . . . . 12 3.3 Prepro eso y Postpro eso de las mallas de álulo . . . . . . . . . . . . . . . . . . 15 4 Resultados de la paralelizaión 19 4.1 Casos de prueba . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 4.2 Rendimiento en Tromb ón . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 4.3 Rendimiento en el luster Terminus . . . . . . . . . . . . . . . . . . . . . . . . . . 21 4.4 Rendimiento en el luster RES-Caesaraugusta . . . . . . . . . . . . . . . . . . . . 22 5 Conlusiones y Traba jo Futuro 25 5.1 Conlusión del traba jo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 5.2 Traba jo Futuro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 5.3 Conlusión p ersonal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Bibliografía 27 A Análisis de ompilaión del ó digo 29 A.1 Análisis de la ompilaión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 A.2 Rendimiento de los ompiladores . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 B Mo delo 2D de ujo de lámina libre on promedio en la vertial 33 B.1 Euaiones generales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 B.2 Euaiones promediadas en la vertial . . . . . . . . . . . . . . . . . . . . . . . . 35 B.2.1 Término de friión y mo delos de turbulenia . . . . . . . . . . . . . . . . 36 B.2.2 Versión omún de las euaiones de aguas p o o profundas . . . . . . . . . 37 B.3 Esquema numério . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 v
4
Capítulo 2 Coneptos prinipales Para p o der omprender el alane del proyeto, es neesario intro duir los oneptos en los que se sustenta el mismo. Por ello, se detallarán los fundamentos de paralelizaión y las herramientas en las que se ap oya el traba jo. La omputaión ientía en to dos sus ámbitos, suele requerir de una serie de apliaiones uyas neesidades de álulo suelen ser elevadas [7℄. En partiular, la apliaión en la que se basa este proyeto, realiza suesivos pasos temp orales y una elevada antidad de álulos en ada uno de ellos. Por ello es imp ortante enontrar la forma de realizar estos álulos de la manera más eiente p osible on la nalidad de alzanar una mayor pro dutividad en términos omputaionales. En este aso, la pro dutividad la busaremos a través de ténias de paralelizaión. La paralelizaión se puede llevar a ab o en distintos niveles, desde la paralelizaión de instru- iones a muy ba jo nivel on reursos SIMD (Single instrution Multiple Data) de pro esamiendo vetorial, hasta la paralelizaión de tareas u op eraiones on máquinas MIMD (Multiple Instru- tion Multiple Data) según la lasiaión de Flynn[3 ℄, siendo estas últimas las que ubren las arquiteturas basadas en p pro esadores destinados a ataar un problema divisible en k partes. Nosotros nos basaremos en arquiteturas MIMD, a p esar de que el pro esador IBM R PowerPC 970FX disp onga de un rep ertorio de instruiones vetoriales ono ido omo VLX. Para valorar las soluiones paralelas utilizaremos dos guras de mérito. Por un lado utilizaremos el Sp eed-up Sp [9℄, que mide la ganania en terminos temp orales de una apliaión paralelizada ejeutada en p pro esadores en un tiemp o tp frente a la ejeuión de la misma apli- aión ejeutada en un pro esador en un tiemp o ts . Así, este fator se puede formular omo, Sp=ts tp (2.1) Este valor está aotado teóriamente en (0, p] y p or lo tanto, siempre p o dremos omparar nuestro Sp eed-Up frente al Sp eed-Up teório, Stheorical =p (2.2) Por otro lado tenemos otro fator, que es el fator de Eienia o Performane que mide la relaión existente entre el Sp eed-Up y el número de pro esadores utilizados, e=Sp p (2.3) El valor de la eienia está aotado en [0,1] . Idealmente, la eienia es 1, aunque realmente esta eienia es inalanzable dado que existe un tiemp o de omuniaión tc que implia que el 5
CAPÍTULO 2. CONCEPTOS PRINCIPALES tiemp o de ejeuión será omo muho 2.4 texec =ts p+tc (2.4) Esta formulaión es una ota máxima que tamp o o se suele alanzar habitualmente, dado que sup one una división equilibrada de traba jo en p pro esadores y esto no siempre es así. Si en la ejeuión para p pro esadores esogemos el máximo tiemp o de ejeuión, tM=MAX(t1, t2...tn) , se umplirá que: tM≥ts p (2.5) Con lo que el tiemp o de ejeuión total será texec =tM+tc≥ts p+tc (2.6) Además de to do lo ontemplado aquí, para alular de manera rigurosa el tiemp o de ejeuión habría que tener en uenta los fallos en los distintos niveles de ahe, que en general disminuirán según vayamos distribuyendo el espaio de datos entre las ahes de los diferentes pro esadores. To do lo anteriormente planteado sugiere que la eienia e será menor que uno aunque existen mo delos que explian otas del Sp eed-Up sup eriores a p y p or lo tanto eienias sup eriores a uno [8℄, además, visibles en este traba jo. Sobre la ganania teória que puede tener una apliaión, existen diferentes p ostulaiones. Una de ellas es la ley de Amdahl[1 ℄, que prop one el álulo del Sp eed-Up omo Sp=p p−α(p−1) (2.7) siendo p el número de pro esadores que interviene en el álulo y α la fraión de ó digo que se ejeuta en paralelo. El fator α disminuye on la ejeuión de ó digo seuenial o on la entrada/salida no paralela. Otra propuesta es la de Gustafson [6℄, la ual es más optimista y enunia el Sp eed-Up teório, on las mismas variables que antes salvo α que representa la parte no paralelizable, omo Sp=p−α(p−1) (2.8) Lo ierto es que la ganania real está entre la urva que aparee de la formulaión 2.7 y 2.8. El balaneo de arga que ya ha apareido es uno de los fatores determinantes en el ob jetivo de enontrar una paralelizaión efetiva. Este punto es omplejo en nuestro aso dado que el número de elementos sobre los que hay que haer los álulos es variable en el tiemp o y además, a priori, no se puede estableer ningún tip o de división p erfetamente equilibrada. En nuestro aso p o demos haer la sup osiión de que el volumen de ontrol oinide on el dominio de álulo y p or lo tanto que se va a haer álulos en to da la malla aunque en realidad esto sólo suede uando to das las eldas tienen alado durante to do el tiemp o. Estableer una partiión óptima para to da la simulaión es una tarea que no se ha llevado a ab o en este traba jo pues la diultad que entraña meree un proyeto separado. El último onepto uya veraidad ha sido omprobada, es la omúnmente ono ida omo regla 90-90 heha p opular p or Jon Bentley's en 1985 que die "The rst 90 % of the ode aounts for the rst 90 % of the development time. The remaining 10 of the ode aounts for the other 90 % of the development time" . Esta frase tiene la uriosidad de que los p orenta jes no suman 100 y hay quien die que es un error tip ográo, p ero existe otra orriente que piensa que ya 6
entones se presumía que la naturaleza de los proyetos de desarrollo de software es neesariamente no umplir los plazos predihos. Por ualquiera de las dos orrientes se ha visto afetado este proyeto. Por otro lado el mo delo numério del simulador es un desarrollo lo suientemente omplejo omo para que su expliaión detallada apareza en el anexo B. La evoluión que ha ido sufriendo año atrás (e inluso durante el desarrollo de este proyeto) ha sido una de las razones de que el análisis del mismo haya resultado muy ompleja. Como veremos en apítulos p osteriores, la estrategia de paralelizaión del ó digo no es ni muho menos trivial y su implementaión tamp o o. Es op ortuno desribir omo funiona el algoritmo a nivel omputaional. En el ap éndie H se puede ver el Diagrama de Flujo de la apliaión a lo largo de la simulaión. En este proyeto, sólo se analizará y paralelizará el méto do bloks1 orresp ondiente on el méto do de orden 1 sin sedimentos aunque bloks1sedimentos será relativamente senillo a partir del primero. De ahora en adelante, nos referiremos a bloks1 omo al núleo de álulo, es deir, la funión que desarrolla to do el méto do numério sobre un dominio de álulo que estará representado omputaionalmente p or una malla (Ver Anexo B). Así mismo, es onveniente expliar que el méto do es iterativo, lo que implia que la resoluión lleva implíita un paso de tiemp o aso iado. En este aso, este paso de tiemp o viene impuesto p or la ondiión de CFL [12 ℄. Este paso de tiemp o lo denominaremos ∆t y p or lo tanto ada iteraión se hae on un paso de tiemp o aso- iado para la resoluión de la variable de interés W . La variable W se omp one de Wn= (hn, un, vn) donde hn es el alado de la elda n , un, vn son las omp onente de la velo idad del ujo en la elda n y si,1, ..., si,n son los términos fuente de la euaión para la elda n . Es imp ortante tener en uenta que a lo largo de la ejeuión, puede hab er eldas que pasen de estar seas a estar mojadas , es deir, que tengan alado h > 0 . Esto sup ondrá que hay que ampliar el dominio de álulo, y esto lo india una funión externa a la de bloks1 , p ero que de manera implíita está paralelizada ya que ada dominio de álulo tendrá que ampliar úniamente las eldas de su dominio. 7
8
Capítulo 3 Paralelizaión de la apliaión La paralelizaión de la apliaión es el ob jetivo prinipal del proyeto desarrollado on la nalidad de disminuir el tiemp o de álulo. A partir de este proyeto ha naido una relaión on el BIFI que nos ha p ermitido utilizar sus infraestruturas para realizar nuestros álulos. Para las pruebas que a ontinuaión presentaré, se han utilizado tres luster de álulo. El primero es el luster Tromb ón que p ertene al grup o GHC; el segundo p ertenee al luster Terminus 1 omo parte del programa de Hosted Computing del BIFI de la Universidad de Zaragoza. El terero es Caesaraugusta 2 , no do de la Red Española de Sup eromputaión que está instalado en el ediio de Cienias de la Universidad de Zaragoza y es gestionado p or el BIFI. En este apítulo se trata además, la adaptaión de las tareas de prepro eso y p ostpro eso propias de la apliaión de álulo. 3.1 Paralelizaión en máquinas de memoria ompartida La paralelizaión en máquinas de memoria ompartida se ha implementado ba jo el estándar Op enMP [2℄ omo ejeriio de intro duión al ó digo SFS2D. Para la paralelizaión p or este méto do, la estrategia que se sigue es la de, a partir de las on- lusiones obtenidas del análisis de ompilaión y detalladas en el anexo A, estudiar las seiones rítias en tiemp o para p o der reba jarlo. La parte identiada orresp ondiente al álulo de W es bloks1 y se basa en bules que op eran sobre las eldas y las paredes del volumen de ontrol y son estos bules los que hay que analizar apliando ténias similares a las utilizadas en el análisis de dep endenias a ba jo nivel [14℄. Po demos estableer dos tareas basadas en bule dentro de esta funión: 1. Cálulo de ∆W y ∆t 2. Atualizaión de W En estos dos bules existen sendas dep endenias que es neesario analizar. 1 http://bi.es/infrastrutures/sup eromputing/terminus/index.php 2 http://bi.es/infrastrutures/aesaraugusta/index.php 9
CAPÍTULO 3. PARALELIZACIÓN DE LA APLICACIÓN 3.1.1 Cálulo del ∆W y ∆t El álulo de to das las variables se hae reorriendo las paredes de la malla de alulo, lo que implia que será un bule que barrerá to do el dominio de paredes inluídas en el álulo en el paso de tiemp o atual. En el aso del álulo de ∆W las dep endenias haen que la ab eera del bule Op enMP quede de la siguiente forma: 1 ! $OMP PARALLEL DEFAULT( PRIVATE) SHARED ( NPAREDINCLULLE , 2 ! $ O M P + N U M _ N P A R E D I N C L U L L E , P A R E D , W , T O L E R A , V O L C , N O R M A L P , L A D O P , P R I M I T I V A S , 3 ! $ O M P + P R I M I T I V A S R A I Z , R A I Z H G , F O N D O , R N , B _ F R I C C , V E C C E L L , P A R E D N V , 4 ! $ O M P + C E L L D P , P E R D I D A P A R E D P U E N T E , G A N A N C I A _ E N E R _ O R B A L , C H I , L A D O , 5 ! $ O M P + D W 2 , V E C C E L L 2 , N U M _ N L I S T A , N E Q , 6 ! $ O M P + A C T I V A T E _ R I E N M A N N , T I P O F , N V E R T , M O D E L _ F R I C T I O N , A C T I V E G A M M A , 7 ! $ O M P + N S O L U T O S , A C T I V E E N T R O P Y , 8 ! $ O M P + D T , N L I S T A , G , R A I Z G 9 ! $ O M P + ) 10 ! $ O M P D O El paso de tiemp o ∆t es una funión de la velo idad y del alado en una elda dada, en partiular, para to do el dominio de álulo, será el menor de ellos, p or lo que deb eremos añadir además esta linea detrás del !$OMP DO : 1 ! $ O M P + R E D U C T I O N ( M I N : D T ) Con esta diretiva lo que haemos es indiar a Op enMP que de to dos los menores ∆t esoga el menor. El bule lo hemos paralelizado diiendo que, p or defeto, las variables serán privadas, salvo las que indiamos de manera explíita, mientras que este bule p o dríamos haerlo de una forma equivalente 1 ! $ O M P P A R A L L E L D E F A U L T ( S H A R E D ) P R I V A T E ( K , N , N 1 , N 2 , H 1 , H 2 2 ! $ O M P + M O J A D O I J , A R E A , N X , N Y , N O R M , U 1 , U 2 , V 1 , V 2 , A U X 1 , A U X 2 , A U X 3 , H B A R 3 ! $ O M P + U B A R , V B A R , F I S O L B A R , C B A R , U N O R M A L , A B S U N O R M A L , F R O U D E , L A N D A , 4 ! $ O M P + D I F Q X , D I F Q Y , A U X 4 , E , B E T A , L A N D A L , L A N D A R , B E T A A U X , L A N D A A U X , C 1 , 5 ! $ O M P + C 3 , Z 2 , Z 1 , P S 1 , P S 2 , D Z , A B S D Z , P S , P S M A X , F R I C T I O N , F R I C T I O N 2 , F R I C T I O N 3 , 6 ! $ O M P + M A X H , M O D U L 1 , M O D U L 2 , M I N U , B _ F R I C M E D I A , A C T I V A _ P A R E D , N C N , N V , A U X 1 0 7 ! $ O M P + M I N R A T I O , H Q I 1 , H Q I 2 , H S T A R , H L S , H L R , D T 3 , D T 2 , D T 4 , D T S M A L L , P A R E D _ S O L I D A 8 ! $ O M P + , H R S , D W 2 A U X , L , J , C O N D 1 , C O N D 2 , C O N D 3 , Q L , Q R , F R , F L , D F J 1 , D F J 2 ) 9 ! $ O M P D O 10 ! $ O M P + R E D U C T I O N ( M I N : D T ) 3.1.2 Atualizaión de la variable W La atualizaión de la variable W en el paso de tiemp o n es un bule que reorre en i to do el dominio de álulo omo: Wn i=Wn−1 i+ ∆Wn−1 i∗∆t (3.1) obteniendo de (3.1) el resultado de los nuevos valores de ∆W 10
3.1. PARALELIZACIÓN EN MÁQUINAS DE MEMORIA COMPARTIDA 3.1.3 Resultados de la ejeuión en máquinas de memoria ompartida Los resultados que aquí apareen son para la arquitetura F.3 on el aso de la gura 3.5 on un alado onstante. El binario pro ede del ompilador gFortran 4.4 sin ninguna optimizaión. 0 100 200 300 400 500 600 0 50 100 150 200 250 300 350 400 Execution time (s) Executed time (s) OpenMP - 1 Thread OpenMP - 2 Thread OpenMP - 3 Thread OpenMP - 4 Thread OpenMP - 5 Thread OpenMP - 6 Thread OpenMP - 7 Thread OpenMP - 8 Thread (a) Tiemp os de ejeuión (y) frente a tiemp o eje- utado (x) 1 2 3 4 5 6 7 8 2 3 4 5 6 7 8 Speed-Up # Threads Speed-Up Theorical Speed-Up (b) Sp eedUp vs. Theorial Sp eedUp Figura 3.1: Tiemp os de ejeuión (a) y Sp eed-Up (b) de Op enMP para el aso de prueba Los datos reogidos en la gura 3.1 muestran una diferenia notable resp eto a rendimiento teório. El sp eedUp está alulado de la forma: Sp=ts tp (3.2) Para p o der entender estos resultados, es neesario analizar qué está suediendo a ba jo nivel. Para esto vamos a utilizar la herramienta Valgrind 3 . Con esta herramienta, veremos los fallos de ahe en los distintos niveles. Cab e destaar que sólo apareen los niveles L1 y L2 de la ahe de datos mientras que la arquitetura disp one también de nivel L3. Por algún motivo desono ido, estos datos no apareen en la ejeuión de Valgrind. (a) Análisis de la funión prinipal (b) Análisis del bule prinipal de la funión Figura 3.2: Fallos de ahe en el programa prinipal (a) y fallos de ahe en bloks1 (b) para la apliaión on 1 thread En la gura 3.1 vemos que el Sp eed-Up es más o menos lineal p ero la p endiente de la urva es notablemente inferior a la de la teória. Analizando estos datos on los de los resultados del análisis de ahe 3.2, 3.3 y 3.4, p o demos ver que la ganania que teóriamente deb eríamos tener al dividir en el número de threads, se ve elipsado p or el número de fallos en ahé que inurre el 3 http://valgrind.org/ 11
CAPÍTULO 3. PARALELIZACIÓN DE LA APLICACIÓN (a) Análisis de la funión prinipal (b) Análisis del bule prinipal de la funión Figura 3.3: Fallos de ahe en el programa prinipal (a) y fallos de ahe en bloks1 (b) para la apliaión on 8 threads (a) Análisis de la funión prinipal (b) Análisis del bule prinipal de la funión Figura 3.4: Fallos de ahe en el programa prinipal (a) y fallos de ahe en bloks1 (b) para la apliaión on 4 threads programa prinipal. Tengamos en uenta que se disminuyen notablemente estos fallos en bloks1 p ero no en las funiones restantes en las que de heho, pasa lo ontrario. 3.2 Paralelizaión en máquinas de memoria distribuida A la vista de los resultados de la paralelizaión en máquinas de memoria ompartida, paree neesario ab ordar una estrategia de paralelizaión más esp eía para el ó digo. Esta paraleliza- ión se llevará a ab o ba jo el estándar MPI [5℄. Las estrategias que p o dríamos llevar a ab o son: 1. Paralelizar tareas 2. Paralelizar op eraiones Las diferenias entre ambas radian en la forma de implementar el ó digo y p or supuesto en el rendimiento que teóriamente nos puede ofreer una op ión u otra. En el aso de paralelizar tareas y apliado a nuestro aso, esta implementaión se basaría en que p pro esadores hiieran p tareas distintas e indep endientes on la nalidad de aumentar el rendimiento aumentando la pro dutividad. Ejemplos de esta forma de paralelizar se enuentran en simulaiones de Monte Carlo en la ual ada uno prueba on diferentes valores y a lo largo del tiemp o van omuniándose las aproximaiones. Paralelizar op eraiones desomp one una tarea en op eraiones dep endientes de manera distribuída. En nuestro aso esto será repartir el dominio de álulo en p partes, y asignarle ada parte a ada no do de álulo. La estrategia que aquí se prop one es la de paralelizar tareas, es deir, dejar a ada no do de álulo que ejeute sus op eraiones sobre un sub dominio. Esto es que ada no do alule un sub dominio de los mostrados en la gura 3.5. Está ténia se 12
3.2. PARALELIZACIÓN EN MÁQUINAS DE MEMORIA DISTRIBUIDA Figura 3.5: partiion de la malla en 8 subdominios ( grupo ) y altura top ográa z resp eto al 0 (Nivel de salida) send(),recv() send(),recv() send(),recv() send(),recv() Figura 3.6: esquema de omuniaión 1-D basa pues en rear varios sub dominios de álulo y onetarlos de manera onseutiva, es deir, implementar un esquema de omuniaión 1-Dimensional la ual sólo se hae on, omo mu- ho, dos no dos omo vemos en la gura 3.6. Para rear estos sub dominios y omo veremos en la siguiente seión, hemos de haer umplir alguna ondiión para que la paralelizaión sea efetiva. En este mo delo ada elda dep ende de sus veinas y en partiular, en el límite entre dos sub dominio de álulo, las eldas limítrofes dep enderán también de las eldas veinas. Por lo tanto neesitamos, para ada paso de tiemp o, transferir los valores de las eldas veinas de los sub dominios Ds−1 y Ds+1 que neesita el sub dominio Ds omo vemos en la gura 3.6. La parte ompleja de la paralelizaión es elegir la estrategia de omuniaión de estas variables omunes para ada sub dominio de entre las dos disp onibles: 1. Elegir un no do diretor que vaya reopilando las variables neesarias en ada paso de tiemp o y redistribuyéndolas. 13
CAPÍTULO 4. RESULTADOS DE LA PARALELIZACIÓN Además, para saar el Sp eed-up y el Rendimiento, se utilizará el tiemp o de ejeuión de 400 s. simulados. 4.2 Rendimiento en Tromb ón Los resultados que hemos obtenido en este luster son imp ortantes, dado que esta es la plataforma de la que disp one el grup o para haer sus simulaiones. Los rendimientos que se obtienen son bastante aeptables aunque hemos de tener en uenta que esta infraestrutura no se reó p ensando en lanzar apliaiones paralelas. Esto es algo que deb erá ser revisado en el futuro para obtener un mejor rendimiento de la instalaión. 0 1000 2000 3000 4000 5000 6000 7000 8000 9000 0 50 100 150 200 250 300 350 400 Execution time (s) Executed time (s) MPI - 1 nodes MPI - 2 nodes MPI - 4 nodes MPI - 8 nodes MPI - 16 nodes MPI - 28 nodes (a) Tiemp os de ejeuión frente a tiemp os ejeutados 0 5 10 15 20 25 30 5 10 15 20 25 Speed-Up # Threads Speed-Up Theorical Speed-Up (b) Sp eed-up en 400 s. de simulaión 0 0.2 0.4 0.6 0.8 1 5 10 15 20 25 Performance # Nodes 1-performance Performance () Performane en 400 s. de simulaión Figura 4.1: Tiemp os de ejeuión (a), sp eed-ud (b) y rendimiento () del aso C.1 en Trombón Aún así se ve en 4.1 que esala de manera lineal hasta 16. Esta diferenia entre 8 y 16 se deb e a que los resultados on 8 no dos son fruto de la ejeuión en 2 no dos físios, ada uno on 4 ores en el pro esador, es deir, el fator de omuniaión intra-no do solo inuye una vez en tanto que sólo existe una frontera entre un no do y otro, mientras que a partir de 8, p or ejemplo on 16, ya existe una máquina que tiene que omuniarse on otras dos. 20
4.3. RENDIMIENTO EN EL CLUSTER TERMINUS Si tuvieramos más no dos, sería esp erable que el rendimiento ba jase en este aso partiular según aumentásemos los no dos omo onseuenia de lo que veremos en la ejeuión de Caesaraugusta, que es que la relaion de eldas aluladas frente a eldas omuniadas se va haiendo ada vez sustanialmente mas p equeña. 4.3 Rendimiento en el luster Terminus En este luster , las pruebas se han heho ba jo una ompilaión altamente optimizada para la arquitetura a través del luster . Además es imp ortante notar que la ejeuión en menos de 4 no dos se hae on-hip, para 8 se hae on-b oard y para 16 intra-no do. 0 500 1000 1500 2000 2500 3000 3500 4000 0 50 100 150 200 250 300 350 400 Execution time (s) Executed time (s) MPI - 1 nodes MPI - 2 nodes MPI - 4 nodes MPI - 8 nodes MPI - 16 nodes (a) Tiemp os de ejeuión frente a tiemp os ejeutados 0 2 4 6 8 10 12 14 16 2 4 6 8 10 12 14 16 Speed-Up # Threads Speed-Up Theorical Speed-Up (b) Sp eed-up en 400 s. de simulaión 0 0.2 0.4 0.6 0.8 1 2 4 6 8 10 12 14 16 Performance # Nodes 1-performance Performance () Performane en 400 s. de simulaión Figura 4.2: Tiemp os de ejeuión (a), sp eed-ud (b) y rendimiento () del aso C.1 en Terminus Si bien es ierto que la optimizaión a la hora de la ompilaión es muy imp ortante, lo destaable de estos resultados es el rendimiento 4.2() que saa la paralelizaión. El heho de que aumente según aumentamos los no dos (hasta 8) es p orque se priman los aiertos en ahe, mientras que p or el lado ontrario, aumentando fuera del no do, se p enaliza la omuniaión intra-no do. De estos resultados también hay que resaltar que el tiemp o de ejeuión, ya sólo la ejeuión del ó digo sin optimizar, es algo inferior a 2 vees más rápida que en Trombon y algo más de 6 21
CAPÍTULO 4. RESULTADOS DE LA PARALELIZACIÓN vees más que en Caesaraugusta . Igual que suede en la máquina Trombon , a partir de 8 no dos el rendimiento se redue ligeramente debido a la misma razón. Aquí en ambio la onguraión es ligeramente distinta lo que implia onlusiones distintas: Terminus tiene 2 no dos físios, ada uno de ellos on una plaa dual y ada una de ellas on dos pro esadores; esta onguraión implia que a partir de uatro no dos no sale de la plaa p ero sí sale del pro esador. Es a partir de 8 uando sale del no do y se omunia on el otro no do. jémonos que la tendenia del sp eed-up es muy similar en amb os, aunque el p erformane sea algo sup erior en esta máquina. 4.4 Rendimiento en el luster RES-Caesaraugusta Caesaraugusta tiene una onguraión mejor preparada para esta paralelizaión que el resto de omputadoras donde se han heho pruebas y los resultados que salen son muy interesantes en este sentido. En este aso hemos p o dido haer pruebas on hasta 128 no dos de álulo aunque este número no sea el que mejor rendimiento ofree omo vemos en la gura 4.3. 0 5000 10000 15000 20000 25000 30000 0 50 100 150 200 250 300 350 400 Execution time (s) Executed time (s) MPI - 1 nodes MPI - 2 nodes MPI - 4 nodes MPI - 8 nodes MPI - 16 nodes MPI - 32 nodes MPI - 64 nodes MPI - 96 nodes MPI - 128 nodes (a) Tiemp os de ejeuión frente a tiemp os ejeutados 0 20 40 60 80 100 120 140 20 40 60 80 100 120 Speed-Up # Threads Speed-Up Theorical Speed-Up (b) Sp eed-up en 400 s. de simulaión 0 0.2 0.4 0.6 0.8 1 20 40 60 80 100 120 Performance # Nodes 1-performance Performance () Performane en 400 s. de simulaión Figura 4.3: Tiemp os de ejeuión (a), sp eed-ud (b) y rendimiento () del aso C.1 en Caesaraugusta 22
4.4. RENDIMIENTO EN EL CLUSTER RES-CAESARAUGUSTA De estos resultados se desprende la onlusión de que a partir de 40 partiiones, en este aso, la ganania empieza a ser menor. Una de las onlusiones más imp ortantes que p o demos saar, no sólo de esta ejeuión si no de to do el traba jo y que será desarrollada en más profundidad, es la resultante de que a la vista de los resultados, el tiemp o de ejeuión en 128 no dos de Caesaraugusta ompilado on gFortran, es muy similar al de 16 no dos en una máquina de más reiente onstruión omo es Terminus. El heho de utilizar esta máquina es la futura adaptaión a simulaiones de gran esala que nos p ermite esta máquina. De heho, su araterizaión y omo se ve en la siguiente seión, será una parte fundamental a analizar antes de ejeutar ualquier simulaión on el n de determinar la duraión de la misma. 23
24
Capítulo 5 Conlusiones y Traba jo Futuro 5.1 Conlusión del traba jo La ejeuión de apliaiones paralelas en sistemas que lo sop ortan es una muy buena forma de disminuir el tiemp o de ejeuión de éstas, p ero es imp ortante ono er las araterístias propias del sistema en el que se va a ejeutar. Igualmente, la paralelizaión de una apliaión es una tarea ompleja p ero que en asos en los que este tip o de estrategia puede funionar y donde los tiemp os de ejeuión son largos, da unos resultados muy p ositivos. Además el heho de que la evoluión atual de las arquiteturas pase de la evoluión que seguía según la Ley de Mo ore [10℄ a arquiteturas multi-pro esador [11℄ requiere de una adaptaión en la forma de implementar nuestras apliaiones on el n de explotar al máximo las apaidades que éstas p oseen. No ab e duda de que este paradigma de programaión es uno de los que más futuro tiene en adelante. Es imp ortante además tener en uenta de que en España, disp onemos de una infraestrutura muy buena para el álulo de apliaiones ientías, que pasa p or la RES 1 y a nivel Europ eo ontamos on otras omo la EGEE 2 que favoreen el uso de instalaiones dirigidas a álulos masivos que requieren de la omputaión paralela. 5.2 Traba jo Futuro La paralelizaión de la apliaión es sólo el prinipio de la optimizaión de la herramienta. El heho de explotar la infraestrutura de manera paralela no es lo únio que p o demos haer en esta apliaión para saar más rendimiento. Una de las mejoras que se prop onen para la implementaión paralelizada y para la seuenial es reorganizar las estruturas de datos para adaptalas a la jerarquía de ahes, aumentando su lo alidad y mejorando la esalabilidad en memoria ompartida. To dos los lúster que se han usado en este traba jo disp onen de pro esadores que uentan on unidades de álulo vetorial, el ual nos daría algo más de rendimiento en seiones muy onretas del ó digo y on una reorganizaión del mismo, p o dríamos obtener muho más utili- 1 http://www.bs.es 2 http://www.eu-egee.org/ 25
CAPÍTULO 5. CONCLUSIONES Y TRABAJO FUTURO zando estas unidades. En esta misma linea, las GPGPUs 3 están muy preparadas para este tip o de álulos y queda omo traba jo futuro el adaptar la apliaión a este tip o de arquitetura. Otra tarea deseable para ompletar el traba jo desrito, es el estudio en profundidad de métodos de partiión y la onseuente adaptaión del ó digo a partiiones de tip o 2-D, esto sup ondría rendimientos sup eriores a altos números de no dos de álulo y también enontrar nuevas formulaiones del tiemp o de álulo. Otra alternativa que hemos planteado ha sido la partiión según el gradiente de p endientes, que p or lógia hidráulia, determinaría la direión preferente del aue. En [15℄ explian formas de disernir estas direiones prefereniales. Ademas, es interesante aoplar al algoritmo de partiión el mo delo matemátio desarrollado para alular el tiemp o de ejeuión p or dos razones: dejar al usuario la lib ertad de elegir el tiemp o que le interesa que dure la simulaión, prop orionándole siempre una ota mínima del mismo, y p or el heho de que en infraestruturas diseñadas para este tip o de ejeuiones, es neesario indiar el tiemp o aproximado de la duraión de la ejeuión, on la nalidad de que el sheduler otorgue una prioridad u otra. 5.3 Conlusión p ersonal Para mí este traba jo, además de un enorme esfuerzo, ha supuesto un reto tanto aadémio omo p ersonal. El primer ontato on la apliaión me hizo p ensar en la diultad que entrañaría la paralelizaión de la misma, p ero igualmente el onvenimiento de que se obtendrían unos muy buenos resultados. Efetivamente y omo desde un momento se p ensó, la paralelizaión de una apliaión de estas araterístias es ompleja, p ero realmente es la únia forma de p o der onseguir unos tiemp os de ejeuión razonables. Como hemos visto, estos tiemp os de ejeuión se han reduido muhísimo resp eto a los tiemp os que había hasta el momento. Esto ha sido muy bien aogido dentro del Grup o de Investigaión de tal manera que en un futuro próximo se pueda replantear el soliitar de nuevo horas de álulo en infraestruturas de la RES o la ompra de algún equip o más para las simulaiones. Además de to do esto he enontrado muy neesario la omprensión físia del problema y la p ersp etiva de la implementaión del méto do para p o der avanzar en el traba jo; ha sido fundamental quitarme las gafas de informátio y p onerme desde el punto de vista del mo delo para ver más allá de asignaiones o bules. Desde luego, to do lo aprendido a lo largo de la arrera me ha sido altamente útil, desde el Cálulo o el Álgebra, hasta la Ingeniería del Software o los Fundamentos de Arquiteturas Paralelas. Estoy muy orgulloso de los resultados del traba jo y onsidero que el esfuerzo volado no sólo en este traba jo, sino durante to da la arrera, ha tenido su reomp ensa. 3 General Purp ose Graphi Pro essing Unit 26
Bibliografía [1℄ G. M. Amdahl. Validity of the single pro essor approah to ahieving large sale omputing apabilities. In Proeedings of the April 18-20, 1967, spring joint omputer onferene , AFIPS '67 (Spring), pages 483485, New York, NY, USA, 1967. ACM. [2℄ B. Chapman, G. Jost, and R. v. d. Pas. Using OpenMP: Portable Shared Memory Paral lel Programming (Sienti and Engineering Computation) . The MIT Press, 2007. [3℄ M. J. Flynn and K. W. Rudd. Parallel arhitetures. ACM Comput. Surv. , 28:6770, Marh 1996. [4℄ P. Garía-Navarro, P. Brufau, J. Murillo, and J. Burguete. Volúmenes nitos para euaiones hiperbólias . 2009. [5℄ W. Gropp, R. Thakur, and E. Lusk. Using MPI-2: Advaned Features of the Message Passing Interfae . MIT Press, Cambridge, MA, USA, 2nd edition, 1999. [6℄ J. L. Gustafson. Reevaluating amdahl's law. Commun. ACM , 31:532533, May 1988. [7℄ M. T. Health. Sienti Computing . MGraw Hill, 1997. [8℄ D. Helmb old and C. MDowell. Mo delling sp eedup (n) greater than n. Paral lel and Distributed Systems, IEEE Transations on , 1(2):250 256, Apr. 1990. [9℄ A. H. Karp and H. P. Flatt. Measuring parallel pro essor p erformane. Commun. ACM , 33:539543, May 1990. [10℄ G. E. Mo ore. Cramming more omp onents onto integrated iruits. Eletronis, Volume 38, Number 8 , April 1965. [11℄ G. E. Mo ore. No exp onential is forever. International Solid State Ciruits Conferene, February 2003. [12℄ J. Murillo and P. Garia-Navarro. Weak solutions for partial dierential equations with sour- e terms: Appliation to the shallow water equations. JOURNAL OF COMPUTATIONAL PHYSICS Volume: 229 Issue: 11 Pages: 4327-4368 , 2010. [13℄ J. Murillo, P. Garía-Navarro, J. Burguete, and P. Brufau. The inuene of soure terms on stability, auray and onservation in two-dimensional shallow ow simulation using triangular nite volumes. International Journal for Numerial Methods in Fluids , 54(5):543 590, 2007. [14℄ W. J. P. Silvia M Mueller. On the orretness of hardware sheduling mehanisms for out-of-order exeution. Journal of Ciruits, systems and Computers, Volume 8, No. 2 , 1998. 27
BIBLIOGRAFÍA [15℄ G. M. Stefano Orlandini and M. Franhini. Path-metho ds for the determination of nondisp ersive drainage diretions in grid-based digital elevation mo dels. Water Resoures Researh, VOL. 39, NO. 6, 1144 , June 2003. 28
Ap éndie A Análisis de ompilaión del ó digo La ompilaión de la apliaión es una parte fundamental en el estudio del rendimiento iniial que p o demos obtener sin haer ninguna optimizaión en el ó digo, p or lo que es interesante prestarle atenión a este paso del análisis iniial de la apliaión. Atualmente, el GHC desarrolla su apliaión en sistemas Windows y Linux on diferentes ompiladores para ada Sistema Op erativo. En linux, el ompilador utilizado hasta el momento es gFortran 1 en su versión 4.4. Éste ompilador forma parte de la iniiativa GNU y aparee en los rep ositorios oiales de los sistemas op erativos utilizados en el grup o (Debian ó Ubuntu). En Windows, el ompilador que se utiliza es Lahey Fortran 90 2 en su versión v.4.5 para 32 bits. Esta versión están en desuso p ero el preio de la herramienta y su amigable entorno de programaión hae que esta herramienta to davía tenga un p eso imp ortante dentro de los usuario de Windows del grup o. Los equip os que se utilizan a nivel usuario, son to dos Intel Core 2 Duo en diferentes variantes, p or lo que sab emos que la familia es la Intel R Core 2 que funionan en 64 bits. Se onsidera p or tanto, que es interesante analizar el rendimiento del ompilador de Intel R 3 on diferentes optimizaiones. A.1 Análisis de la ompilaión En una primera aproximaión al estudio del programa es interesante ono er dónde está p erdiendo tiemp o el ó digo y ver qué se puede haer on ello. Para esto vamos a utilizar una herramienta omerial, Intel R vTune Amplifer XE for Linux. Es imp ortante alarar que p or ser para una lab or aadémia no remunerada, me voy a aoger a la lienia non-ommerial 4 . Además de la itada herramienta, utilizaremos el ompilador de Intel R para este pro edimiento. El análisis se hará on el aso C.2 simulando 100 s. para evitar que la sobrearga iniial de prepro esamiento de la malla falsee los resultados. Esta premisa la mantendremos a lo largo del traba jo ya que esa sobrearga iniial se puede reduir optimizando esa seión y p or que entre otras osas, esa tarea no es paralelizable y p or lo tanto, no va a p o der reduirse on las estrategias 1 http://g.gnu.org/fortran/ 2 http://www.lahey.om/ 3 http://software.intel.om/en-us/artiles/intel-omposer-xe/ 4 http://software.intel.om/en-us/artiles/non-ommerial-software-development/ 29
APÉNDICE B. MODELO 2D DE FLUJO DE LÁMINA LIBRE CON PROMEDIO EN LA VERTICAL del movimiento en la direión vertial z se promedian las euaiones en esta direión haiendo uso de las deniiones de los promedios de las variables. ¯u=1 hZH zb udz (B.13) ¯v=1 hZH zb vdz (B.14) El pro eso de promediar en la vertial las euaiones onvierte el problema tridimensional en uno bidimensional de grosor variable h donde los ontornos ya no están en la sup erie libre y el fondo sino en el p erímetro. El promedio en la vertial de las euaiones del ujo de sup erie libre ba jo las hip ótesis del mo delo de aguas p o o profundas ondue a una versión muy omún del sistema de euaiones en 2D que rep etimos aquí: ∂h ∂t +∂(hu) ∂x +∂(hv) ∂y = 0 ∂(hu) ∂t +∂(hu2) ∂x +∂(huv) ∂y =−gh∂H ∂x +cfupu2+v2+hνT∇2u ∂(hv) ∂t +∂(huv) ∂x +∂(hv2) ∂y =−gh∂H ∂y +cfvpu2+v2+hνT∇2v B.2.1 Término de friión y mo delos de turbulenia El o eiente cf que aparee en el término de friión se expresa habitualmente en términos del o eiente de rugosidad de Manning n o de Chézy, cfupu2+v2=n2u√u2+v2 h4 3 (B.15) cfvpu2+v2=n2v√u2+v2 h4 3 (B.16) El o eiente de rugosidad n en la prátia se determina a partir de medidas exp erimentales o se estima a partir de valores que ya han sido almaenados en tablas. La euaión de Manning aquí desrita es de naturaleza empíria y p or tanto es el resultado de un pro eso de a juste a una urva de datos exp erimentales. La primera diultad que surge a la hora de usar este o eiente de rugosidad es la preisión on la que ha sido estimado. El o eiente n dep ende en prinipio del número de Reynolds del ujo, de la rugosidad de los ontornos y de la forma geométria de la uena. La rugosidad de la sup erie del ontorno representa un valor rítio a la hora de estimar n , on valores p equeños si el material es no y valores altos en el aso ontrario. El valor de n también deb e de dar uenta de la vegetaión retardando el ujo y prop orionando valores altos de n , dep endiendo también de la altura de agua. El mo delo de friión dado p or (B.15) y (B.16) se basa en la teoría de apa límite estaionaria sobre pared rugosa. Con el ob jeto de alular las variables hidro dinámias, es neesario jar el valor del o e- iente de Manning, omo ya hemos diho, y el valor de la visosidad inemátia de remolino. La visosidad turbulenta νT dep ende de las araterístias del ujo y puede variar de un punto a otro del dominio. Por tanto, es neesario plantear un mo delo de turbulenia que nos p ermita evaluar el valor de νT en ada punto del dominio. 36
B.2. ECUACIONES PROMEDIADAS EN LA VERTICAL B.2.2 Versión omún de las euaiones de aguas p o o profundas El término que proviene de promediar en la vertial el gradiente de presión ha dado lugar a los términos g∂H/∂x , g∂H/∂y , que a su vez se pueden desomp oner, teniendo en uenta que H=h+zb en g∂H ∂x =g∂h ∂x +g∂zb ∂x (B.17) g∂H ∂y =g∂h ∂y +g∂zb ∂y (B.18) Los términos ∂h/∂x , ∂h/∂y se agrupan junto a las otras derivadas del mismo tip o (términos onvetivos). Las variaiones del fondo se expresan en forma de p endiente S0x=−∂zb ∂x (B.19) S0y=−∂zb ∂y (B.20) Los términos de friión del agua on el fondo del aue se representan p or Sf , p endiente de la línea de energía en ada direión Sfx =cfu√u2+v2 gh (B.21) Sfy =cfv√u2+v2 gh (B.22) dando lugar al siguiente sistema de euaiones que es la forma más ono ida de representaión del mo delo de aguas p o o profundas ∂h ∂t +∂hu ∂x +∂hv ∂y = 0 (B.23) ∂hu ∂t +∂hu2 ∂x +gh∂h ∂x +∂huv ∂y =gh(S0x−Sfx) (B.24) ∂hv ∂t +∂huv ∂x +∂hv2 ∂y +gh∂h ∂y =gh(S0y−Sfy) (B.25) Este sistema de euaiones en su forma onservativa es deir, esritas las euaiones de la forma más erana p osible a un sistema de leyes de onservaión de masa y antidad de movimiento, es ∂U ∂t +∇E=S⇒∂U ∂t +∇·(F,G) = S (B.26) on U= h hu hv ,F= hu hu2+gh2 2 huv ,G= hv huv hv2+gh2 2 , S= 0 gh (S0x−Sfx) gh (S0y−Sfy) (B.27) 37
APÉNDICE B. MODELO 2D DE FLUJO DE LÁMINA LIBRE CON PROMEDIO EN LA VERTICAL U representa el vetor de variables onservadas ( h profundidad del agua (Fig. B.1), hu y hv audales unitarios a lo largo de las direiones o ordenadas x , y resp etivamente), F y G son los ujos de las variables onservadas a través de los lados de un volumen de ontrol, y ontienen el ujo onvetivo y los gradientes de presión hidrostátia. La parte dereha de la igualdad en el sistema de euaiones, S , ontiene las fuentes y sumideros de la antidad de movimiento a lo largo de las dos direiones o ordenadas, provenientes de las variaiones del fondo del aue y de las p érdidas p or friión que deb en estar relaionadas on el amp o de velo idades. De esta manera, (B.26) representa un sistema hip erb ólio de euaiones difereniales en derivadas pariales aopladas y no lineales. Si esribimos el sistema de euaiones en formulaión no onservativa ∂U ∂t + (A,B)·∇U=S (B.28) las matries Jaobianas de los vetores de ujo son A=∂F ∂U= 0 1 0 c2−u22u0 −uv v u ,B=∂G ∂U= 0 0 1 −uv v u c2−v20 2v (B.29) y la matriz Jaobiana del ujo normal a una direión dada p or ˆ n se puede esribir omo A=Aˆnx+Bˆny= 0 ˆnxˆny −u(u·ˆ n) + c2ˆnxu·ˆ n+uˆnxuˆny −v(u·ˆ n) + c2ˆnyvˆnxu·ˆ n+uˆny (B.30) Los valores propios del Jaobiano Jn son a1=u·ˆ n+c a2=u·ˆ n a3=u·ˆ n−c (B.31) y sus vetores propios e1= 1 u+cˆnx v+cˆny ,e2= 0 −cˆny cˆnx ,e3= 1 u−cˆnx v−cˆny (B.32) B.3 Esquema numério El dominio donde se mueve el ujo, se sub divide, en un onjunto de eldas para su resoluión numéria. En el mo delo presentado hay lib ertad a la hora de elegir el tip o de eldas: hexágonos, uadriláteros, triángulos, et... y además pueden formar parte de una malla estruturada o de una malla no estruturada. La eleión de la malla es un fator imp ortante en la simulaión numéria. Resp eto a la ténia de resoluión de las euaiones, se ha usado un méto do de volúmenes nitos p orque ombina lo mejor de los méto dos de elementos nitos y su exibilidad geométria, on lo mejor de los méto dos en diferenias nitas, su exibilidad en la deniión del ujo disreto (valores disretos de las variables dep endientes y sus ujos aso iados). El primer paso es esribir (B.28) en la forma ∂U ∂t +−→ ∇E=S (B.33) donde E= (F,G)T . 38
B.3. ESQUEMA NUMÉRICO Apliando el teorema de Gauss sobre la elda de álulo Ωi ja en el tiemp o, (B.33) se esrib e omo: ∂ ∂t ZΩi UdΩi+I∂Ωi Endl =I∂Ωi Tndl (B.34) donde Tn es un vetor que expresa el término fuente a través de la sup erie ∂Ω , l denota la variable de integraión de la sup erie alrededor del volumen Ωi y n es el vetor exterior normal unitario. Una vez formulado el problema en volúmenes nitos se ha de elab orar una estrategia adeuada para alular el ujo numério a través de la sup erie. La forma hip erb ólia del sistema de euaiones hae que este problema sea resuelto adeuadamente utilizando un esquema numério p erteneiente a la familia de los méto dos de Go dunov. Este tip o de méto do alula el ujo numério que atualiza el valor de ada elda de álulo i promediando el valor de las diferentes soluiones aproximadas que apareen al denir un problema de Riemann en la sup erie entre el volumen y ada uno de los volúmenes veinos j . Dentro las p osibles op iones que p ermiten generar una soluión aproximada, en este traba jo se utiliza la aproximaión propuesta p or Ro e, que a diferenia de otras onsidera to das las velo idades de propagaión de informaión ontenidas en el Jaobiano de la matriz. Cuando apareen términos fuente formularlos a través de una matriz en la pared, omo en (B.35) , p ermite desarrollar soluiones aproximadas más omplejas adeuadamente. De esta manera, el ujo normal En y su jaobiano obran protagonismo. Se evalúa la matriz jaobiana del ujo normal y se diagonaliza, p ermitiendo que el esquema numério se base en vetores y valores propios. La matriz Jaobiana Jn será la base para llevar a ab o la disretizaión numéria que se presenta en este traba jo. Para omenzar la ténia de volúmenes nitos, el sistema (B.28) se integra en el volumen o malla de eldas, Ω : ∂ ∂t ZΩ UdΩ + ZΩ (−→ ∇E)dΩ = ZΩ SdΩ (B.35) se asume que la terera integral se puede formular de la siguiente manera: ZΩ SdΩ = I∂Ω (Tn)dl (B.36) donde T es una matriz adeuada. Esto lleva a la siguiente formulaión: ∂ ∂t ZΩ UdΩ + I∂Ω Endl =I∂Ω Tndl (B.37) Cuando el dominio se sub divide en eldas Ωi en una malla ja en el tiemp o, Figura B.2, la euaión (B.37) también se puede apliar a ada elda. ∂ ∂t ZΩ UidΩi+ NE X k=1 Zek+1 ek Ejnklk= NE X k=1 Zek+1 ek Tnklk (B.38) En el primer orden las antidades vetoriales son uniformes en ada elda y la euaión (B.37) queda reduida a: (Un+1 i−Un i) ∆tAi+ NE X k=1 (δE−T)knklk= 0 (B.39) donde δE=Ej−Ei , on Ej y Ei el valor de la funión E en la elda veina j y en la elda i resp etivamente y onetadas a través del lado k , nk es el vetor normal haia afuera del b orde 39
APÉNDICE B. MODELO 2D DE FLUJO DE LÁMINA LIBRE CON PROMEDIO EN LA VERTICAL Figura B.2: Representaión onstante de las varaibles en ada elda. de la elda k , lk es la longitud orresp ondiente a diho b orde, NE es el número de b ordes que neesita para denir la elda y Tk es término fuente evaluado en la pared. Debido al aráter no lineal del ujo E , el Jaobiano aproximado, e Jn,k p ermite una linealizaión lo al δ(En) = e Jn,k δU (B.40) dando lugar a un sistema on 3 valores propios reales e λm k y vetores propios e em k , que se onstruyen on las siguientes variables promedio euk=ui√hi+ujphj √hi+phjevk=vi√hi+vjphj √hi+phjeck=rghi+hj 2 (B.41) dando lugar a e λ1 k= (e un +ec)ke λ2 k= (e un)ke λ3 k= (e un −ec)k (B.42) y e e1 k= 1 eu+ecnx ev+ecny ke e2 k= 1 −ecny −ecnx ke e3 k= 1 eu−ecnx ev−ecny k (B.43) Las matries e Pk y e P−1 k , se pueden onstruir a partir de los vetores propios e em k de e Jn,k de forma que la diagonalien e Jn,k = (e PΛe P−1)ke Pk=e e1 ke e2 ke e3 k (B.44) donde e λm k son los valores propios de la matriz diagonal Λ . También, a partir de la matriz Jaobiana aproximada e Jn,ke em k=e λm ke em km= 1,2,3 (B.45) El problema se redue a un problema unidimensional proyetado sobre la direión n en ada b orde de elda. Además, la diferenia del vetor δU a través de ada lado de la elda se proyeta sobre la base de vetores propios δUk= 3 X m=1 (αe e)m k (B.46) 40
B.3. ESQUEMA NUMÉRICO Donde las expresiones que dan los o eientes αk son: α1,3 k=δhk 2±1 2eck (δqk−e ukδhk)nkα2 k=1 2eck (δqk−e ukδhk)nT,k (B.47) on nT,k = (−ny, nx) . La ontribuión de δ(En)k en una elda k se puede esribir omo: δ(En)k= 3 X m=1 (e λαe e)m klk (B.48) Siguiendo la disretizaión uniada, los términos fuente (Tn)k se esrib en de la siguiente manera: (Tn)k=0−ge h(δz +dnSf)nx−ge h(δz +dnSf)nyT k (B.49) donde siguiendo Sf,k =n2e un|e u|dn m´ax(hi, hj)4/3k (B.50) siendo dn es la distania entre los entroides de las eldas que omparten el lado k proyetado sobre la direión n . La p endiente del fondo y el término de friión se pueden desomp oner en la base de los vetores propios on el ob jetivo de asegurar el equilibrio disreto on los términos de ujo (B.48), de tal manera que se asegura en los asos estaionarios on velo idad nula y no nula: (Tn)k=e PkBk= 3 X m=1 (βme em)k (B.51) on Bk=β1β2β3T k . Los o eientes son β1,3 k=∓eck 2(δz +dnSf)kβ2 k= 0 (B.52) El esquema desentrado explíito de primer orden toma la forma Un+1 i=Un i+ ∆t NE X k=1 Ψn i,k (B.53) donde la ontribuión de ada lado de la elda, Ψi,k , sólo reoge la informaión en la direión entrante, Figura (B.3): Ψi,k = 3 X m=1 ((e λ−α−β−)e e)m klk/Ai (B.54) donde e λ−=1 2(e λ−|e λ|) y β−=1 2(β−|β|) . Para nuestro algoritmo y omo nos hemos referido en to do el traba jo, la variable W es Wn i= [Wn i,1, W n i,2, W n i,3] (B.55) Donde Wn i,1=Un i,1, W n i,2=Un i,2/Un i,1, W n i,3=Un i,3/Un i,1 (B.56) 41
APÉNDICE B. MODELO 2D DE FLUJO DE LÁMINA LIBRE CON PROMEDIO EN LA VERTICAL Figura B.3: Seleión de la informaión neesaria en el méto do desentrado. 42
Ap éndie C Gestión del proyeto software La traza temp oral del desarrollo del traba jo ha sido algo variable en el tiemp o. En un iniio, se planteó el desarrollo del Proyeto desde el día 15 de Septiembre de 2010, on intenión de que para abril estuviera terminado. En medio de este tiemp o, tuve que realizar una parada del traba jo desde el 20 de diiembre hasta el 12 de febrero on motivo de los último exámenes de los estudios de Ingeniería Informátia. A partir del día 12 de febrero, volví a inorp orarme al desarrollo del proyeto, on el inonveniente de que esos asi 2 meses de "parón", supusieron una p erdida de adherenia en uanto a la soltura de desarrollo del ó digo se reere. Con esta distribuión temp oral pues, me referiré a dos tramos bien difereniados del PFC: el primero que va desde el 15 de septiembre hasta el 20 de diiembre de 2010 y el que va desde el 12 de febrero hasta el 30 de abril. Si bien es ierto que para el primer p erio do tenía terminado una buena parte del PFC, quedaba to davía lo más ompliado, que onernía a la paralelizaión en máquinas de memoria distribuida. Durante ese primer p erio do, se desarrollaron las tareas de análisis de ó digo, análisis de ompilaión y desarrollo de la estrategia de paralelizaión en máquinas de memoria ompartida además de la inorp oraión de una herramienta de gestión de versiones y un seminario a los miembros de GHC para expliarle el uso del mismo. Durante el segundo, estuvo dediado prátiamente al desarrollo del ó digo adaptado a paralelizaión en máquinas de memoria distribuida y al desarrollo del texto del PFC que ha onsistido en fusionar los sub do umentos que iba haiendo según desarrollaba las distintas tareas y revisarlos en su onjunto. Esto queda reejado en la gura C.1. Figura C.1: Diagrama de Gantt del Proyeto 43
APÉNDICE C. GESTIÓN DEL PROYECTO SOFTWARE Además de las tareas esp eiadas en el diagrama, se han ido haiendo otras paralelas omo el desarrollo de herramientas de prepro esado de las mallas y p ostpro esado, o sripts útiles para el estudio de los rendimientos. Así mismo, no están inluídos los aprendiza jes que han onllevado el uso de to das las herramientas que se han usado durante el traba jo. Durante to do el proyeto han apareido ompliaiones a distintas esalas, de las uales hay dos muy destaables. La primera la ompliaión que apareió en un momento determiniado p or el mal funionamiento de la apliaión paralelizada on MPI. Llevó 2 días depurar el mal funionamiento para determinar que era p or un fallo en una iniializaión que no había apareido hasta ahora p or el ompilador que se utilizaba. El segundo gran obstáulo fue la adaptaión al uso de la infraestrutura en Caesaraugusta. Hasta ahora nuna había traba jado on olas de ejeuión ni on el ompilador XLF ni las optimizaiones que se utilizan. Ni muho menos me onsidero ahora un exp erto en ello, p ero sí he ogido solutura on esta forma de ejeutar apliaiones. La dediaión al proyeto ha sido de una media diaria de 9 horas reales, que teniendo en uenta un fator de uso del 90 % hae un total de 822 horas reales ó 739 horas efetivas. Para la mejor omprensión del méto do y de la meánia de uídos, he asistido (y sigo ha- iéndolo) omo oyente a la asignatura Fundamentos de Fluidos y Pro esos Fluido dinámios de 2 o urso de Ingeniería Industrial on un montante de 4 horas semanales desde el 18 de febrero de 2011. 44
Ap éndie D Casos de análisis En este anexo se desrib e on más profundidad los asos que se han elegido para estudiar el rendimiento de la paralelizaión así omo los motivos de su eleión. Aquí se puede enontrar p or lo tanto, una oleión de resultados referentes al traba jo desarrollado. D.1 Caso C.1 - Dos dep ósitos Este aso llamado así p or su geometría, resuelve la evoluión de un uido que iniialmente está en un dep ósito C1 onetado p or un anal a un segundo dep ósito C2 . La geometría exata del aso es omo se esp eia en la gura D.1. Se ha elegido este aso p orque tiene una evoluión temp oral en el tiemp o en la arga omputaional, ya que iniialmente el 50 % de las eldas están mo jadas, pasando en un tiemp o determinado (20 s.) a estar el 100 % de las eldas mo jadas on lo que se pretende ver la impliaión que tiene este desequilibrado iniial en el tiemp o de ejeuión on la paralelizaión. Cuando se emp ezó a diseñar este aso se p ensó que sería bueno, para mo diar las ondiiones de omuniaión, variar la anhura del anal p or el que se omunian las dos ub etas. Lo que no se esp eraba era que esto iba a haer ambiar las ondiiones del problema dado que, al disminuir la anhura del anal, aumentan las velo idades a las que pasa el agua (ver gura D.2 y esto hae ondiionar el paso de tiemp o, lo que mo dia totalmente el problema y los resultados pasan a no ser omparables. Como se ve en la gura D.2, el aso que mas velo idad lleva es el que tiene una anhura de anal más p equeña, p ero el que más tarda es el que tiene una anhura intermedia (de 30 m.) p or lo que es ese el que elegiremos omo aso para probar los rendimientos. En la misma gura se ve el tiemp o de ejeuión del aso que se utilizó para medir lo que se está expliando. Es imp ortante notar que los tiemp os que ahí apareen no son on las mismas ondiiones on las que se desarrollará el aso. En partiular, la simulaión la haremos de 400 s. on un volado de tiemp o ada 200 pasos de tiemp o. Además se ha utilizado un CFL=0.9 y un o eiente de Manning m= 0,03 . Los resultados de esta simulaión son los utilizados en el análisis del traba jo, así que están ya suientemente expliados. De ellos se dedue, para to dos los asos que la evoluión que se sufre en la arga sí rep erute en los tiemp os de ejeuión. Como p o demos ver en la gura D.3 el 45
APÉNDICE D. CASOS DE ANÁLISIS 0 500 1000 1500 2000 2500 3000 3500 4000 4500 5000 10000 15000 20000 25000 30000 35000 Execution time (s) Executed time (s) MPI - 1 nodes MPI - 2 nodes MPI - 4 nodes MPI - 8 nodes MPI - 16 nodes (a) Tiemp os de ejeuión frente a tiemp os ejeutados 2 4 6 8 10 12 14 16 2 4 6 8 10 12 14 16 Speed-Up # Threads Speed-Up Theorical Speed-Up (b) Sp eed-up en 36500 s. de simulaión 0 0.2 0.4 0.6 0.8 1 2 4 6 8 10 12 14 16 Performance # Nodes 1-performance Performance () Performane en 36500 s. de simulaión Figura D.8: Resultados de ejeuión del aso C.2 en Terminus Este es un buen ejemplo del rendimiento que nos ofree la ejeuion uando iniialmente sab emos que se van a haer álulos en to das las eldas. Este ejemplo puede servir para saar un rendimiento límite para este problema. Simularemos durante 1000 s. El primer análisis lo vamos a efetuar sobre la simulaión en Trombón . En este luster , el rendimiento es bastante aeptable según vemos en las gráas de la gura D.12. En ellas nos enontramos que el Rendimiento deree de manera notoria a partir de 16 no dos. Hay que tener en uenta que aquí hemos heho una simulión on 32 no dos. Estos no dos son virtuales en el sentido de que ada pro esador de Tromb ón disp one de 4 ores y 8 threads, en partiular, hemos heho traba jar a 4 de los pro esadores on 5 threads para ver omo iba el rendimiento y omo vemos deree rápidamente on ejeuiones de este estilo. Sigue ganando algo, p ero el reimiento es muho menor. Esto nos reuerda a los resultados que presentamos en seiones anteriores para la implementaión Op enMP, en los uales nos enontrábamos que a partir de 4 threads en esta máquina, el reimiento del Sp eed-up era menor que el pro duido hasta 4 threads. En la ejeuión en el luster terminus los resultados son sup eriores, igual que en el aso anterior, a los de Trombón . En este aso el rendimiento que saa la apliaión es sup erior al 90 % . 52
D.3. CASO C.3 - CROSS 0 5000 10000 15000 20000 25000 30000 35000 40000 5000 10000 15000 20000 25000 30000 35000 Execution time (s) Executed time (s) MPI - 1 nodes MPI - 2 nodes MPI - 4 nodes MPI - 8 nodes MPI - 16 nodes MPI - 24 nodes (a) Tiemp os de ejeuión frente a tiemp os ejeutados 0 5 10 15 20 25 30 5 10 15 20 Speed-Up # Threads Speed-Up Theorical Speed-Up (b) Sp eed-up en 36500 s. de simulaión 0 0.2 0.4 0.6 0.8 1 5 10 15 20 Performance # Nodes 1-performance Performance () Performane en 36500 s. de simulaión Figura D.9: Resultados de ejeuión del aso C.2 en Caesaraugusta Figura D.10: Geometría del problema C.3 53
APÉNDICE D. CASOS DE ANÁLISIS Figura D.11: 64-partiion de la malla del problema C.3. 0 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000 0 100 200 300 400 500 600 700 800 900 1000 Execution time (s) Executed time (s) MPI - 1 nodes MPI - 2 nodes MPI - 4 nodes MPI - 8 nodes MPI - 16 nodes MPI - 32 nodes (a) Tiemp os de ejeuión frente a tiemp os ejeutados 0 5 10 15 20 25 30 35 5 10 15 20 25 30 Speed-Up # Threads Speed-Up Theorical Speed-Up (b) Sp eed-up en 1000 s. de simulaión 0 0.2 0.4 0.6 0.8 1 5 10 15 20 25 30 Performance # Nodes 1-performance Performance () Performane en 1000 s. de simulaión Figura D.12: Resultados de ejeuión del aso C.3 en Trombón 54
D.3. CASO C.3 - CROSS Como vemos en la gura, el Sp eed-Up es muy erano al teório sobrepasándolo, igual que en el aso anterior, en la ejeuión en 8 ores. 0 500 1000 1500 2000 2500 3000 3500 4000 4500 5000 0 100 200 300 400 500 600 700 800 900 1000 Execution time (s) Executed time (s) MPI - 1 nodes MPI - 2 nodes MPI - 4 nodes MPI - 8 nodes MPI - 16 nodes (a) Tiemp os de ejeuión frente a tiemp os ejeutados 0 2 4 6 8 10 12 14 16 2 4 6 8 10 12 14 16 Speed-Up # Threads Speed-Up Theorical Speed-Up (b) Sp eed-up en 1000 s. de simulaión 0 0.2 0.4 0.6 0.8 1 2 4 6 8 10 12 14 16 Performance # Nodes 1-performance Performance () Performane en 1000 s. de simulaión Figura D.13: Resultados de ejeuión del aso C.3 en Terminus Como onlusión general y vistos los tres asos en Terminus on la onguraión en la que atualmente está dispuesto, la ejeuión on 8 ores saa los mejores rendimientos en general, lo que nos hae p ensar que la onguraión de hips-on-b oard es muy adeuada para este tip o de ejeuiones. Si bien está onguraión es más ara que onetar los no dos en red, para simulaiones en las que queramos un buen rendimiento sin ser tiemp os de ejeuión exesivamente largos, esta onguraión funiona realmente bien. El último luster en el que hemos realizado las pruebas de rendimiento es en Caesaraugusta . En la gura D.14 p o demos omprobar lo onstante que es el rendimiento. En este aso se hae muy p o o aeso a memoria ya que éste sólo tiene relevania en la preparaión del aso (fator t0 ) que es donde se haen álulos de preparaión de dominio. A diferenia de otros asos el fator ahe no inuye de manera drástia y los fatores que van a determinar el tiemp o de álulo van a ser el tiemp o de álulo y el tiemp o de omuniaión. El segundo fator es onstante en to dos los asos, ya que en el aso en el que la partiión sea 2, la frontera que más paredes sop orta on muha diferenia es la entral, igual que en el resto de los asos, luego el fator que variará según 55
APÉNDICE D. CASOS DE ANÁLISIS ampliemos el dominio, será uniamente el tiemp o de álulo. el heho de que la infraestrutura sea tan homogenea, nos lleva a expliar ese rendimiento onstante. 0 5000 10000 15000 20000 25000 30000 35000 0 100 200 300 400 500 600 700 800 900 1000 Execution time (s) Executed time (s) MPI - 1 nodes MPI - 2 nodes MPI - 4 nodes MPI - 8 nodes MPI - 16 nodes MPI - 32 nodes (a) Tiemp os de ejeuión frente a tiemp os ejeutados 0 5 10 15 20 25 30 35 5 10 15 20 25 30 Speed-Up # Nodos Speed-Up Theorical Speed-Up (b) Sp eed-up en 1000 s. de simulaión 0 0.2 0.4 0.6 0.8 1 5 10 15 20 25 30 Rendimiento # Nodos 1-performance Performance () Performane en 1000 s. de simulaión Figura D.14: Resultados de ejeuión del aso C.3 en Caesaraugusta Como onlusión de este aso, se ve que las velo idades de pro esamiento y de omuniaión haen variar muho los rendimientos de una máquina a otra. Los resultados obtenidos son muy buenos en to dos los asos on los maties anteriormente omentados. 56
Ap éndie E Regresion de la euaion tx en Caesaraugusta En el apítulo anterior hemos intro duido la fórmula del tiemp o de ejeuión de la forma texec =t0+ (texec1∗ncells) + ((tcomm1∗Nf,s)∗3) (E.1) y omo hemos expliado en éste, p o demos aproximarla a texec = 0 t0+ (texec1∗ncells) + ((tcomm1∗Nf,s)∗3) (E.2) Es un ejeriio interesante ver, lo bien que se a justa esta funión a la realidad, para p o der así predeir a priori el tiemp o de ejeuión aproximado que nos tomará una simulaión on nuestro mo delo de paralelizaión. (a) alado iniial h9 del aso de estudio (b) Distribuión de dominios do, d1 Figura E.1: Diseño del exp erimento de regresión Para haer éste análisis, lo que haremos será tomar el aso C.3 mo diado on una h0= 5m y vamos a dejar que evoluione durante 17s. , tiemp o que requiere llegar al segundo dominio. Esta mo diaión además implia que iniialmente hay un 12 % de eldas mo jadas en el dominio d0 y ninguna en el dominio d1 . Por último saaremos tiemp os de ejeuión en ada paso de 57
APÉNDICE E. REGRESION DE LA ECUACION TX EN CAESARAUGUSTA tiemp o, haiendo una relaión celdasmojadas −tx y apliaremos una regresión lineal de la funión. 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 20000 30000 40000 50000 60000 70000 Tiempo de ejecucion Celdas Mojadas Experimental times Regression Figura E.2: Diseño del exp erimento de regresión Los resultados se a justan muy bien a esta funión omo vemos en la gura E.2 y omo se observa, existen valores que destaan en tiemp os no determinados. Estos valores se orresp onden al jitter anteriormente nombrado que igualmente, no altera demasiado el resultado. Los resultados del a juste a una funion f(x) = ax +b son a= 4,11272e−06, b = 0,00242021, RMS = 0,0080191 (E.3) Ajustamos a esta funion dado que la funion E tiene el elemento ((tcomm1∗Nf,s)∗3) onstante en el tiemp o (similar al término b ) y en nuestro aso el término a∗x es el término (texec1∗ncells) . Lo que si es urioso es el desa juste del origen de ordenadas. Esto puede ser p or que on p o as eldas, los tiemp os de ejeuion son muy p equeños y p or lo tanto la mediion de los mismos es ms suseptible de error. Caraterizando la euaión a nuestros términos y para el aso de estudio y teniendo en uenta que b= 2 ∗n0,1∗tcomm ∗3 siendo n0,1 número de paredes en la interseión (0,1) que en nuestro aso es n0,1= 82 , se dedue que el tiemp o de omuniaión de un elemento es, tcomm =0,00242021 2∗3∗82 = 0,000004919s. (E.4) Con lo que la euaión queda tx= 4,11272 ∗10−6∗ncell + (4,919 ∗10−6∗3∗2∗n0,1) (E.5) En general, para los asos en los que tenemos más seiones y además estas seiones no están totalmente equilibradas, el tiemp o de ejeuión de una iteraión on esta fórmula se reesrib e omo, tx= 4,11272 ∗10−6∗(MAX(ncell) + (4,919 ∗10−6∗3∗2∗V∗MAX(ni,j))) (E.6) Siendo MAX(ncell) el máximo número de eldas impliadas y MAX(ni,j) la seión que más paredes omparte on sus veinas. Nótese que áparee un término V en la euaión. Este término es el número de veinos de la seión, que para el aso anterior era V= 1 , p ero que en general, 58
esto sólo se umple en la primera seión y en la última, el resto de sub dominios tienen 2 veinos. Sin p o der extenderlo para to dos los asos, salvo para aquél en el que to do el tiemp o to das las eldas tengan alado h > 0 , p o demos deduir el término general omo tXtotal =I∗(4,11272e−06 ∗(MAX(ncell) + (4,919 ∗10−6∗3∗2∗V∗MAX(ni,j)))) (E.7) donde I es el número total de iteraiones neesarias para alanzar el tiemp o de simulaión. 59
60
Ap éndie F Equip os de simulaión F.1 Caraterístias de Caesaraugusta En este equip o, las simulaiones se han heho sin aprovehar to das las araterístias espaiales que la infraestrutura nos p ermitía, obligándole a utilizar un pro esador, de los dos disp onibles, p or no do. Por tanto, en esta onguraión uando nos reramos a no do, nos referimos a no do físio, y hemos de tener en uenta que ada no do está onetado p or red. 1. Pro essor: 512 pro essors PowerPC 970FX 2.2 GHz 2. Memory: 1TB RAM memory 3. Network: Interonnetion networks Myrinet 4. System: Linux 5. Total No des: 256 No des F.2 Caraterístias de Terminus Dos pro esadores p or blade. Nuestro luster está formado p or dos Blades onetados p or Gigabit, y la omuniaión intra-blade es en plaa a través de una plaa base dual. En este equip o se utilizarán primero los ores del pro esador omo no dos de álulo (4), pasando a los ores totales p or blade (8) esalando p or último a los ores totales en nuestro luster (16). 1. Pro essor: 4 778I Xeon Quad ore 2. Memory: 4 Mbytes/pro essor 3. Network: Interonnetion networks Gigabit 4. System: Linux 5. Total No des: 2 No des Los parámetros de ompilaión ongurados p or los ténios del luster son los siguientes: 61
APÉNDICE I. MANUAL DE SUBVERSION desarrolla gran parte del ó digo fuente y de forma esp orádia apareen mo diaiones de otros, mediante las uales se prop onen funionalidades nuevas readas de forma paralela. Este tip o de desarrollos deb en haerse ba jo dos pautas: • Do umentar ualquier ambio pro duido en el ó digo prinipal y en los sub ó digos en desarrollo • Mantener un orden ba jo el amparo de un árb ol de proyeto. La primera ha de ser estableida p or el autor prinipal del ó digo debiendo ser seguido p or to dos los desarrolladores mientras que para la segunda será para la que es neesaria utilizar herramientas de ontrol de versiones. I.2.1 Estrutura de proyetos software en ámbitos ientíos Para denir la estrutura de este tip o de proyetos, antes deb emos indiar qué elementos omp onen el proyeto y de que manera. Para ello p o demos basarnos en MÉTRICA, una meto dología promovida p or el Ministerio de Administraiones Públias del Gobierno de España para la elab oraión y sistematizaión de atividades propias del ilo de vida de los proyetos software, esp eialmente para el ámbito de las administraiones públias, p ero válidas y reomendables para ualquier otro. Según la meto dología MÉTRICA v.3, los elementos de onguraión inluyen: • Ejeutables • Có digo Fuente • Mo delos de Datos • Pruebas • ... To das ellas almaenando: • Nombre • Versión • Estado • Lo alizaión To do esto, deb e estar onjuntado en el proyeto de una manera organizada según la estabilidad de los heros ontenidos, pudiendo estableer esta lasiaión: • Prinipal (SVN Trunk): Rama de desarrollo prinipal • Congelaión (SVN Tags): Rep ositorio on las versiones prinipales erradas • Evlouión (SVN Branhes): Rama de evoluiones del desarrollo prinipal 68
I.3. USO DE SVN I.2.2 Estrutura de proyetos software en SVN A partir de la deniión de la estrutura genéria mínima que deb ería tener to do proyeto software, la traduión a SVN, on mo delo de arp etas, sigue omo en la siguiente gura: Para que este esquema se mantenga onsistente, se reomiendan las siguientes prátias: • Atualizar al entorno lo al las últimas mo diaiones que se hayan p o dido pro duir en el ó digo. Es imp ortante tener en uenta que hemos de tener el proyeto ya desargado en lo al. Este omando es update • Subir al servidor SVN los ambios del entorno lo al. SVN sólo p ermitirá estas mo diaiones si no existen onitos on el ó digo ya existente en el rep ositorio, es deir, no p ermitira la mo diaión de un ó digo si otro miembro del equip o ha mo diado el mismo elemento de forma paralela desde la última sinronizaión de ó digo. El omando es Commit. Dado que este último requisito, puede plantear problemas, se prop one el siguiente proto olo: • Antes de omenzar la resoluión de una tarea, se deb erá asegurar la sinronizaión del ó digo via Update . • Una vez resuelta la tarea, se deb erá haer otro Update para traer al entorno lo al los ambios que hayan p o dido ser realizados en paralelo, teniendo en uenta que SVN sabrá integrar los ambios en la mayoría de los asos, siendo en otros neesaria la integraión manual (p.e. un ambio en el mismo bule). Estos asos deb erían no existir en tanto que dos p ersonas no deb erían estar to ando la misma seión de ó digo. • Finalmente haemos ommit para haer públio el ó digo desarrollado. El alanze del ommit deb e limitarse al ó digo relevante a la resoluión de la tarea, y no mezlar desarrollos de distintas tareas en un mismo Commit. IMPORTANTE: Para ompletar el sentido de este tip o de gestiones, ab e destaar que SVN disp one de herramientas para umplir on los requisitos antes itados mediante Logs. Esto es que ada vez que haemos ommit , se deb e de inluir un p equeño omentario on los ambios aonteidos. I.3 Uso de SVN A través de SVN p o demos p oner en prátia las pautas anteriormente itadas para la gestión de proyetos. Por esta razón se va a disernir de dos usos de SVN en gestores y desarrolladores. Esto es que el Gestor (p ersona únia) ha de ser el resp onsable de errar versiones y rear nuevas ramiaiones del proyeto, siendo igualmente interesante que to do el mundo onoza el proto- olo p or si pudiese ser interesante prop oner un ambio al proyeto. I.3.1 Instalaión del liente SVN La eleión del liente SVN es libre en tanto que existen multiud de ellos, aunque aquí se reomendará RapidSVN p or la existenia de éste tanto para distribuiones Linux, omo para Windows o MaOS. Si bien es ierto que las expliaiones que aquí se adjuntan están p ensadas para el entorno gráo, es p osible para los usuarios de Linux igual para aquellos que están aostumbrados a traba jar on la onsola, el manejo de SVN mediante omandos en onsola. 69
APÉNDICE I. MANUAL DE SUBVERSION I.3.1.1 Instalaión en entornos Windows 1. Ir a www.rapìdsvn.org/download/release/ 2. Elegir la última versión disp onible 3. Desargar RapidSVN-x.x.xx.xxxx.exe 4. Seguir instruiones de instalaión I.3.1.2 Instalaión en Linux (Debian) 1. Aeder omo Single-User 2. Ejeutar el omando apt-get instal l rapidsvn I.3.2 SVN para gestores La seión que sigue está reomendada sea heha p or el administrador del equip o en el que vaya a instalarse el servidor. Nótese que la expliaión está heha para distribuiones Debian p or el aso que nos o upa. I.3.2.1 Instalaión del servidor SVN Los pasos que se presentan son los básios para la onguraión de SVN. Es imp ortante ono er el heho de que to da la instalaión se hará en Single-User. Cab e destaar que está inluido en los paquetes de Debian. 1. Aeder a Single User: su 2. Ejeutar el siguiente omando: #apt-get instal l subversion subversion-tools 3. Añadimos el grup o para el demonio aso iado al serviio. #groupadd -g 99 svnd 4. Y el usuario del grup o: #useradd svnd -d /srv/svn -g svnd -s /bin/false -m -k /dev/nul l - Úsuario svnServe'-u 99 5. Creamos la arp eta donde alo jaremos los rep ositorios, p or ejemplo /svn on mkdir /svn 6. Creamos un sript, alo jado en /et/init.d/ llamado svnserve, en el que se inluya lo siguiente. (Ver ó digo) 7. Añadimos al nal los enlaes simb ólios on #update-r.d svnserve defaults 1 \# ! / b i n / s h 2 \# 3 \# s t a r t / s t o p s v n ( S u b v e r s i o n ) s e r v e r . 4 set -e 5 N A M E = s v n s e r v e 6 DESC =\ textquotedbl {} Subversion server \ textquotedbl{} 7 D A E M O N = / u s r / b i n / \ $ N A M E 8 P A R A M S = \ t e x t q u o t e d b l { } - d - T - r / s v n \ t e x t q u o t e d b l { } 9 D A E M O N U S E R = s v n d 70
I.3. USO DE SVN 10 t e s t - x \ $ D A E M O N | | e x i t 0 11 . / l i b / l s b / i n i t - f u n t i o n s 12 s t a r t \ _ i t \ _ u p ( ) 13 \ { 14 l o g \ _ d a e m o n \ _ m s g \ t e x t q u o t e d b l { } S t a r t i n g \ $ D E S C \ t e x t q u o t e d b l { } \ textquotedbl {}\ $NAME \ textquotedbl{} 15 s t a r t - s t o p - d a e m o n - - s t a r t - - q u i e t - - h u i d \ $ D A E M O N U S E R : \ $ D A E M O N U S E R 16 - - e x e \ $ D A E M O N - - \ $ P A R A M S 17 l o g \ _ e n d \ _ m s g \ $ ? 18 \ } 19 s h u t \ _ i t \ _ d o w n ( ) 20 \ { 21 l o g \ _ d a e m o n \ _ m s g \ t e x t q u o t e d b l { } S t o p p i n g \ $ D E S C \ t e x t q u o t e d b l { } \ textquotedbl {}\ $NAME \ textquotedbl{} 22 s t a r t - s t o p - d a e m o n - - s t o p - - r e t r y 6 0 - - q u i e t - - o k n o d o - - e x e \ $ D A E M O N 23 l o g \ _ e n d \ _ m s g \ $ ? 24 \ } 25 ase \ textquotedbl {}\ $1\ textquotedbl {} in 26 s t a r t ) 27 s t a r t \ _ i t \ _ u p 28 ; ; 29 s t o p ) 30 s h u t \ _ i t \ _ d o w n 31 ; ; 32 r e s t a r t ) 33 s h u t \ _ i t \ _ d o w n 34 s t a r t \ _ i t \ _ u p 35 ; ; 36 { * } ) 37 e h o \ t e x t q u o t e d b l { } U s a g e : / e t / i n i t . d / \ $ N A M E \ { s t a r t | s t o p | r e s t a r t \ } \ textquotedbl{} 38 > \ & 2 39 e x i t 1 40 ; ; 41 e s a 42 e x i t 0 % I.3.2.2 Creaión del rep ositorio La reaión del rep ositorio se realizará mediante el omando svnadmin reate /svn/nombre- Proyeto siendo nombreProyeto el nombre del rep ositorio. Esta op eraión se realizará sólo en Single-User. Para realizar la estrutura de arp etas propuesta anteriormente, p o demos realizar la siguiente op eraión: 1. Creamos en lo al la arp eta nombreProyeto 2. Dentro de ella reamos trunk, branhes y tags 3. Utilizamos el siguiente omando: 1 s v n i m p o r t / n o m b r e P r o y e t o s v n : / / s h r e k . p s . u n i z a r . e s / n o m b r e P r o y e t o - m ' C r e a i o n d e e s t r u t u r a d e l p r o y e t o ' 71
APÉNDICE I. MANUAL DE SUBVERSION I.3.2.3 Creaión y gestión de Usuarios Es imp ortante sab er que es p osible estableer p ermisos para los usuarios de los rep ositorios, luego lo que se reomienda es estableer p ermisos SÓLO de esritura para los usuarios autorizados. Esto es: 1. Ir a svn/nombreProyeto/onf 2. Editar el hero svnserve.onf añadiendo las lineas auth-aess=write anon-aess=none password-db=passwd 3. En el hero passwd ontenido en la misma arp eta, añadir la relaión de usuarios ontraseñas on el siguiente formato usuario1=on1 usuario2=on2 usuarioN=onN 4. NOTA IMPORTANTE: en el hero svnserve.onf es imp ortante que exista una linea (generalmente omentada p or defeto, si es así desomentarla) en la que p onga lo siguiente anon-aess=none ya que de no ser así ualquier p ersona p o dría ver el ontenido de lo que existe en el rep ositorio. I.3.3 SVN para desarrolladores I.3.3.1 Ajustes preliminares Para p o der ompletar las funionalidades de VisualSVN vamos a realizar estos a justes: 1. Para integrar la funionalidad del editor de textos, vamos a ir al menú Preferenes, y ahí inluiremos el editor que utlizamos (p or ejemplo, para gedit utilizar /usr/bin/gedit ) 2. Para la funionalidad Di y Merge p o demos utilizar Meld, inludo en los paquetes Debian. Lo instalamos mediante apt-get instal l meld I.3.3.2 Cierre de versiones En iertos momentos del proyeto, puede ser interesante el estabilizar un ierre de una versión y en onseuenia, puede ser interesante regresar a una versión anterior en el aso, p or ejemplo, de que se desubra un bug tras una entrega, donde se deb ería retomar el ó digo desde la versión previa a la entrega, en lugar de ontinuar en la versión en desarrollo. En lengua je SVN, el ierre de una versión se denomina tag de la versión desarrol lada. SVN maneja opias para este tip o de ramiaión en el que sólo guarda una referenia a la rama y versión que se desea opiar, siendo el oste de ésta ba jo en tiemp o y en espaio, además de onstante. La reomendaión es realizar estos ierres on ada hito del proyeto. Lo interesante de estos tag es tener la erteza de la estabilidad de la versión, lo que implia que NUNCA se deb e mo diar un tag tras su reaión. SVN no p one restriiones sobre esta op eraión luego es resp onsabilidad de los desarrolladores el seguir esta buena prátia. Una vez reado el tag, el desarrollo deb e ontinuar bien en trunk o en branh. No deb emos olvidar que el tag no es más que una anotaión o referenia a un punto del desarrollo en el nivel físio, aunque sí a nivel lógio es el ierre de la versión. 72
I.3. USO DE SVN El omando para realizar esto, es svn opy y se realizará haiendo una opia arrastrando la arp eta al destino deseado, e indiándole opy para la op eraión. I.3.3.3 Ramiaión del ó digo El uso de los branhes es útil para rear una rama indep endiente de desarrollo para traba jar en alguna funionalidad nueva de un proyeto que to davía no se quiere inorp orar a la linea prinipal. Al rear una nueva ramiaión en branhes el programador ambiará su working-opy a este nuevo branh y traba jará sobre él. Las op eraiones de ommit serán sobre su branh, sin afetar al desarrollo prinipal. Cuando estos ambios estén listos se realizará la op eraión merge. Se ha de tener en uenta que la ramiaión del proyeto sup one ompliar la estrutura del mismo, lo que implia que sólo se deb en abrir las neesarias, siendo útil la aprobaión de ésta p or el diretor o resp onsable del proyeto. I.3.3.4 Fusión de ambios La op eraión Merge antes itada hae referenia a este punto, en el ual ab e destaar la existenia del omando Path on diferenias en uanto a lo que fusiona; El primero fusiona ambios en diretorios inlusive, mientras que el segundo sólo lo hae de heros. Es imp ortante el uso de estos omando dado que la apliaión manual de la mo diaión puede ser suseptible del error humano al trasribir los ambios realizados. I.3.3.5 Mo diaión de ó digo fuente La mo diaión del ó digo fuente reqiere de ser auto en los pasos a seguir. En primer lugar efetuamos doble lik sobre el hero a mo diar en el rep ositorio lo al que hemos desargado en el b o okmark. Una vez nalizada la mo diaión volvemos a la ventana de RapidSVN. Veremos que está marado en ro jo on el status modied siendo neesario subir los ambios al servidor. Esto es realizar Update presionando sobre el b otón dereho del ratón para despues ejeutar Commit on el b otón dereho tambien. Deb emos inluir la mo diaión que hemos realizado para ompletar la utilidad de la herramienta. Esta op eraión es imp ortante realizarla ada vez que aabamos la funionalidad que estamos desarrollando omo máximo, y omo mínimo ada día o p erio do de elab oraión de ó digo. I.3.3.6 Control de Log's Seleionando un hero, p o demos ir, mediante el menú ontextual Query>Log para ver los ambios que hemos ido realizando revisión a revisión, visualizando además el omentario que habíamos inluido (de ahí la imp ortania de realizarlos) e inluso visualizar el hero en ese estado on view. I.3.3.7 Di La herramienta di es el ap oyo fundamental para el ontrol de ambios. En el menú ontextual del Log, p o demos presionar ese omando para visualizar las diferenias entre el arhivo que tenemos atualmente en nuestro equip o. 73
74
Ap éndie J Ejemplo de malla partiionada Figura J.1: Malla de álulo original 75
APÉNDICE J. EJEMPLO DE MALLA PARTICIONADA Figura J.2: Malla de álulo apliando 2-partiión (Nótese la desomp osiión en la indexaión de las eldas) 76