Paralelización mediante procesadores gráficos (GPU) del cálculo de la dinámica de electrones en plasma confinado magnéticamente
Abstract
[EN] CUDA parallelization of a program, originally written in Fortran with MPI, for the calculation of the dynamic of electrons, taking particular attention to the formation of runaway electrons in a mangentically confined plasma, under the effect of an electric field, using the Langevin’s approximate calculation method. The final implementation will retain the most basic part source code written in Fortran, a language with a large base of use in the field of Physics, to show its compatibility with the newest NVIDIA’s Graphical Processors Units via CUDA. The implementation is progressive, showing successive technical improvements that can be applied to such codes, analyzing the obtained speedups
Full text
Más e Uni e si a io en Compu ación Pa alela y Dis ibuida
Depa amen o de Sis emas In o má icos y Compu ación
Pa alelización median e p ocesado es g á icos (GPU) del cálculo
de la dinámica de elec ones en plasma con inado
magné icamen e
TRABAJO FINAL DE MÁSTER
Au o : Tomás Na a o Cosme
Di ec o : José En ique Román Mol ó
Sep iemb e de 2015
.
Abs ac
CUDA pa alleliza ion o a p og am, o iginally w i en in Fo an wi h MPI, o he calcula ion o he
dynamic o elec ons, aking pa icula a en ion o he o ma ion o unaway elec ons in a mangen i-
cally con ined plasma, unde he e ec o an elec ic ield, using he Lange in’s app oxima e calcula ion
me hod. The inal implemen a ion will e ain he mos basic pa sou ce code w i en in Fo an, a lan-
guage wi h a la ge base o use in he ield o Physics, o show i s compa ibili y wi h he newes NVIDIA’s
G aphical P ocesso s Uni s ia CUDA. The implemen a ion is p og essi e, showing successi e echnical
imp o emen s ha can be applied o such codes, analyzing he ob ained speedups.
Resumen
Pa alelización en CUDA de un p og ama, o iginalmen e esc i o en Fo an usando MPI, pa a el
cálculo de la dinámica de los elec ones, con especial a ención a la apa ición de elec ones ugi i os
( unaway), den o de un plasma con inado magné icamen e y que se mue en po e ec o de un campo
eléc ico, u ilizando el mé odo de cálculo ap oximado de Lange in. En la pa alelización se man end á
la pa e básica de Fo an, lenguaje con una g an base de uso en el campo de la Física, pa a mos a
su compa ibilidad de uso con los acele ado es g á icos de NVIDIA usando CUDA. La implemen ación
es p og esi a, mos ando las sucesi as écnicas y mejo as que pueden aplica se a es e ipo de códigos,
analizando las acele aciones de cálculo ob enidas.
Palab as cla e: CUDA, Fo an, GPU, GPGPU, compu ación numé ica, código cien í ico, HPC, plasma,
Lange in, elec ones unaway
i
ÍNDICE ABREVIADO
Índice ab e iado · iii
Índice gene al ·
Índice de igu as · ix
Índice de ablas · ix
Índice de lis ados de código · x
1 In oducción · 1
2 Conocimien os p e ios · 3
3 Ecuaciones de Lange in pa a desc ibi un plasma de pa ículas y la gene ación
de elec ones unaway · 13
4 Implemen ación de la pa alelización con CUDA · 17
5 Resul ados · 43
6 T abajo u u o · 71
7 Conclusiones · 73
Glosa io · 75
Siglas · 77
Bibliog a ía · 79
iii
ÍNDICE GENERAL
Índice ab e iado iii
Índice gene al
Índice de igu as ix
Índice de ablas ix
Índice de lis ados de código x
1 In oducción 1
2 Conocimien os p e ios 3
2.1 La simulación compu acional en la Física . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2 Ca ac e ís icas de los códigos cien í icos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.3 GPGPU .................................................. 7
2.4 CUDA ................................................... 9
2.4.1 Lenguaje CUDA C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.4.2 Tipos de código en CUDA C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.4.3 Compilación de aplicaciones CUDA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3 Ecuaciones de Lange in pa a desc ibi un plasma de pa ículas y la gene ación de elec-
ones unaway 13
3.1 El plasma y su aplicación p ác ica: eacción con olada de usión . . . . . . . . . . . . . . . . 13
3.2 Con inamien o a i icial del plasma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.3 Física de pa ículas: la ecuación de Lange in . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
4 Implemen ación de la pa alelización con CUDA 17
4.1 Selección del lenguaje auxilia de p og amación . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.2 U ilización de w appe s en Cpa a se in ocados po Fo an . . . . . . . . . . . . . . . . . . 18
4.2.1 Respe o de la nomencla u a (name mangling) de los símbolos según compilado . 19
4.2.2 Esquema gene al de llamadas a CUDA desde Fo an a a és de w appe s C. . . . 21
4.3 Di e encias p og amá icas impo an es en e Fo an yCyCUDA-C . . . . . . . . . . . . . . 23
4.4 Implemen ación en CUDA del código de Lange in o iginalmen e en Fo an . . . . . . . . 24
4.4.1 Aplanamien o de sub u inas po inclusión en un ke nel aglu inado . . . . . . . . . 24
4.4.2 Minimización de la ans e encia de da os en e CPU yGPU . . . . . . . . . . . . . . 25
4.4.3 U ilización adecuada de los gene ado es de núme os alea o ios de CUDA . . . . . . 26
4.4.4 Mejo as en el código: u ilización de unciones es ánda en e a mé odos numé i-
cos pesados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.4.5 Algo i mos de educción en la GPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
4.4.5.1 Reducción global i e a i a . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.4.5.2 Reducción median e el uso de ope aciones a ómicas . . . . . . . . . . . . 29
4.4.6 Mejo a en el algo i mo de clasi icación de elocidades . . . . . . . . . . . . . . . . . . 30
4.4.7 De ección de e o es (bugs) en el código . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.5 Desacople de compu ación y comunicación usando OpenMP . . . . . . . . . . . . . . . . . . 33
4.5.1 Desacople usando OpenMP con hilo en espe a ac i a . . . . . . . . . . . . . . . . . . 34
4.5.2 Implemen ación inal con ce ojos de OpenMP (omp_locks) . . . . . . . . . . . . . 36
4.5.2.1 Conside aciones con la adición de OpenMP en el código Fo an . . . . . 40
4.6 Valo ación cuali a i a del p oceso de pa alelización con CUDA . . . . . . . . . . . . . . . . . 40
5 Resul ados 43
5.1 P uebas ealizadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
5.1.1 P ime a e apa: op imización del ke nel p incipal según los pa áme os p opios de
su in ocación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
5.1.2 Segunda e apa: medición de p es aciones de las e siones inales en un en o no
HPC eal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
5.2 En o no de ejecución . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
5.2.1 P ime a e apa: op imización de los pa áme os de in ocación del ke nel p incipal . 46
5.2.2 Segunda e apa: en o no HPC eal, MinoTau o . . . . . . . . . . . . . . . . . . . . . . . 47
5.3 Ejecución de las p uebas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
5.3.1 Pa áme os óp imos de in ocación al ke nel p incipal ad ance . . . . . . . . . . . . 47
5.3.1.1 B e e desc ipción de la p ueba . . . . . . . . . . . . . . . . . . . . . . . . . . 47
5.3.1.2 Resul ados ob enidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
5.3.1.3 Fenómenos obse ados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
5.3.1.4 Conclusión de la p ueba . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.3.2 Acele ación en un en o no de ejecución de al as p es aciones . . . . . . . . . . . . . 51
5.3.2.1 Ca ac e ización del compo amien o del p og ama o iginal . . . . . . . . 52
5.3.2.2 Ca ac e ización básica de la implemen ación consis en e en la pa aleli-
zación con CUDA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
5.3.2.2.1 P ueba de co ección . . . . . . . . . . . . . . . . . . . . . . . . . . 55
5.3.2.2.2 Acele ación y e iciencia espec o del código en CPU . . . . . . . 55
5.3.2.3 Ca ac e ización básica de la implemen ación con CUDA yOpenMP . . . . 57
5.3.2.4 P uebas masi as de escalabilidad de las implemen aciones con CUDA . . 58
5.3.2.4.1 Resul ados ob enidos . . . . . . . . . . . . . . . . . . . . . . . . . . 58
5.3.2.4.2 Escalabilidad de las implemen aciones . . . . . . . . . . . . . . . 61
5.3.2.4.3 Compa ación di ec a de las implemen aciones . . . . . . . . . . 64
5.3.2.4.4 Cálculo de la acele ación en una ca ga g ande . . . . . . . . . . . 66
5.4 Valo ación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
5.4.1 Valo ación numé ica cuan i a i a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
5.4.2 Valo ación cuali a i a de los esul ados . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
5.4.2.1 Facilidad de p og amación . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
5.4.2.2 Necesidad de la e o mulación de los algo i mos . . . . . . . . . . . . . . . 68
5.4.2.3 Depu ación semán ica de las implemen aciones his ó icas . . . . . . . . . 69
5.4.2.4 Selección de códigos a pa aleliza . . . . . . . . . . . . . . . . . . . . . . . . 69
6 T abajo u u o 71
i
7 Conclusiones 73
Glosa io 75
Siglas 77
Bibliog a ía 79
ii
Pa alelización median e GPU de la dinámica de elec ones en plasma con inado magné icamen e
Finalmen e se expond án o as ecnologías de pa alelización, algunas de las cuales ambién han sido
u ilizadas e incluso inco po adas. Así po ejemplo enemos MPI, una biblio eca de p og amación basada
en el pa adigma de memo ia dis ibuida, median e la u ilización de paso de mensajes; y ambién OpenMP,
que es á especialmen e pensado pa a memo ia compa ida. Úl imamen e han su gido o as posibilidades
que in en an acili a la labo de la pa alelización abs ayéndose un poco más del ha dwa e exis en e po
debajo, de en e los cuales des aca emos el caso de OpenACC.
Po o a pa e, la pa e ísica del p oblema, po su especial ele ancia y en idad, se á a ada en el si-
guien e Capí ulo 3 “Ecuaciones de Lange in pa a desc ibi un plasma de pa ículas y la gene ación de elec-
ones unaway”, aunque sin en a en excesi o de alle cien í ico, sino más desc ip i a de su signi icado, así
como de las p incipales ca ac e ís icas a ene en cuen a a la ho a de pa aleliza el algo i mo de simulación.
2.1 La simulación compu acional en la Física
En el ámbi o de la ísica de pa iculas es muy habi ual el uso de la simulación compu acional. Es a u i-
lización no se ealiza pa a su es udio di ec o, sino como mé odo de comp obación de las de hipó esis y
nue os desa ollos eó icos. En es e campo de la ísica de pa ículas elemen ales, el mé odo de obse a-
ción es á limi ado po la máxima p ecisión alcanzable, de e minada po el p incipio de inde e minación
de Heisenbe g, y ese lími e ísico aco a ambién la ex acción de conocimien o a pa i de la expe imen-
ación. A es o se une la complejidad de las ac uales eo ías, que deben compagina an o enómenos bien
conocidos y eó icamen e bien desa ollados, como la g a i ación, la dinámica y el elec omagne ismo, con
los e ec os cuán icos y la aplicación de la eo ía de la ela i idad, ya que es habi ual abaja con pa ículas
que se mue en a al as elocidades (es o es, son de al a ene gía). Po odo ello, cuando se abaja a ni el de
pa ículas ales como elec ones, neu ones, p o ones y pa ículas al a, las ecuaciones eó icas no pueden
esol e se analí icamen e. El p ocedimien o habi ual es adap a las al caso pa icula en es udio, ealizando
las opo unas simpli icaciones e ndo que no a ec en al esul ado a ob ene , y inalmen e, con el conjun o de
ó mulas simpli icadas, y po lo an o ap oximadas, ealiza in ensos cálculos de simulación pa a comp o-
ba si se pueden ep oduci los esul ados ob enidos expe imen al o empí icamen e. En caso de que así sea,
ese conjun o de ó mulas ap oximadas puede some e se a un nue o p oceso de simulación que se ex ienda
a casos más complejos que di ícil o muy one ósamen e pueden con as a se expe imen almen e. De es a
o ma se ob iene in o mación aliosa que pe mi e acele a el p oceso ecnológico y de ingenie ía pa a la
cons ucción de nue as ins alaciones de expe imen ación.
Es e es el caso de la ísica de plasma, en donde pa ículas elemen ales de los á omos más lige os se hallan
con inadas po el e ec o de ue es campos elec omagné icos a al as empe a u as, inonizadas, lib es en e
sí, y p oduciéndose choques ocasionales de al a ene gía, que, en condiciones de iempo, empe a u a y
densidad su icien e, pueden p o oca el inicio del p oceso de la usión nuclea .
Desde el pun o de is a in o má ico, los p ocesos de simulación se ca ac e izan po se compu acional-
men e in ensos, dado que se debe a a un núme o lo más g ande posible de pa ículas, y po que gene-
almen e in e esa la dinámica del sis ema, es o es, cómo e oluciona desde un de e minado es ado inicial.
Es o implica gene almen e que se debe calcula el es ado inicial, después supone un inc emen o de iem-
po pequeño, pa a in en a linealiza lo más posible la dinámica del sis ema, es o es, que los e o es po
las ap oximaciones ealizadas no se p opaguen en exceso, pe o no an pequeño como pa a supone una
inmensa can idad de inc emen os “di e enciales” del iempo, y con ello, una g an can idad de nue os es a-
dos a calcula has a alcanza el es ado inal buscado (gene almen e, e si alcanza un es ado es aciona io,
o analiza y comp ende cómo se compo a si no. Po lo an o, las ecuaciones son complejas, con muchos
cálculos po cada es ado, y muchos es ados a compu a . Es o puede complica se en unción de la compleji-
dad del desa ollo eó ico u ilizado. De es a o ma, in e esa ob ene unas ecuaciones que calculen el es ado
4
Capí ulo 2. Conocimien os p e ios 2.2. Ca ac e ís icas de los códigos cien í icos
de cada pa ícula de o ma independien e al compo amien o indi idual de cada una del es o, pues o que
si exis e in e dependencia en e las pa ículas, el o den del núme o de ope aciones a compu a po cada es-
ado pasa de se de O(N), siendo Nel núme o de pa ículas, a o den O(N·m), siendo mel núme o de pa iculas
ecinas con las que in e ac úa, o incluso O(N2) si odas in e ac úan con odas en cada es ado.
Es a al a necesidad de pode de cálculo implica que, si se u iliza un único p ocesado , el iempo de
cálculo sea excesi amen e ele ado, lo que conlle a p oblemas po : inc emen o del e aso en e di e en es
simulaciones, con la consiguien e pa alización de la alidación de los desa ollos eó icos ap oxima i os
ealizados; mayo iesgo de inalización ab up a de la simulación, an o po enómenos ex e nos (co es
de luz) como in e nos (sob ecalen amien o del nodo, e o de so wa e,...). La solución que se ha enido
aplicando en los úl imos 20 años ha sido la pa alelización de los p ocesos, bien sea median e OpenMP (en
sis emas mul ip ocesado es de memo ia compa ida), o median e MPI (paso de mensajes en e nodos con
memo ia dis ibuida). Todo ello es posible u ilizando el lenguaje Fo an, que iene su p incipal nicho de
uso den o del e eno de cómpu o cien í ico, pues o que: es á pensado pa a ansc ibi las ó mulas ma-
emá icas; pe mi e la p og amación es uc u ada, gene almen e idónea pa a implemen a los habi uales
algo i mos de cálculo cien í ico; pe mi e un uso muy simpli icado de las ope aciones ec o iales y ma i-
ciales, muy habi uales en ciencia; es á o ien ado al cómpu o, con compilado es muy op imizados al e ec o;
dispone de lib e ías especí icas de cálculo numé ico, algeb aico y cien í ico muy op imizadas, obus as y
con as adas; iene una muy buena implemen ación y sopo e en los dos his ó icamen e p incipales pa a-
digmas de p og amación pa alela, OpenMP yMPI, dado que sus es ánda es se desa ollan e implemen an
eniendo muy en cuen a las pa icula idades y en ajas de Fo an. Es e úl imo aspec o es undamen al
pa a con inua la he encia de muchos p og amas y biblio ecas de cálculo ma emá ico y cien í ico desde
los años 60 has a la ac ualidad, lo cual iene aspec os muy posi i os (p og amas con as ados, e icien es y
obus os), pe o que su ilmen e esconde algunos incon enien es que con iene ene en cuen a y analiza ,
como se e eló duan e la ase de ansc ipción y adap ación al nue o pa adigma SIMD de CUDA, al como
se e á en es e abajo.
2.2 Ca ac e ís icas de los códigos cien í icos
Po código cien í ico en ende emos en es e abajo aquel p og ama o biblio eca que implemen e di ec a-
men e un de e minado algo i mo de compu ación cien í ica. Es e algo i mo de compu ación cien í ica se á
gene almen e un conjun o de ecuaciones in e dependien es que pe mi en esol e un de e minado p o-
blema ísico. Gene almen e, es e conjun o de ó mulas p o iene del desa ollo eó ico en una de e minada
á ea cien í ica, y más especí icamen e, nos cen a emos en aquellas que si en pa a la simulación de sis e-
mas ísicos.
Es os p oblemas ienen la ca ac e ís ica común de que son lo su icien emen e complejos como pa a
que el conjun o de ó mulas de i adas es ic amen e de la eo ía sean demasiado complejas pa a su esolu-
ción analí ica. Es a imposibilidad de esolución analí ica impide que se pueda analiza el compo amien o
de es os sis emas en di e en es si uaciones p ác icas. Al obje o de pode es udia los, se hace necesa io eali-
za de e minadas suposiciones que pe mi en alige a la complejidad del conjun o de ecuaciones, median-
e la inclusión de ap oximaciones azonables pa a el caso conc e o en es udio. T as es as ap oximaciones,
es muy ecuen e que se ob enga o o conjun o de ecuaciones más simple, pe o aún así i esolubles o de
di ícil in e p e ación. Pa a esol e las se ecu en a mé odos numé icos median e la implemen ación de
p og amas in o má icos especí icos pa a ese p oblema. Es os códigos cien í icos se ejecu an en múl iples
ins ancias, pues o que es ecuen e que es as unciones engan é minos es ocás icos, es o es, que pa a
cap u a la a iabilidad de las condiciones ex e nas o de la complejidad in e na inna a del sis ema, y an e la
imposibilidad o g an di icul ad de exp esión eó ica es ici a, en el cue po eó ico se in oducen é minos
5
Pa alelización median e GPU de la dinámica de elec ones en plasma con inado magné icamen e
de a iabilidad alea o ia (denominados é minos es ocás icos), que pe mi en do a al sis ema de un cie o
compo amien o y adap ación pseudoalea o ia necesa io. Es as múl iples ejecuciones se denominan simu-
laciones, y pe mi en ex ae nue o conocimien o del sis ema ísico en es udio del análisis de sus esul ados.
His ó icamen e, es os códigos cien í icos han sido implemen ados po los p opios cien í icos eó icos
enca gados de desa olla las ó mulas básicas y sus de i aciones ap oximadas, y p esen an las siguien es
ca ac e ís icas:
• Lenguaje de p og amación: p e e encia po lenguajes como Fo an o en o nos como Ma Lab, sob e
odo en compa ación con C, con sin axis más sin é icas en las ins ucciones de cálculo ma emá ico,
especialmen e al pe mi i abaja con ec o es y ma ices sin necesidad de gene a bucles que los
eco an.
• Es uc u ación: pensada pa a la implemen ación ápida de algo i mos ma emá icos. Los módulos
pe mi en de ini biblio ecas de unciones, y la e i ación de bucles explíci os pa a ope aciones ma i-
ciales pe mi e una mayo cla idad del código, pe mi iendo al p og amado a cen a se en el algo i mo
y no en el código.
• Es uc u a: Los códigos cien í icos son p incipalmen e de compu ación numé ica. Po lo an o suelen
es a cla amen e es uc u ados en en ada o lec u a de da os, p epa ación del cálculo, ejecución del
cálculo (pa e compu acionalmen e más in ensa) y ecopilación de esul ados pa a mos a o gua -
da . Po es e hecho u ilizan biblio ecas pa a la en ada y salida de da os ( al como silo, con o ma os
especiales como HDF5, y p ecisan de un lenguaje y biblio ecas muy comple as y e icien es compu-
acionalmen e. Es á ue emen e basado en bibli ecas que esuel en los p oblemas compu acionales
más gene ales.
• Independiencia en e cálculo y isualización: En elación con lo an e io , el código cien í ico es á pen-
sado pa a se e isado y eesc i o, y po ello se hace independien e de p ocesos pos e io es como el
de la isualización. Los p og amas gene an iche os en o ma os es anda izados pa a su pos e io a-
amien o po o os códigos, o po paque es de isualización de da os, como VisI , o el p opio Ma Lab
• Legibilidad: Pensados pa a i ac ualizándolos con o me e olucione la eo ía que gene a el conjun o
de ecuaciones a esol e . Po lo an o, in e esa que el lenguaje de p og amación e i e a e ac os p o-
pios del lenguaje que enmasca e o di icul e la exp esión y comp ensión del algo i mo implemen ado.
• Fue e in luencia de los algo i mos: lo cual puede se un p oblema. Muchas eces, la ansc ipción
di ec a de la ó mula a código, hace que se incu a en la u ilización de algo i mos compu acional-
men e ine icien es cuando son implemen ados po un cien í ico no expe o y que no conside e el
cos e compu acional de su implemen ación.
• Necesidad de ipos especí icos de a iables: ejemplo cla o es la necesidad de abaja con núme os
complejos, y que la biblio ecas ma emá icas y compu acionales ambién lo hagan. También el e-
conocimien o de núme os especiales (i, e) y del co ec o a amien o de alo es ex emos ( alo es
mínimos y máximos p ede inidos, gene ación y abajo con a iables que hayan excedido el in e a-
lo de inido (NaN, No a Numbe ), pa a lo cual es muy in e esan e que se sigan el es ánda IEEE 754
(Ins i u e o Elec ical and Elec onics Enginee s S anda d o Floa ing-Poin A i hme ic).
6
Capí ulo 2. Conocimien os p e ios 2.3. GPGPU
2.3 GPGPU
GPGPU [5], Gene al-Pu pose compu ing on G aphics P ocessing Uni s, consis e en la ealización de cómpu-
os de p opósi o gene al u ilizando pa a ello p ocesado es g á icos, GPU, en luga de los habi uales p oce-
sado es gené icos, CPU.
Debido a la economía de escala y al exi oso me cado de a je as g á icas impulsado po el sec o de los
juegos en el PC y consolas, los p ocesado es g á icos que se u ilizan en esas a je as g á icas han e oluciona-
do desde se unos cop ocesado es que simplemen e ep esen aban ca ac e es o g á icos de mapa de bi s, a
se complejos p ocesado es capaces de ealiza no an simples cálculos ma emá icos y ec o iales sob e ca-
da píxel pa a pode do a al conjun o de la imagen de un mucho mayo ealismo, a la ez que p opo ciona
un al o e esco en la imagen pa a sua iza las ansiciones en e cada ins an ánea [11].
De es a o ma, el pode compu acional de las GPU se ha mul iplicado mucho más en es os úl imos años
que el de los p ocesado es de p opósi o gene al, CPU. Una a je a g á ica de al a gama puede ene pe -
ec amen e más de 2800 p ocesado es indi iduales odos ellos abajando de o ma (casi) independien e
en pa alelo, y con capacidad de comunica se a a és de ápidas memo ias DDR5, incluso de a ios GB
de capacidad, ubicadas en la misma a je a [9]. No obs an e, su conjun o de ins ucciones es mucho más
especí ico, o ien ado a la ealización de cálculos g á icos, y se esien e de la al a de ins ucciones op imi-
zadas muy comunes en la p og amación es ánda no g á ica (sal os y compa ación, con inua necesidad de
as asa g an can idad de in o mación de la CPU a la GPU y ice e sa, po ejemplo). Tampoco ienen la
uni e sal lexibilidad de las CPU pues iene di e en es zonas de memo ia, cada una con usos especí icos y
no in e cambiables, o la coo dinación en e p ocesado es den o de un hilo de ejecución. O a ca ac e ís-
ica que penalizaba mucho las an e io es a je as g á icas e a la inexis encia de ins ucciones especí icas
pa a el lujo de con ol, oda ez que desde el pun o de is a me amen e g á ico, los p og amas siemp e han
sido p e e en emen e secuenciales. En la ac ualidad, los p ocesado es g á icos ya inco po an ins ucciones
pa a el con ol de lujo, pe o las ami icaciones (i - hen-else) son muy cos osas, sob e odo si en cada
hilo el esul ado es di e en e, lo que p o oca g a es penalizaciones en iempo, pa a consegui una adecuada
sinc onización en la ejecución del p og ama, po lo que con iene ene lo muy en cuen a pa a ob ene bue-
nos esul ados [6]. Es as es icciones se han sua izado con la llegada de las nue as a qui ec u as Keple
yMaxwell, pe o aún así son aspec os de uncionamien o que con iene segui eniendo en conside ación
pa a la op imización de la ejecución del código en las GPU.
Aún así, a mediados de los 2000 empeza on los expe imen os de ealiza cómpu os ma emá icos pesa-
dos usando ó denes pu amen e g á icas, p incipalmen e basadas en el es ánda g á ico OpenGL. A pesa
de la di icul ad de p og amación o ecida po es a ía, sí que se comp obó empí icamen e la g an po encia-
lidad que enían las GPU pa a el cómpu o numé ico, y u o de ello, NVIDIA lanzó en 2007 su lenguaje de
p og amación p opie a io denominado CUDA C. Desde en onces p ác icamen e NVIDIA ha ido p opo cio-
nando la capacidad de ejecución de p og amas CUDA a la g an mayo ía de sus a je as g á icas. Es a ca ac-
e ís ica es á especi icada median e la denominada “capacidad de compu ación CUDA” (en inglés, CUDA
capabili ies), que consis e en un núme o que pe mi e conoce qué ca ac e ís icas y qué compo amien os
iene la a je a g á ica pa a la ejecución de código CUDA, sob e odo eniendo en cuen a que el lenguaje y
las p es aciones ha e olucionado mucho desde 2007 has a la echa. Además, la nume ación ambién iene
cie a co elación con las di e en es a qui ec u as ha dwa e que han apa ecido: Tesla,Fe mi,Keple y la
más ecien e Maxwell.
Pos e io men e, Apple, lide ando un conjun o de o as compañías (AMD,IBM,In el yNVIDIA), impulsó
el lanzamien o de o o lenguaje pa a GPGPU, denominado OpenCL [13], que al con a io que CUDA es de
especi icaciones abie as. Ac ualmen e el enca gado de la especi icación es el G upo Kh onos [8], quien
ambién es el esponsable de la especi icación de OpenGL [14].
7
Pa alelización median e GPU de la dinámica de elec ones en plasma con inado magné icamen e
Po ello, mien as CUDA únicamen e es á implemen ado en los p ocesado es g á icos de NVIDIA po
se un lenguaje p opie a io y o almen e ce ado, OpenCL puede u iliza se no sólo en los p ocesado es
g á icos de di e en es ab ican es, como ATI [2], In el [7] y la p opia NVIDIA [12], sino que incluso hay CPUs
que son capaces de ejecu a código de OpenCL (IBM Powe 77X eIBM BladeCen e s,In el Ion y la e ce a
gene ación de In el Co es [7] y los ecien es p ocesado es de AMD, incluidos los AMD Fusion [1]). Samsung
ambién dispone de una implemen ación de OpenCL que puede ejecu a se sob e p ocesado es Cell BE,
ARM y sob e DSP [15].
A pesa del mayo núme o de ab ican es que p opo cionan ha dwa e compa ible con OpenCL,CUDA
es un lenguaje con una mayo e olución, y su compilado es á mucho más op imizado pa a el ha dwa e
al que a des inado, dado que es á especí icamen e diseñado pa a u iliza odo el po encial de los p oce-
sado es g á icos de NVIDIA.OpenCL es mucho más gené ico, e incluso, como ya se ha comen ado, puede
se ejecu ado po CPU, po lo que iene un mayo g ado de abs acción sob e el ha dwa e y po an o, no
pe mi e emplea ins ucciones o ecu sos especí icos de cie os p ocesado es g á icos. En la Tabla 2.1 se
compa a el desa ollo de cada uno de es os lenguajes.
CUDA OpenCL
Ve sión del Toolki Fecha Especi icación
1.0 julio 2007
1.1 no iemb e 2007
junio 2008 1.0
2.0 agos o 2008
2.1 diciemb e 2008
2.2 mayo 2009
2.3 julio 2009
3.0 ma zo 2010
3.1 mayo 2010
junio 2010 1.1
3.2 no iemb e 2010
4.0 mayo 2011
no iemb e 2011 1.2
4.1 ene o 2012
4.2 ab il 2012
5.0 oc ub e 2012
5.5 julio 2013
no iemb e 2013 2.0
6.0 ab il 2014
6.5 agos o 2014
ene o 2015 2.1 p o isional
7.0 ma zo 2015
7.5 sep iemb e 2015
Tabla 2.1: Compa ación de la e olución c onológica de CUDA yOpenCL
No obs an e, es necesa io ecalca que la compu ación a a és de GPU puede en algún momen o so-
b e alo a se. Exis en campos en los que las ac uales CPU son an capaces como las más po en es GPU, y
es po ello que siemp e es necesa io alo a p ime o si el p oblema a abo da , o cada una de las pa es en
que se pueda di idi , debe se lo a a és de compu ación gené ica o de compu ación basada en GPU. Así,
8
Capí ulo 2. Conocimien os p e ios 2.4. CUDA
en campos ales como las ma ices dispe sas, los cálculos en que en cada p ocesado pueden di e gi en
cuan o a su lujo de con ol, o en los que exis e una g an dependencia en e da os en di e en es ubicaciones
espaciales, la compu ación gené ica puede se más e icien e, al como se señala en [16].
2.4 CUDA
CUDA son las siglas de Compu e Uni ied De ice A chi ec u e. Ha sido p opues a, implemen ada y desa o-
llada exclusi amen e y de o ma ce ada po NVIDIA. Se a a de una a qui ec u a ha dwa e pa a p ocesa-
do es g á icos que pe mi e que és os puedan ealiza cómpu os de ca ác e gene al (no g á icos) de una
o ma sencilla y di ec a, sin necesidad de in oca di ec amen e las p imi i as g á icas o iginales basadas en
OpenGL oDi ec X. Todo ello sin disminui su p opia capacidad in ínseca de ejecución de a eas g á icas
basadas en cualquie a de es os es ánda es g á icos.
2.4.1 Lenguaje CUDA C
Es e concep o a qui ec ónico es ap o echado en la p ác ica median e la de inición de un nue o lenguaje
que es capaz de abs ae la complejidad del mul ipa alelismo de los ac uales p ocesado es g á icos man e-
niendo una es uc u a y nomencla u a muy simila al lenguaje C, uni e salmen e u ilizado pa a la p og a-
mación gené ica usando CPUs. Es e nue o lenguaje se denomina CUDA C, y en lo sucesi o, en es e abajo,
se ab e ia á simplemen e po CUDA, el mismo nomb e que la a qui ec u a.
Se a a de un lenguaje de p og amación de especi icaciones ce adas, que desa olla en exclusi a NVI-
DIA, que pe mi e la u ilización de sus p ocesado es g á icos pa a compu ación gené ica, no exclusi amen e
g á ica. Los p og amas ealizados con CUDA solamen e puede ejecu a se en aquellos p ocesado es g á icos
que engan «capacidad CUDA» (CUDA capabili y).
Es impo an e di e encia en e la e sión del Toolki , que ep esen a el API de p og amación en CU-
DA con una sin axis basada en el lenguaje C, y la capacidad de compu ación CUDA. Es a úl ima se a a
de una ca ac e ís ica del ha dwa e, es o es, de la GPU, y ep esen a qué subconjun o de ins ucciones es
capaz de ejecu a di ec amen e cada p ocesado g á ico. Exis e una e iden e in e elación, po cuan o en
cada e sión del Toolki se menciona exp esamen e qué capacidad CUDA es necesa ia pa a cada una de
las unciones de lib e ía que se p opo ciona, al obje o de u iliza op imamen e el lenguaje en unción del
ha dwa e que se aya a u iliza . En [3] se lis an odas las GPU que ienen capacidad de compu ación CUDA
indicando exp esamen e su ni el de capacidad, que ac ualmen e llega has a la 5.2 pa a las GPU GeFo ce
más a anzadas (se ie GTX 970 y 980).
2.4.2 Tipos de código en CUDA C
La p og amación en CUDA se ca ac e iza po con ene dos ipos bien di e enciados de bloques de código:
el código del an i ión (hos code) y el código del disposi i o (de ice code).
• An i ión (hos ): Po an i ión se en iende el en o no ha dwa e de ejecución gené ico p opo cionado
po las CPU con encionales. Su código es pu o C/C++ y no p ecisa nada de los p ocesado es g á icos
pa a su ejecución, pe o ob iamen e, no se ap o echa el po encial de ellos.
• Disposi i o (de ice): Po disposi i o se en iende el en o no ha dwa e de ejecución p opio de los p o-
cesado es g á icos, GPU. Su código, como ya se ha comen ado, iene una es uc u a y sin axis muy
simila al C, pe o ex endido pa a pe mi i p og ama ácilmen e las nue as capacidades que posee la
a qui ec u a CUDA.
9
Pa alelización median e GPU de la dinámica de elec ones en plasma con inado magné icamen e
CUDA p opo ciona un compilado p opio, denominado n cc, que es á especializado en la compilación
de código de disposi i o, pe o que ambién compila la pa e del an i ión y e ec úa el enlace en e ambos
códigos en un único p og ama ejecu able.
El código del disposi i o se ca ac e iza po es a basado en ke nels, que ienen la apa iencia de uncio-
nes es ánda C, pe o con una nomencla u a de llamada especial, y que ins uyen al p ocesado gené ico
de la CPU a en ia el código y los da os necesa ios a la GPU, donde dicho ke nel e ec i amen e se ejecu a.
Los esul ados de esos ke nels pueden de ol e se di ec amen e a la CPU, pa a lo cual es necesa io hace
una nue a ans e encia de da os, en es e caso en e la GPU y la CPU, o incluso man ene se den o de la
memo ia de la GPU pa a eu iliza en pos e io es ejecuciones de nue os ke nels.
Consiguien emen e, la CPU siemp e es la que lle a el con ol de ejecución del p og ama global, pe o a
delegando en la GPU aquellas pa es del p og ama que pe mi an ealmen e ob ene una g an en aja de la
pa alelización masi a que o ecen las GPU.
2.4.3 Compilación de aplicaciones CUDA
La compilación de las aplicaciones CUDA se ealiza undamen almen e con el d i e compilado n cc.n cc
puede ealiza muchas unciones, siguiendo caminos de compilación di e en es según las necesidades, al
como se mues a en la Figu a 2.1. Una de las p incipales consis e en sepa a el código del an i ión (hos ,
que es á en C) del disposi i o (de ice, pa a el que se usan ex ensiones especí icas CUDA C). Una ez se-
pa ados los códigos, lanza los compilado es especí icos de cada ipo de código po sepa ado pa a después
ensambla los en un único ejec uable, gene almen e. La pa e del an i ión se delega en un compilado de
uso gené ico, como pueden se gcc oicc.
La compilación del código de la a je a g á ica es mucho más c í ica, y sólo puede ealiza se con las
he amien as especí icas p opo cionadas po NVIDIA, dado el ca ác e ce ado de la especi icación ha d-
wa e de sus a je as, a pesa de se pública la especi icación del código in e medio, o ma o denominado
PTX (Pa allel Th ead eXecu ion), pa a el cual NVIDIA p o ee el compilado p xas.p xas puede se in oca-
do di ec amen e po n cc, pe o ambién puede hace se en iempo eal po la p opia aplicación, ealizando
una compilación JIT (Jus In Time) del código in e medio a código máquina especí ico de la a qui ec u a y
capacidades CUDA de la a je a conc e a en la que se a a ejec u a el ke nel.
La compilación del código puede ealiza se de es o mas básicas, hacia es o ma os di e en es, a
sabe :
•.cubin: El o ma o cubin es mic ocódigo na i o especí ico de una a je a conc e a NVIDIA con capa-
cidad CUDA. Po lo an o, es di ec amen e ejecu able po ella. Los códigos bina ios cubin en gene al
no pueden in e cambia se en e di e en es a qui ec u as o di e en es capacidades CUDA (CUDA ca-
pabili ies.
•.p x: Es la ep esen ación in e media del código a ejecu a en la GPU. És e puede se compilado a su
ez y con e i se en código bina io cubin, a iba desc i o. El o ma o p x es neu o, en el sen ido de
que es independien e de la a qui ec u a y de las capacidades compu acionales de la a je a NVIDIA en
la que inalmen e se ejecu a á. Es á diseñado pa a se esis en e a cambios u u os (« u u e-p oo »)
po inno aciones ecnológicas ha dwa e y so wa e. Puede se compilado o line po el compilado
d i e n cc, o compilado au omá icamen e online JIT según se necesi e.
•. a bin: Es un o ma o especial que con iene en su seno di e en es compilaciones o p ecompila-
ciones, bien sea po con ene an o código cubin como código p x, bien po ene código di igido a
di e en es a qui ec u as o con di e en es capacidades CUDA, así como odo ello a la ez.
10
Capí ulo 2. Conocimien os p e ios 2.4. CUDA
SOFTWARE ARCHITECTURE
58
n cc and PTX
PTX (“Pa allel Th ead eXecu ion”) is he in e media e ep esen a ion o com-
piled GPU code ha can be compiled in o na i e GPU mic ocode. I is he mecha-
nism ha enables CUDA applica ions o be “ u u e-p oo ” agains ins uc ion se
inno a ions by NVIDIA—as long as he PTX o a gi en CUDA ke nel is a ailable,
he CUDA d i e can ansla e i in o mic ocode o whiche e GPU he applica-
ion happens o be unning on (e en i he GPU was no a ailable when he code
was w i en).
PTX can be compiled in o GPU mic ocode bo h “o line” and “online.” O line
compila ion e e s o building so wa e ha will be execu ed by some compu e
.cu ile
(Mixed CPU/GPU)
n cc
Hos -only Code GPU Code
.p x, . a bin
Hos Execu able
(wi h embedded
GPU code)
CUDA Run ime
(e.g.,
libcuda .so.4)
Hos Compile
.cu ile
(GPU only)
n cc
GPU Code
.p x, .cubin
CUDA D i e
Hos code (wi h
embedded GPU
code)
CUDA D i e
(e.g., libcuda.so)
CPU Sou ce Code
Hos Execu able
O line componen s o
applica ion build p ocess
CUDA Run ime
D i e API
Figu e 3.2 n cc wo k lows.
Figu a 2.1: Diag ama de los lujos de compilación más habi uales de n cc
Es e iden e que los cubin son más ápidos en ca ga se en la GPU, pues o que se en ían di ec amen e
en cuan o debe ejecu a se dicho ke nel. Po su pa e, los p x son más po ables, pues pueden compila se a
cualquie a qui ec u a o capacidad igual o supe io a su o ma o, pe o incu en en la conside able sob eca -
ga de la compilación en línea jus o en el momen o en que debe lanza se a la GPU. Los a bin son iche os
más oluminosos, pe o con mayo compa ibilidad, según lo que se incluya, sob e odo si se incluyen p x de
di e en es a qui ec u as y capacidades.
Nó ese (y es o es c ucial pa a el p esen e abajo) que la compilación especí ica del p x se ealiza jus o
en el momen o en que se a a lanza el ke nel, no du an e la ca ga en memo ia de la aplicación al inicio de
su ejecución. De igual o ma que la selección del cubin conc e o, en el caso de que ya es én incluidos a ios
y no sea necesa io compila .
Es in e esan e indica que los ke nels CUDA pueden es a inc us ados en el p opio iche o ejecu able
ELF (o EXE, en Windows), o ambién pueden ca ga se du an e la ejecución desde o os iche os, en cual-
quie a de los es o ma os a iba indicados. De hecho, cuando el ke nel es á incluido en el p og ama p in-
cipal, es á en o ma o cadena (s ing li e als), y lo que se hace es lee los y pasa los a la GPU median e unas
ins ucciones especí icas p e ias, que se enca gan ambién de lanza su ejecución den o de la a je a g á-
ica.
11
Pa alelización median e GPU de la dinámica de elec ones en plasma con inado magné icamen e
Po úl imo, la co ec a selección del ipo de a je a g á ica pa a el cual se quie e compila (di ec amen e
a código bina io .cubin u ob ene código in e medio PTX) es esencial. Es a selección se e á de i al impo -
ancia a la ho a de la mig ación, dado que en odo caso, la aplicación que se lanza debe á, como equisi o
básico, pode ejecu a se an o en la GPU inicial como en la GPU a la que se mig a.
12
CA P Í T U L O
3
ECUACIONES DE LANGEVIN PARA DESCRIBIR UN PLASMA
DE PARTÍCULAS Y LA GENERACIÓN DE ELECTRONES
unaway
En es e capí ulo esumen b e emen e la base ísica nuleó ica que sopo a el conjun o de ecuaciones que
son esuel as numé ica a a és del código o iginal de Lange in ealizado en Fo an, y que pe mi en la
simulación del compo amien o de los elec ones de un plasma a al a empe a u a con inado magné ica-
men e, y e en ualmen e, bajo la acción de un campo eléc ico pe pendicula .
P ime amen e se in oduci á el concep o de plasma, y su impo ancia económica po el impac o que
pod ía llega a supone la ob ención de una eacción de usión nuclea con balance posi i o de ene gía, que
esul a ía en una uen e ela i amen e limpia de ene gía a pa i de elemen os muy comunes en nues o
en o no, ales como el Helio, el Deu e io, el T i io y el Li io.
Pos e io men e, se epesa á muy po encima, la base eó ica de la ísica de pa ículas que explica el
compo amien o de los plasmas, haciendo especial mención a una o ma de abo da las denominada ecua-
ciones de Lange in. Es e mé odo de Lange in pe mi e, median e unas ap oximaciones azonables, ob-
ene unas ecuaciones ela i amen e sencillas, sob e las que es posible aplica mé odos numé icos y con
ello consegui la simulación del compo amien o del plasma. Es e abajo se cen a á especí icamen e en
la simulación de un ipo de pa ículas muy i e esan es, los elec ones ugi i os ( unaway).
3.1 El plasma y su aplicación p ác ica: eacción con olada de usión
El plasma es un es ado de la ma e ia en el cual és a es á some ida a al as empe a u as (gene almen e mi-
llones de g ados Kel in), a esul as de lo cual, sus pa ículas es án o almen e ionizadas. En es e es ado su
compo amien o es simila al de un gas, po la g an libe ad de mo imien o de sus pa ículas. Esa g an em-
pe a u a y g an libe ad, implica una al a ene gía ciné ica, es o es, unas al as elocidades den o del medio.
Las condiciones necesa ias pa a la gene ación y man enimien o de la ma e ia en es ado de plasma se dan
comúnmen e en la na u aleza, pe o no en nues o inmedia o en o no, sino en el in e io de las es ellas, po
ejemplo.
13
Pa alelización median e GPU de la dinámica de elec ones en plasma con inado magné icamen e
Pa a su u ilización en C(básicamen e, den o de las unciones w appe ), se c ean unos iche os de cabe-
ce a (.h), que median e di ec i as de compilado #de ine, se ealiza una aducción del nomb e complejo
en que apa ecen es as a iables globales en los iche os obje o compilados con Fo an. Pa a se gené ico,
con iene inclui di ec i as compilado es de compilado que sean capaces de de ec a los posibles compila-
do es que se an a usa , y según eso, u iliza la aducción adecuada. A con inuación se expone un ejemplo
de cómo di e ncia en e compilado es pa a di ecciona co ec amen e el símbolo de una a iable global
expo ado desde código Fo an:
Lis ado 4.1: Compilación condicional median e de ección del compilado
1#i de ined(__ICC) || de ined(__INTEL_COMPILER)
2/*In el ICC/ICPC. ------------------------------------------ */
3#de ine L_TWO_NOISES __lange in_pa ams_mp_l_ wo_noises
4#de ine L_DE_LOR __lange in_pa ams_mp_l_de_lo
5...
6#eli (de ined(__GNUC__) || de ined(__GNUG__)) && !(de ined(__clang__) || de ined(
__INTEL_COMPILER))
7/*GNU GCC/G++. --------------------------------------------- */
8#de ine L_TWO_NOISES __lange in_pa ams_MOD_l_ wo_noises
9#de ine L_DE_LOR __lange in_pa ams_MOD_l_de_lo
10 ...
11 #endi
En h p://nadeauso wa e.com/a icles/2012/10/c_c_ ip_how_de ec _compile _name_
and_ e sion_using_compile _p ede ined_mac os se mues a cómo de ec a más amilias de com-
pilado , y con ello pode amplia es e ejemplo a una mayo a iedad de compilado es de C.
Di e encias en los p o o ipos de unción en e Fo an yC
A pesa de que Fo an no es á o almen e es anda izado, especialmen e en lo e e en e al name man-
gling, los compilado es Fo an g o an de GNU ei o de In el compa en las siguien es ca ac e ís icas
pa icula es en la c eación de los símbolos de las sub u inas y unciones:
• Las unciones y sub u inas en el iche o obje o es án siemp e con minúsculas
• Además, se les añade a su nomb e el ca ác e de sub ayado ( ambién conocido po “guión bajo”) 0_0.
Resumen compa a i o de las di e en es nomencla u as según lenguaje y amilia de compilado
Como e e encia y esumen inal, en la Tabla 4.1 se ejempli ican algunos casos:
Tipo de símbolo Tipo Nomb e decla ado Símbolo c eado po Símbolo c eado po
nm en Fo an g o an (GNU)i o (In el)
Función p opia T ADVANCE ad ance_ad ance_
Función ex e na (inde inida) U RHS_COEFFS_ hs_coe s_ hs_coe s_
Va iable p opia inicializada D MYDT __ad ance_MOD_myd __ad ance_mp_myd
Va iable p opia no inicializada B MY_ITER __ad ance_MOD_my_i e __ad ance_mp_my_i e
Va iable ex e na (inde inida) U DT __o b_pa ams_MOD_d __o b_pa ams_mp_d
Tabla 4.1: Ejemplos del name mangling de los compilado es Fo an usados
20
Capí ulo 4. Implemen ación de la pa alelización con CUDA Sección 4.2
En la abla an e io , se mues an los símbolos que se c ean en el iche o obje o p oduc o de la compila-
ción de un código uen e de un supues o iche o ADVANCE.F que de ine la sub u ina ADVANCE(). Se supone
que es a sub u ina ealiza una llamada a la unción RHS_COEFFS que es á decla ada y de inida en un iche-
o ex e no. En la sub u ina ADVANCE se de inen dos a iables, MYDT yMY_ITER, las cuales son globales pa a
odo el p og ama Fo an, una de ellas inicializada y o a no, y u iliza la a iable ex e na DT decla ada en el
iche o ORB_PARAMS.
Más in o mación sob e el signi icado y ipos decla ados po la u ilidad GNU nm se puede ob ene en
h p://www. eebsd.o g/cgi/man.cgi?que y=nm&ap opos=0&sek ion=0&manpa h=F eeBSD+9.
0-RELEASE&a ch=de aul & o ma =h ml
4.2.2 Esquema gene al de llamadas a CUDA desde Fo an a a és de w appe s C
El mé odo elegido pa a adap a el p og ama en Fo an 90 a CUDA consis e en la c eación de una unción
w appe en C, in ocada de o ma no mal desde Fo an, que ecoge los pa áme os y accede a las a iables
globales decla adas en Fo an necesa ias pa a pasa al ke nel. A pa i de ese momen o, odo el código
puede hace se en Co en C++, dado que se compila á con el compilado n cc p opo cionado po CUDA.
Se debe án ene en cuen a las cues iones de nomencla u a y de paso de pa áme os ya expues as en el
an e io apa ado.
En gene al el p oceso se á:
• La unción w appe C, debe á de ini se siemp e con los cali icado es ex e n "C" oid, dado que
una sub u ina en Fo an nunca de uel e alo . El ex e n "C" pe mi e la compa ibilidad con la
nomecla u a de unciones de Cdesde C++, pues o que n ccen ealidad es un en ol o io so is icado
del compilado C++ p esen e.
• En Cla unción debe á e mina siemp e con el ca ác e de sub ayado adicional ( ambién conocido
como guión bajo) ’_’, y con odos sus ca ac e es en minúsculas. Todos sus pa áme os se án pun e-
os, y es ecomendable que aquellos que no deban se modi icados po esa unción o sus de i adas
(pa áme o sólo de en ada), lle en el cali icado cons .
• Desde Fo an se in oca á a la unción po el nomb e de inido en C, con cualquie combinación de
mayúsculas y minúsculas, pe o obliga o iamen e sin el úl imo ca ác e de sub ayado. Además, debe
in oca se como se hace a una sub u ina de Fo an (con CALL <nomb e_sub u ina(lis a_pa áme os)),
y no como se hace a una unción de C.
• En la unción w appe Cse ges iona án los pa áme os de en ada, y sob e odo, se ecomienda allí
u iliza mac os pa a enomb a las a iables globales de Fo an, po se emendamen e a agosas
de esc ibi al cual desde C. A pa i de allí, con esos sinónimos en Cse ope a á no malmen e, siemp e
eniendo en cuen a que se a a de pun e os. Ex ema la p ecaución con los pa áme os que sean
ma ices mul idimensionales po la can idad de indi ecciones que se án necesa ias pa a su co ec a
e e encia al alo , o a la di ección (pun e o donde se encuen e el alo eal).
• En el w appe Cse ges iona án las ans e encias de da os que sean necesa ias en e la CPU y la GPU.
Se ecomienda, po e iciencia, e i a en odo lo posible la c eación de nue as zonas de memo ia pa a
cambia el o den de acceso de las ma ices.
• Desde el w appe Cse in oca á ya de o ma no mal a los ke nels, siguiendo las pa icula idades del
lenguaje CUDA-C, en especial, de la in ocación a dichos ke nels.
21
Pa alelización median e GPU de la dinámica de elec ones en plasma con inado magné icamen e
• Den o de los ke nels, donde se u iliza el lenguaje CUDA-C, se deben ene en cuen a, apa e de odo
lo ca ac e ís ico de ese lenguaje ex ensión de C, la p ocedencia de las zonas de memo ia mul idimen-
sionales (a ays). Si son en Cdeben accede se de la o ma habi ual (o den po ilas), pe o si p o ienen
( ue on de inidas) en Fo an, en onces el acceso debe ealiza se eniendo en cuen a que el almace-
namien o es po columnas, es o es, el segundo elemen o en la zona de memo ia no es el elemen o
A(1,2), sino el elemen o A(2,1). Es po ello que se ecomienda el uso de mac os en Cpa a di eccio-
na siemp e con ellas las zonas de memo ia de inidas en Fo an.
A con inuación se mues an las mac os u ilizadas en es e p oyec o pa a ealiza al acceso, en unción
de si se p e ende accede al alo , o a la di ección de memo ia donde es á almacenado dicho alo .
Es as mac os debe án de ini se pa a cada ipo de a ay mul idimensional. Las que se p esen an son
pa a ma ices bidimensionales de núme os lo an es de doble p ecisión (**double odouble[][]).
Lis ado 4.2: Mac os en C pa a el acceso a ma ices 2D de inidas en Fo an
1// Con e linea ec o ep esen a ion o 2D ma ix in C-like ile/column o de
2// Use: MATRIX2D_DBL_PTR(poin e _ o_ma ix_s a , ile, column, ile_wid h)
3#de ine MATRIX2D_DBL_PTR(m,i,j,N) (((m))+((j)*(N)+(i))) // A poin e o alue
4#de ine MATRIX2D_DBL_VAL(m,i,j,N) (*(((m))+((j)*(N)+(i)))) // The alue i se
Siguiendo es as indicaciones, supongamos una unción denominada ADVANCE, que es á decla ada en el
código o iginal en Fo an, y que al ealiza g an compu ación numé ica la amos a sus i ui po un ke nel.
Sea PARAM1 sea un pa áme o de en ada, y PARAM2 o o de salida. Su de inición en Fo an se á:
Lis ado 4.3: De inición de una sub u ina común en Fo an 90
1SUBROUTINE ADVANCE(PARAM1, PARAM2)
2INTEGER,INTENT(IN) :: PARAM1
3REAL*8, INTENT(OUT):: PARAM2
4...
5END SUBROUTINE ADVANCE
Pa a sus i ui esa unción po un w appe en C, su decla ación y con enido básico se á la siguien e:
Lis ado 4.4: De inición de la unción w appe en C
1ex e n "C" oid ke nel_ad ance_w appe _(cons in *pa am1, double *pa am2) {
2...
3// Copy da a om CPU o GPU, i apply
4ke nel_ad ance<<<G idSize,BlockSize(pa am1, ...);
5// Copy da a om GPU o CPU, i apply
6...
7 e u n;// I ’s oid. So we ha e o e u n no hing!
8}
Finalmen e, es a unción w appe en Cse in oca desde Fo an de la siguien e o ma:
Lis ado 4.5: Ejemplo de llamada a un w appe Cdesde Fo an
1CALL KERNEL_ADVANCE_WRAPPER(PARAM1, PARAM2)
22
Capí ulo 4. Implemen ación de la pa alelización con CUDA Sección 4.3
4.3 Di e encias p og amá icas impo an es en e Fo an yCyCUDA-C
En las secciones an e io es ya se han comen ado aspec os di e enciado es en e CyFo an, pe o que e-
nían más que e con la sin axis. En es a sección se ha á especial hincapié en las p incipales di e encias
semán icas y p og amá icas que deben conside a se en la pa alelización con CUDA-C de p og amas Fo -
an, que son las siguien es:
Paso de pa áme os: Po alo en e a po e e encia
En Cel paso de pa áme os es po alo siemp e (pa a pasa po e e encia, en ealidad se hace un
pase po alo , pe o del pun e o a la zona de memo ia e e enciada), en Fo an el paso es siemp e
po e e encia. En un apa ado pos e io se analiza án las consecuencias de es e hecho.
De es a o ma, en Fo an no se puede inclui una cons an e como pa áme o, y po o a, desde el
w appe en C, al ecibi un pa áme o siemp e se á un pun e o, y como al, es a á expues o a se
modi icado o eliminado desde C. Es po ello que se ecomienda que sea decla ado como pun e o
cons an e (cons ) en el p o o ipo en C.
Va iables globales Fo an den o de una sub u ina llamada po di e en es hilos OpenMP
Las sub u inas Fo an, cuando son llamadas desde di e en es hilos de ejecución, no compa en las
a iables globales de inidas en Fo an. Es án disponibles, pe o cada hilo iene su p opia e sión lo-
cal, sin que se copie el alo global cuando és a enía al se llamada.
Pa a soluciona es e p oblema, se p opone el uso de pa áme os adicionales en el p o o ipo de la
sub u ina Fo an. Así, po ejemplo, si se p ecisa ene acceso a la a iable global h ead del p o-
g ama Fo an, se debe añadi un nue o pa áme o, con el modi icado INTENT adecuado ("IN", o
"INOUT"), pa a que en la sub u ina se u ilice es a nue a a iable local con el alo que enía su co-
espondien e a iable global en el p og ama p incipal en el momen o en que ue llamada. De lo
con a io se inicializa a ce o.
Es e p oblema a ec a ambién a las ma ices y a iables de inidas como ALLOCATABLE.
Di e en e o den de almacenamien o en memo ia de ma ices mul idimensionales
Ya ha sido comen ado en el apa ado an e io , pe o es an impo an e que me ece un nue o eco da-
o io. En Cel acceso a las zonas de memo ia mul idimensionales se de ine y ealiza po ilas p ime o,
po columnas después (si es mul idimensional, de izquie da a de echa en el o den de las dimensiones
al cual se esc iben). En Fo an, pa a ma ices 2D, es po columnas p ime o y después po ilas. Si
son mul idimensionales, de de echa a izquie da en el o den que apa ecen las dimensiones o índices.
Di e en e inicio del índice de ec o es y ma ices
En C, el índice de inicio siemp e es 0, an o en ilas como en columnas. No es lo mismo en Fo an,
en donde el índice del p ime elemen o no malmen e empieza po uno ( éase la excepción en la
siguien e ca ac e ís ica). Eso es muy impo an e a la ho a de eu iliza el código en Fo an como
base pa a su aducción a C: los bucles e índices deben e isa se con enien emen e pa a que accedan
co ec amen e al elemen o co espondien e en cada momen o.
Ma ices mul idimensionales con índices que no empiezan en ce o
En Fo an es posible de ini ma ices en las que una (o a ias) dimensiones no empiecen en 1 como
no malmen e se hace. Puede de ini se que el índice de una de e minada dimensión enga un in e -
alo cualquie a, como po ejemplo, en e -3 y +6, en luga de 1 a 10. En Clos índices siemp e se án,
en ese ejemplo, en e 0 y 9, po lo que a la ho a de mig a el código de Fo an aCdebe án con em-
23
Pa alelización median e GPU de la dinámica de elec ones en plasma con inado magné icamen e
pla se es as e en ualidades pa a que el acceso sea siemp e al elemen o co ec o (apa e de que se
pod ía, además, es a accediendo a zona de memo ia ue a de la ma iz, con iesgo de co upción de
la misma).
Compa ibilidad en e los di e en es ipos numé icos Es muy impo an e ene en cuen a ealmen e cuál
es el espacio jus o de almacenamien o de las a iables en Csegún su decla ación en Fo an, donde
se pueden de ini , po ejemplo, núme os eales de X decimales e Y ci as en e as. Es o da luga a ipos
de a iables que deben analiza se pa a asegu a que en Cse le asigna un ipo compa ible en signo,
en capacidad (4, 8, 16 By es) y en p ecisión. Especial a ención a los ipos inexis en es en C, como los
LOGICAL de Fo an.
O as ca ac e ís icas meno es
No me ece la pena en a en de alle de la mul i ud de pequeños de alles de di e gencia en e es os
lenguajes. Como me o ejemplo, en es e p oyec o en algún momen o se pensó en la con eniencia de
u iliza un enume a e de C, pe o se obse ó que en Fo an no exis en las denominadas “cons an-
es nomb adas”. Po lo an o, se iene que abaja con a iables no males di ec amen e, con alo es
en e os.
Po ello se p ecisa un expe o conocedo de ambos lenguajes (Fo an,CyCUDA-C) pa a ealiza una
co ec a y óp ima mig ación o adap ación del código his ó ico en Fo an aCUDA.
Como co ola io, es emendamen e impo an e ene p esen e en odo momen o de dónde p oceden
las ma ices, pues o que según hayan sido de inidas en Co en Fo an, su acceso y ipología son di e en es.
Además, es muy impo an e eco da que según en qué lenguaje es emos p og amando, el acceso a las
ma ices y su de inición, son di e en es.
4.4 Implemen ación en CUDA del código de Lange in o iginalmen e en
Fo an
En es a sección se an a comen a b e emen e las p incipales ca ac e ís icas de la implemen ación ealiza-
da esul an e de la mig ación pa cial del código de Lange in en Fo an aCUDA. En una sección pos e io
se comen a á la modi icación que a és a p ime a implemen ación en CUDA debe ealiza se pa a ob ene
una mejo a de endimien o po el desacoplamien o en e compu ación e in e cambio de mensajes y esc i-
u a en disco.
4.4.1 Aplanamien o de sub u inas po inclusión en un ke nel aglu inado
En CUDA la in ocación a los ke nels, y los cambios de con ex os in e nos en e los di e en es hilos de la GPU
son menos cos osos que en los lenguajes adicionales de CyFo an. Po o o lado, es muy impo an e el
núme o de egis os y o os ecu sos, como las unidades lógicas de coma lo an e (simple y doble, pues son
independien es) no se sa u en, po que eso disminuye la can idad de hilos que pueden es a en ejecución
simul áneamen e en el mismo núcleo in e no (bien sea en es ado ac i o, con ac ualización cons an e del
con ado de p og ama, bien en es ado pasi o, po es a a la espe a de la inalización de alguna ope ación
la ga, como las a i mé icas de doble p ecisión).
Consiguien emen e, es muy ac ible en CUDA ob ene buenos esul ados incluso aunque se u ilicen
muchos ke nels simples, siemp e que és os p ecisen pocos ecu sos, pe o el núme o o al de ecu sos que-
den bien sa u ados, de o ma lo más homogénea posible, po la in ocación y ejecución en cada núcleo del
24
Capí ulo 4. Implemen ación de la pa alelización con CUDA Sección 4.4
núme o de bloques óp imo (o un poco más, nunca menos), como se demos a á en el siguien e Capí ulo 5
“Valo ación cuali a i a del p oceso de pa alelización con CUDA”.
A pesa de ello, y como demues a es e abajo, es posible ambién con a con un buen endimien o
ocupacional aunque el ke nel sea más bien complejo, si la u ilización de los ecu sos es homogéneo. Tal
es el caso que se p oduce en el ke nel_ad ance, que es el p incipal esponsable del iempo de ejecución
global del p og ama. Es e ke nel se enca ga de, pa a cada pa ícula, calcula la nue a elocidad ec o ial
en unción de la elocidad an e io , del alo de los campos magné ico y eléc ico, y de un componen e
es ocás ico ( undamen al al se unas ecuaciones del ipo Lange in) que simula el e ec o colisional del es o
de pa ículas (elec ones e iones) a su al ededo .
En el código o iginal, al como se obse a en la Figu a 5.1, la sub u ina ADVANCE es esponsable del 5,45%
del iempo de compu ación, pe o és a llama exclusi amen e a o as sub u inas de ayuda. Es as sub u inas
de ayuda si en pa a calcula algunos pa áme os conc e os de la ó mula de Lange in, que es la que se
compu a en la sub u ina pad e ADVANCE, ales como el e ec o de la colisión con iones (RHS_ION) y el ángulo
de la elocidad esul an e as impac a con iones o elec ones, (PHI_AND_PSI, llamada a a és de la o a
sub u ina RHS_COEFFS). También se u ilizan sub u inas auxilia es, como GET_GAUSSIAN_NOISE, enca gada
de ealimen a el plasma con un elec ón es adís icamen e simila a la condición inicial po cada elec ón
ugi i o ( unaway) que se escapa del con inamien o magné ico. Es a sub u ina, GET_GAUSSIAN_NOISE, a su
ez, llama a una sub u ina de biblio eca, RAN2, que es la que gene a los núme os alea o ios necesa ios pa a
el compo amien o es ocás ico de la ecuación de Lange in. Po lo an o, en ealidad, la sub u ina ADVANCE,
y las dependien es de ella, es esponsable del 98,5% del iempo de ejecución del código o iginal.
Es a cadena de llamadas de sub u inas no puede ealiza se de o ma equi alen e con ke nels. No en
el sen ido de que un ke nel llame a o o ke nel. Aunque eso es posible a pa i de las a je as Keple , esas
in ocaciones de un ke nel po o o, es á pe mi ido sólo con un ni el de anidamien o de uno, e implica una
nue a c eación de muchos más bloques con sus espec i os hilos. Es á pensado pa a pe mi i , has a cie o
pun o, la p og amación dinámica, un pa adigma de p og amación que no es aplicable a nues o p og ama.
Lo que se hace, es in oca a un único ke nel, el cual puede llama a o as unciones en CUDA-C que lo
que hacen es simpli ica la expansión del código comple o en una única unción ke nel. Pe o en ealidad, el
ke nel es único, lo que pasa es que és e llama a unciones, compiladas en el código p opio de la GPU (PTX).
Po lo an o, en el código p esen ado, el ke nel_ad ance_w appe _incluye o as unciones CUDA-C,
hs_coe s y hs_ion, que son la mig ación de sus co espondien es sub u inas de Fo an. Se obse a
que “desapa ecen” las sub u inas GET_GAUSSIAN_NOISE yRAN2. Eso es debido a que las a je as NVIDIA, a
a és de CUDA ienen sus p opios (y a iados) gene ado es de núme os alea o ios, muy p obablemen e
más e icaces y segu os que cualquie o o mé odo que se quisie a implemen a di ec amen e con CUDA-C
en la GPU.
4.4.2 Minimización de la ans e encia de da os en e CPU yGPU
Las implemen aciones p esen adas han minimizado las ans e encias de da os en ambos sen idos en e la
CPU y la GPU.
Únicamen e se ansmi en los siguien es, que son ine i ables:
• Vec o es de elocidades iniciales cuando és os son leídos de un iche o de einicio ( iche os con el
nomb e lange in. es a .????): E iden emen e, pues la GPU no puede accede di ec amen e al
disco du o. Nó ese que si el p og ama debe gene a las elocidades iniciales, según los pa áme os
indicados en el iche o de con igu ación (dis ibución uni o me o gaussiana), és as se gene an ya
25
Pa alelización median e GPU de la dinámica de elec ones en plasma con inado magné icamen e
di ec amen e en la GPU, sin in e ención de la CPU, quien desconce á has a la inalización de la eje-
cución el alo conc e o de la elocidad de cada pa ícula del plasma.
• Vec o es de elocidades inales: Es necesa io pasa los de la GPU a la CPU al inal de la compu ación,
po la misma azón: la GPU no puede gua da esos da os en iche os lange in. es a .???? en disco
du o.
• Valo es es adís icos in e medios: La p opia GPU es la enca gada de ca aloga la elocidad de cada pa -
ícula en su co espondien e casille o pa a inalmen e en ia a la CPU sólo los da os es adís icos ya
elabo ados que pe iódicamen e, si así se ha indicado, deben g aba se en disco o mos a se po conso-
la. Es as es adís icas pueden se de di e en es alo es y ca ac e ís icas, pe o siemp e son compu adas
po la GPU y ansmi idos los esul ados es adís icos elabo ados a la CPU.
• La con abilización del núme o de elec ones ugi i os gene ados: Que en ealidad es edundan e con
lo an e io , pues o que es o a es adís ica más.
Con ello se consigue elimina la necesidad de in e cambia se la in o mación sob e las elocidades de
las pa ículas en e la GPU y la CPU. La e sión que de ini i amen e eliminó esa necesidad p opo cionó
una acele ación in e na en e e siones de p ác icamen e el 100%. Es o es, el in e cambio en cada i e ación
empo al de los ec o es de elocidad suponía un cos e semejan e al cos e compu acional de los ke nels.
4.4.3 U ilización adecuada de los gene ado es de núme os alea o ios de CUDA
CUDA, median e la biblio eca es ánda CURAND, p opo ciona un muy a iado y e icien e conjun o de ge-
ne ado es de núme os alea o ios. Tal es su a iedad, que se pueden selecciona di e en es mé odos de ob-
ención de núme os, que se basan en di e en es mé odos, con en ajas y des en ajas espec o de la ag u-
pación, segu idad, dis ibución y elocidad de gene ación de los núme os alea o ios. En es e abajo no se
ha en ado a alo a las di e en es écnicas base, y se han seleccionado los que pa ecían más usualmen e
usados en la bibliog a ía, en u o iales y o os p og amas.
Además, las unciones que apo a, pe mi en la gene ación di ec amen e de núme os con dis ibución
uni o me (la más usualmen e implemen ada de o ma es ánda en los demás lenguajes), pe o ambién de
núme os con dis ibución no mal ( ambién conocida como dis ibución gaussiana). Es más, incluso es po-
sible gene a los núme os alea o ios po pa es, con una mejo a sob e un 25% espec o a gene a dos nú-
me os alea o ios de o ma indi idual. Ambas ca ac e ís icas han sido u ilizadas en es as implemen aciones,
pe mi iendo que ue a la p opia GPU la enca gada de sin e iza los é minos es ocás icos di ec amen e den-
o del ke nel.
O o aspec o de endimien o muy impo an e a ene en cuen a es que los núme os alea o ios deben se
inicializados. Es a inicialización no debe ealiza se en cada in ocación del ke nel, sino que si las a iables
de los gene ado es alea o ios son gua dados en la zona de almacenamien o global de la GPU, se asegu a su
pe manencia du an e oda la ejecución de la aplicación, aunque el ke nel conc e o que los haya inicializado
o usado po úl ima ez inalice. De es a o ma, es posible ene los gene ado es ya inicializados pa a cada
pa ícula, e in oca la pe ición de nue os núme os alea o ios ap o echando las semillas exis en es de una
in ocación a o a del ke nel.
Cuando es e enónemo se descub ió, se ob u o una acele ación ela i a del 35% en el iempo global de
ejecución del p og ama global, en e las dos e siones implicadas. Es o signi ica que aunque los núme os
alea o ios pueden se ápida y e icien emen e gene ados en la GPU, no es así su p oceso de inicialización.
Es po ello que es con enien e inicializa los una única ez du an e oda la ejecución de la aplicación, y
eusa los siemp e que sea posible.
26
Capí ulo 4. Implemen ación de la pa alelización con CUDA Sección 4.4
O a mejo a ue la de asegu a se que es os gene ado es es án en memo ia compa ida en el momen o de
la ejecución del ke nel. Es o es, en gene al es án en memo ia global, pe o cuando son necesa ios se in ocan
a ias eces. Pa a asegu a nos de que únicamen e se bajan y suben de la memo ia global a la más ce cana a
los núcleos CUDA una ez (al inicio y al inal de cada in ocación al ke nel) y no depende de que es én o no
oda ía p esen es en la cache, se hace una copia de ellas en memo ia sha ed y después, al e mina el ke nel,
se sube el es ado del gene ado alea o io de nue o a la memo ia global. Es o es posible po que enemos un
gene ado po cada una de las pa ículas.
No obs an e, hay que señala un p oblema que se p odujo con los núme os alea o ios: en de e minadas
simulaciones, es necesa io con a con núme os alea o ios dis ibuidos uni o memen e pa a unas cosas,
pe o o os dis ibuidos de o ma no mal (gaussiana) pa a o as. En esos casos, no puede u iliza se la mis-
ma a iable gene ado a, siendo necesa io c ea gene ado es di e en es pa a dis ibuciones di e en es. Es o
implica un sob ecos e, pe o se ealiza una única ez du an e el p og ama.
Como idea de op imización se deja la posibilidad de p oba di e en es gene ado es, pa a e si su ini-
cialización y cons an e gene ación es más ápida en unos que en o os. Nó ese que nues o p og ama, en
p incipio, no equie e de especiales condiciones de ex ema segu idad en cuan o a la calidad de los núme-
os alea o ios gene ados.
O a idea de op imización consis e en segui los consejos que en di e sos o os apa ecen, consis en es
en que se inicializa sólo una a iable gene ado a de núme os alea o ios, o un núme o educido de ellos,
po ejemplo, una po cada bloque. Pos e io men e, cuando se solici an núme os alea o ios, en luga de
pedi el siguien e, se pide el segundo, e ce o o cua o, e c. según el núme o de hilo. Dicen que si se hace
a anza la cuen a, es posible que no exis an colisiones de núme os gene ados. No obs an e, hay c í icas a
es os mé odos po cuan o que su u ilización implica la pé dida de la segu idad eó ica de los algo i mos
base de la implemen ación de es os núme os alea o ios. Po lo an o, los c í icos indican que los núme os
ob enidos pueden es a sesgados, o ene cie as ag upaciones locales indeseadas. Es un ema abie o a
la expe imen ación, an o pa a e si acele a ealmen e las ac uales implemenaciones, y ambién sob e si
los esul ados inales se mues an es adís icamen e semejan es o di e en es a los ob enidos con la ac ual
implemen ación, más conse ado a y posiblemen e más len a, pe o segu a.
4.4.4 Mejo as en el código: u ilización de unciones es ánda en e a mé odos numé icos
pesados
En el código o iginal, la sub u ina ad ance debe implemen a una de e minada in eg al. En el código o igi-
nal, la implemen ación es al cual, es o es, se ealiza una in eg ación numé ica usando el mé odo apezoi-
dal con unos 200 pasos. Es o compu acionalmen e es cos oso. Si se analiza la in eg al, y como en algunos
a íclos pu amen e cien í icos donde se desa ollan es as ecuaciones de Lange in pa a plasma, esa in eg al
ha dado luga a la de inición como al de una unción ampliamen e conocida: la unción e o .
La so p esa es á en que es a unción es an ecuen e, que p ác icamen e odos los lenguajes compu-
acionales (es o es, que mínimamen e si an o se usen pa a cálculos ma emá icos), ienen p ác icamen e
de se ie, alguna unción p opia o en una biblio eca numé ica es ánda , implemen ada es a unción. Tal co-
mo incluso se ha comp obado expe imen almen e en es e p oyec o, la llamada a es a unción es mucho
más p ecisa, exac a y ápida que el mé odo de in eg ación implemen ado en Fo an den o del código o i-
ginal. Es más, po ejemplo, en C, el e o de la unción es á asegu ada en se como máximo dos unidades
en la úl ima posición ep esen a i a del núme o lo an e de doble p ecisión esul an e, siendo de una como
máximo en la mayo pa e del in e alo azonable y no mal de uso. Es e iden e que doscien as sumas y
mul iplicaciones pa a un cálculo numé ico ap oximado a a ene una exac i ud de a ios ó denes mucho
peo .
27
Pa alelización median e GPU de la dinámica de elec ones en plasma con inado magné icamen e
La unción e o en Cy en CUDA-C iene el mismo nomb e, y se a a de e (), la cual se ha u ilizado en
el ke nel_ad ance, con mejo a de p es aciones. Es a mejo a ha sido del 1–2% en el momen o de ealiza el
cambio.
4.4.5 Algo i mos de educción en la GPU
El sec e o e iden e de la buena acele ación que se ob iene en los esul ados de las implemen aciones p e-
sen adas en es e abajo, es la absolu a independencia de los cálculos en e cada una de las pa ículas simu-
ladas. Po ello, no exis e dependencia de da os en la GPU y p ác icamen e se asegu a que odos los accesos
a memo ia son coalescen es, p opiedad que mejo a las p es aciones compu acionales de la a je a g á ica,
al mejo a el asiego de in o mación in e no en e la memo ia y los núcleos de la GPU.
No obs an e, exis e un pa de si ios en el algo i mo, en donde la GPU se e o zada a ealiza una educ-
ción. Es o es, debe ob ene un esul ado a pa i de los alo es calculados po el es o de hilos y bloques,
es o es, de odas las pa ículas:
• Cálculos es adís icos pa a ob ene es adís icas sob e el alo de las componen es de la elocidad de
los elec ones (pe pendicula y pa alela al campo magné ico): ca ac e izado po que se deben siemp e
ene en conside ación el alo de odas las pa ículas (po lo an o, de odos los hilos pa icipan es
en el ke nel).
• Recuen o del núme o de elec ones que en cada i e ación pasan a se elec ones ugi i os ( unaway),
po excede la elocidad c í ica de con inamien o: se ca ac e iza po que, en condiciones no males
del plasma, se a a de una baja p opo ción de elec ones (hilos) los que deben compu a se.
Es as educciones se pueden abo da al menos desde dos pe spec i as di e en es:
• Median e algo i mos p opios de educción, gene almen e con cos e compu acional de o den O(log2(N)):
Son los indicados pa a cuando el po cen aje de hilos (pa ículas) a pa icipa en la educción es ele-
ada espec o al o al.
• Median e ope aciones a ómicas que cada pa ícula ealiza sob e una a iable global común: Son los
indicados cuando el po cen aje de hilos (pa ículas) a pa icipa es desp eciable en e al conjun o
o al de pa ículas.
La elección del mé odo es muy impo an e po su impac o en el iempo de compu ación. Es a decisión
es un cla o ejemplo de las di icul ades que suelen ene los p og amado es que no son expe os en inge-
nie ía in o má ica, dado que ecuen emen e se ob ia la ealización de un es udio p e io (o aunque sea
pos e io , expe imen al) de cos es del algo i mo a implemen a .
La elección pa a cada uno de los dos casos es di e en e, y se basa en un es udio de cos es:
Es adís ica de elocidades Cada hilo se ubica en su con enedo según sus componen es de elocidad pe -
pendicula y pa alela, pe o hay que e cuán as pa ículas hay en cada con enedo . Po lo an o es una
educción en las que siemp e pa icipan odas las pa ículas. Es po ello que se equie e un algo i mo
de educción basado en educción bina ia en á bol, que iene un cos e de o den O(log2(N))-
Con eo de elec ones unaway En condiciones no males de plasma, el núme o de elec ones ugi i os es
muy pequeño. Si ue a g ande, el okamak es a ía descon olado y la eacción nuclea de usión se
pa a ía en pocos milisegundos. Po lo an o, no iene sen ido es a simulando en esas condiciones.
Consiguien emen e, in e esa el algo i mo basado en ope aciones a ómicas sob e una misma a iable,
28
Capí ulo 4. Implemen ación de la pa alelización con CUDA Sección 4.4
pues en el caso ex emo de que coincidan odas las ope aciones de adición en el mismo momen o,
és as se se ializa ían, y el cos e se ía de o denlineal, O(log2(n)), con nsiendo el núme o de colisiones.
Analicemos cada una de es e ipo de educción po sepa ado.
4.4.5.1 Reducción global i e a i a
Es a educción iene sus iquiñuelas cuando se iene que ealiza en GPU, sob e odo cuando la capacidad
compu acional CUDA de la a je a usada es más baja. Es o es así, po que és as manejan mucho peo los
accesos no coalescen es a la memo ia. Pa a esol e es a e en ualidad, es impo an e plani ica es os acce-
sos pa a que sean lo más coalescen es posibles, y siemp e bajo el p isma de que se á necesa io ealiza una
en ada ecu si a (en ealidad, i e a i a) de o den O(log2(N)), siendo Nel núme o de pa ículas, pa a su
inal educción.
En el SDK de CUDA apa ece un mé odo e iblemen e e icien e que u iliza unas mac os de compilado
pa a ob ene la máxima po encia de la a je a g á ica, independien emen e de su capacidad compu acio-
nal, al op imiza mucho el acceso coalescen e a la memo ia. No obs an e, es un mé odo muy ebuscado
como pa a pode eu iliza lo. Es po ello la implemen ación se ha ealizado u ilizando la écnica del á bol
bina io, con cos e O(log2(m)), siendo mel núme o de hilos en cada bloque (32, o sea, 6 i e aciones), pa a
pos e io men e, hace o a pasada y ol e a o aliza esas sumas pa ciales ( o al de bloques di idido po
32), una po cada bloque lanzado.
Como ejemplo, se puede acudi al código uen e de la implemen ación, al iche o ke nel_calcula e_s a is ics.cu,
conc e amen e a los ke nels ke nel_calcula e_s a is ics_ a ios yke nel_calcula e_s a is ics_ a ios2D,
que son demasiado ex ensos pa a su inclusión en es a memo ia.
4.4.5.2 Reducción median e el uso de ope aciones a ómicas
CUDA p o ee de ope aciones a ómicas sob e a iables globales. El único p oblema con las ope aciones
a ómicas en la GPU es que has a el momen o (has a CUDA e sión 7.0, capacidades compu acionales has a
5.2), no es á pe mi ido ealiza una educción sob e a iables de longi ud de 64 bi s. Es o es, no se puede ha-
ce un a omicAdd sob e un en e o la go (long in ) o sob e un núme o en coma lo an e de doble p ecisión
(double). Como en nues o caso, el con eo se ealiza con en e os no males, de 4 oc e os, es pe ec amen e
iable, y ecomendable desde el pun o de is a de eo ía de cos e compu acional.
Simplemen e consis e en selecciona sólo aquellos hilos (pa ículas) que deban con abiliza se, y con
ello, in oca di ec amen e a la unción a omicAdd. Veamos como ejemplo, la o ma en que se u iliza en el
ke nel que ecuen a los elec ones con elocidad mayo que la c í ica, conside ados po ello en la simula-
ción como elec ones unaway. El Código 4.6 es un ejemplo de su u ilización.
29
Pa alelización median e GPU de la dinámica de elec ones en plasma con inado magné icamen e
El p oblema con odo es e esquema es que las de enciones en espe a del semá o o, es que se a a de
espe as ac i as, en un bucle acío, simplemen e comp obando cons an emen e la condición del cambio
de es ado. Es o es ine icien e ene gé icamen e, pues obliga a que la CPU es é siemp e al 100% de u iliza-
ción. Además, según el plani icado , puede que le es é obando ciclos p eciosos al o o hilo que sí que es á
haciendo a eas p o echosas (compu ando, o ansmi iendo o esc ibiendo en disco).
Se p opusie on soluciones al e na i as que ealmen e no pa ecían llega a soluciona o almen e el p o-
blema:
• Uso de señales: La idea es c ea los se icios de la a iable condición u ilizando los se icios del sis-
ema ope a i o. Se desconoce cómo usa , lanza y ges iona señales del sis ema ope a i o en Fo an.
Po ello, se desca a inmedia amen e.
• Do mi el hilo en espe a, pa a que no es é en espe a ac i a, y despe a lo pasado cie o iempo. El
p oblema es á de nue o en que Fo an no p o ee de unciones de de ención in e io es a un segundo.
Se llegó a c ea un w appe pa a in oca a una nue a unción en Cque pe mi ía ealiza espe as desde
un mic osegundos a a ios milisegundos.
En las p uebas ealizadas, no obs an e, se comp obó que la g anula idad e ec i a mínima e a de unos
250 µs (0,25 ms), y que es e alo e a a iable según el en o no de ejecución. Una espe a de 0,5 ms im-
plica 2.000 espe as así cada segundo. Los iempos de ejecución indicaban que en ese iempo, incluso
el hilo 0 compu acional hab ía ealizado algunas i e aciones. Es o implica que si el hilo compu acio-
nal, el eó icamen e más len o, in oca a a es a llamada, se pe de ía un mínimo de 5 i e aciones, lo
cual pa ecía poco azonable, pues o que a lo mejo el hilo de comunicaciones ya había e minado
an es.
Po es as p ime as p uebas, ambién se desca ó es a opción.
Desca adas es as opciones, se pensó en u iliza los ce ojos de OpenMP (omp_locks).
4.5.2 Implemen ación inal con ce ojos de OpenMP (omp_locks)
La e sión 27 inal ecoge las ideas y la expe iencia de la an e io 26, pe o la aplica a pa i de la 24.
Añade a es a e sión dos ce ojos, con los cuales se ges iona el acceso a las i e aciones en que se ealiza
el cómpu o es adís ico, y las inmedia amen e siguien es a ella. Se a a pues de una ges ión de g ado más
g ueso, pues o que ya no se p e ende ges iona el caso de cada una de las es adís icas po sepa ado, sino
que simplemen e se ac úa sob e oda la i e ación, lo cual incluso iene cie o sen ido compu acional po la
exis encia de dependencia de da os en e las di e en es es adís icas de una misma i e ación.
Los equisi os son los mismos: se c ean pe manen emen e zonas de memo ia auxilia (bu e s) pa a al-
macena los esul ados es adís icos de una i e ación, de al o ma que en la siguien e los da os o iginales
puedan se sob eesc i os sin p oblema. De paso, oda la ges ión de memo ia dinámica se pasa a es á ica pa-
a p ác icamen e odas las a iables, dado que se conside a ambién muy cos oso el es a cons an emen e
ese ando, inicializando y libe ando memo ia en cada i e ación es adís ica.
Los ce ojos en OpenMP pe mi en bloquea en una espe a no ac i a al bloque que in en a oma el
ce ojo pe o és e ya es á omado po o o hilo. Sólo cuando el o o hilo lo libe a, el sis ema ope a i o a isa
el hilo bloqueado pa a que és e pueda coge el ce ojo y segui su camino. Se a a pues de una ges ión
p opia de OpenMP, y po lo an o op imizada pa a la a qui ec u a subyacen e y eó icamen e más e icien e
que el in en o ealizado con la e sión 26 an e io men e explicada.
36
Capí ulo 4. Implemen ación de la pa alelización con CUDA Sección 4.5
Pa a el caso que nos ocupa, la solución plan eada ha sido la u ilización de dos ce ojos di e en es, así
como dos a iables auxilia es de seguimien o de quién es su p opie a io (es impo an e, dado que es á
p ohibido libe a un ce ojo que no se posea, ni ol e a coge un ce ojo que ya se posee, en ambos casos,
la ejecución e mina ab up amen e con e o ).
La idea básica es que inicialmen e el hilo 0 posee ambos ce ojos, y siemp e end á al menos uno de
ellos. Nunca se le es a á pe mi ido libe a los dos ce ojos. Po su pa e, el hilo 1 pod á ene o ninguno, o
sólo uno de los dos ce ojos. Pod án habe ce ojos lib es, sin ningún p opie a io, que siguiendo las eglas
an e io es, y o as po de ini , pod án se omados po cualquie a de los dos hilos, si se le pe mi e. Depen-
diendo de qué ce ojo o ce ojos poseea cada hilo, pod á a anza en su a ea, o debe á queda se bloqueado
en espe a de un cambio de si uación, es o es, coge uno de los o os ce ojos. Cada ez que se coge el ce o-
jo, el nue o p opie a io ano a en la a iable auxilia co espondien e que él es el p opie a io de ese ce ojo.
Cada ez que se libe a, esa a iable se pone a -1, indicando que no iene p opie a io. Así, cualquie hilo
puede en cualquie momen o sabe quién es el p opie a io del ce ojo, o si és e es á lib e. Los hilos 0 y 1
ienen asignadas las mismas unciones que las desc i as en el caso an e io de 26.
El esquema de allado de uncionamien o es el siguien e:
1. La ejecución empieza con el hilo 0 poseyendo ambos ce ojos, que denomina emos ab e iadamen e
WORK yWAIT.
2. Al inicio de la i e ación de gene ación de es adís icas, el hilo 0 comp ueba po las a iables auxilia-
es si es el p opie a io de WORK. Si no lo es, in en a coge lo, quedando bloqueado si no lo consigue
(llamada a omp_se _lock()).
3. Si ya e a p opie a io de WORK, en onces in en a coge WAIT, de al o ma que si alla, ambién se queda
bloqueado has a ob ene lo.
4. Sólo cuando el hilo 0 posee ambos ce ojos, con inua la ejecución de la i e ación de es adís icas. Es o
es, p ecisa ene los dos ce ojos pa a elabo a es adís icas.
5. No obs an e lo an e io , cuando ha ob enido los dos ce ojos, y a a con inua la ejecución, lo p ime o
que hace es libe a el ce ojo de WAIT.
6. E en ualmen e el hilo 0 e mina el ciclo de gene ación de las es adís icas, que las gua da en las a ia-
bles auxilia es al e ec o, y llega a la siguien e i e ación, la de es adís icas+1.
7. Cuando el hilo 0 llega al inicio de la i e ación es adís icas+1 (o e mina el bucle, que es equi alen e), el
hilo 0 in en a coge el WAIT. Si no puede coge lo, queda bloqueado has a consegui lo. Si lo consigue,
o cuando, as es a bloqueado, lo consigue, es po que el hilo 1 ya lo ha omado y lo ha de uel o, y po
lo an o, si e pa a que el hilo 0 ob enga el econocimien o del hilo 1 de que és e sabe que el hilo 0
es á p epa ando los nue os da os.
8. El hilo 0, as ob ene de nue o el WAIT, libe a el WORK, con lo cual ha espe ado en odo momen o
ene al menos uno de los dos ce ojos en su posesión.
9. Pasemos al hilo 1. Cuando és e llega a la i e ación de gene ación de es adís icas, ope a de o ma di e-
en e al hilo 0. P ime o mi a si él es el poseedo de alguno de los dos ce ojos, WORK oWAIT, si es así,
se ha p oducido un e o inespe ado en el p o ocolo, y di ec amen e abo a la ejecución, e minando
anómalamen e el p og ama.
37
Pa alelización median e GPU de la dinámica de elec ones en plasma con inado magné icamen e
10. Si sigue i o (no enía ninguno de los dos ce ojos), el hilo 1 in en a ob ene el WAIT, o se queda blo-
queado en espe a de él.
11. Al consegui el WAIT se en e a de que el hilo 1 ya ha llegado ambién al hilo de gene ación de es adís-
icas, así que lo de uel e inmedia amen e como econocimen o de habe se en e ado.
12. Inmedia amen e, in en a coge el ce ojo de WORK, dado que el hilo 0 debe es a en esos momen os
gene ando las es adís icas, y no lo libe a á has a que el hilo 0 no e mine esa i e ación de abajo
es adís ico, y al inicio de la i e ación de es adís icas+1, ecoja el WAIT pa a sabe que el hilo 1 ya es á
p epa ado, y de uel a el WORK como señal al hilo 1 de que los da os ya es án gene ados y en si io segu o
pa a pode se ges ionados po el hilo 1.
13. El hilo 1, cuando oma el WORK, se desbloquea, y con inua con su i e ación, que se á la de es adís icas
acabas de gene a po el hilo 0.
14. Cuando el hilo 1 e mina su i e ación de in e cambio y esumen de es adís icas, y almacenamien o
en disco de ellas, si p ocedía, llega al inicio de la i e ación de es adís icas+1.
15. Al inicio de la i e ación es adís icas+1, el hilo 1 de uel e el ce ojo de WORK como señal de que ya ha
e minado su abajo.
16. Consecuen emen e, el hilo 1 sólo ha enido como máximo un único ce ojo en su posesión, el WAIT
pa a econoce la si uación de abajo del hilo 0, o el WORK cuando es á ges ionando los da os es a-
dís icos gene ados po el hilo 0. Cuando es á i e ando sin hace nada has a la siguien e i e ación de
es adís icas, o bloqueado al inicio de és a, no posee ningún ce ojo.
Con es e p o ocolo se ha implemen ado la e sión 27, que como se e á en el Capí ulo 5 “Resul ados”,
es más ápida que la e sión de pa ida 24 en ap oximadamen e un 3–4% en el peo de los casos, excep o en
un caso pun ual que se explica á en su momen o, y que pudie a ene elación con el en o no de ejecución.
A con inuación se incluye el código al inicio de la i e ación p incipal del bucle, donde se ges ionan es os
ce ojos. El Código 4.9 es á ampliamen e comen ado pa a segui el p o ocolo an e io .
Lis ado 4.9: Ges ión de ce ojos pa a pe mi i el co ec o solapamien o de cálculo y comunicación
1DO jk = 1, ni e - 1 ! Main loop o empo al i e a ions
2IF(l_p oduc ion) THEN ! Check i he s a is ics a e ac i e
3i ( h ead==0) hen ! Th ead 0 does he compu a ional asks
4i (np od*in (jk/np od) == jk .o . jk==ni e -1 .o .
5& ncon ol*in (jk/ncon ol) == jk) hen
6! I e a ion when he special s a is ical calcula ions mus be
done
7! Mas e ( h ead==0) canno s a i h ead==1 has no
inished
8! messaging and s o ing he p e ious s a s
9! The h ead==0 (mas e ) has o ha e bo h locks o con inue
10 ! I always ha e one a leas , don’ need o check i ha e none
11 ! Then, when he has go bo h, he inmedia ly elease lock_wai
12 i (lock_wo k_owne .ne. h ead) hen
13 call omp_se _lock(lock_wo k)
38
Capí ulo 4. Implemen ación de la pa alelización con CUDA Sección 4.5
14 lock_wo k_owne = h ead
15 i e _wo k = jk
16 elsei (lock_wai _owne .ne. h ead) hen
17 call omp_se _lock(lock_wai )
18 lock_wai _owne = h ead
19 i e _wai = jk
20 endi
21 call omp_unse _lock(lock_wai )
22 lock_wai _owne = -1
23 elsei ((jk .ne. 1) .and. (np od*in (jk/np od)==jk-1 .o .
24 & ncon ol*in (jk/ncon ol)==jk-1) ) hen
25 ! I e a ion a e he special s a s ha e been done
26 ! The mas e ( h ead==0) has only he lwo k and wai s o lwai
27 ! When i ge s lwa , hen i eleases lwo k so i can be aken
28 ! by h ead==1 who will message and/o s o e ha in o
29 call omp_se _lock(lock_wai )
30 lock_wai _owne = h ead
31 i e _wai = jk
32 call omp_unse _lock(lock_wo k)
33 lock_wo k_owne = -1
34 endi ! end o checking i e a ion numbe o h ead==0
35 else ! I ’s h ead 1, which does he MPI and I/O pa
36 i (np od*in (jk/np od) == jk .o .
37 & ncon ol*in (jk/ncon ol) == jk) hen
38 ! I e a ion when he special s a is ical calcula ions mus be
done
39 ! Th ead==1 canno s a i mas e ( h ead==0) has no ye
inished
40 ! his e y same i e a ion, because needs o be su e he da a
is OK.
41 ! Th ead==1 ha e no lock, we check ha , and elease hem i so
.
42 ! Then h ead==1 ies o ge lock_wai be o e con inue he mes
&IO wo k.
43 ! When i ge s i , eleases i inmedia ly and hen ies o ge
44 ! he lock_wo k
45 i (lock_wo k_owne == h ead .o .
46 & lock_wai _owne == h ead) hen
47 p in *,’ h ead ’, h ead,’ha e one lock a i =’,jk,
48 &’Tha is no allowed. STOPING!!!’
49 STOP ! No allowed, some hing wen w ong. Abno mal e mina ion
50 endi
51 call omp_se _lock(lock_wai )
52 lock_wai _owne = h ead
53 i e _wai = jk
54 call omp_unse _lock(lock_wai )
55 lock_wai _owne = -1
39
Pa alelización median e GPU de la dinámica de elec ones en plasma con inado magné icamen e
56 call omp_se _lock(lock_wo k)
57 lock_wo k_owne = h ead
58 i e _wo k = jk
59 elsei ((jk .ne. 1) .and. (np od*in (jk/np od)==jk-1 .o .
60 & (ncon ol*in (jk/ncon ol)==jk-1 .o . jk==ni e -1)))
61 & hen
62 ! I e a ion a e he special s a s ha e been done
63 ! The h ead==1 has he lock_wo k, and eleases i
64 ! o le know he mas e i has al eady messaged and
65 ! s o ed p e ious s a s
66 call omp_unse _lock(lock_wo k)
67 lock_wo k_owne = -1
68 endi ! end o checking i e a ion numbe o h ead==1
69 endi ! i ( h ead==0) hen
70 ENDIF ! IF(l_p oduc ion) THEN
71 ! End o lock managemen , ne e make his egion OMP CRITICAL o will deadlock
4.5.2.1 Conside aciones con la adición de OpenMP en el código Fo an
Al u iliza hilos de OpenMP se pueden de ini qué a iables an a se locales y cuáles an a se compa idas
en e ambos hilos pa icipan es de la pa alelización de la egión dada. No obs an e, hay un caso especial
y es cuando desde Fo an se in oca a una sub u ina. En ese momen o, las a iables que has a aho a e an
globales, desapa ecen como ales, y pasan ealmen e a se locales. Es más, se einicializan a su alo po
de ec o (gene almen e ce o), sin ni siquie a conse a el alo que la a iable global enía en el momen o
de in oca se la sub u ina. Ese compo amien o no es así si la c eación de los hilos es den o de la sub u ina.
Pa a sol en a ese p oblema se hace necesa io, pues, pasa como pa áme os en la in ocación a la su-
b u ina de odas aquellas a iables que el hilo p ecise conoce pa a la ejecución co ec a de la sub u ina
in ocada. Es o hace que sea necesa ia la modi icación del p o o ipo de casi odas las sub u inas in ocadas
desde el p og ama p incipal, pues es allí donde se c ean los hilos.
4.6 Valo ación cuali a i a del p oceso de pa alelización con CUDA
La ealización de la mig ación paso a paso ha pe mi ido e alua en cada momen o cuáles han sido los
p incipales sal os cuali a i os y cuan i a i os ob enidos du an e el p oceso, así como ene que en en a se
a decisiones pa a sol en a aquellos p oblemas que han ido apa eciendo. T as es e p oces, se p esen an de
o ma esumida las p incipales ca ac e ís icas que se conside an in e esan es:
• La mig ación a CUDA ha esul ado se , en lo que se e ie e a las unciones indi iduales de cómpu o,
ela i amen e sencilla.
• Dicha mig ación sí que ha p esen ado mayo es p oblemas a la ho a de de ini la es a egia de mig a-
ción.
• También ha esul ado se p oblemá ico analiza el algo i mo en el código implemen ado, pues o que
en ocasiones és e no e a el más e iden e ni el más óp imo.
40
Capí ulo 4. Implemen ación de la pa alelización con CUDA Sección 4.6
• Se han enido que esol e p oblemas de p og amación in e esan es en CUDA-C, ales como la u ili-
zación e icien e de los gene ado es de núme os alea o ios, la u ilización y p og amación de di e en es
ipos de educción, y la op imización en la in ocación a los ke nels.
• El mé odo de los w appe s, jun o con los iche os de cabece a pa a accede más ácilmen e a las a-
iables globales decla adas en Fo an ha esul ado e icien e. No obs an e, apo a un g ado de com-
plejidad que puede ep esen a un escalón impo an e pa a p og amado es no amilia izados en C.
• El análisis del código, jun o con la comp ensión de la pa e ísica de las ecuaciones de Lange in con
ellas implemen ada, ha pe mi ido la de ección de dos e o es de p og amación que se han co egido
en la implemen ación p opues a, así como de la p opues a e implemen ación de ella de algo i mos y
uso de unciones más e icien es que los mé odos numé icos u ilizados en el código o iginal.
• La inclusión de OpenMP en el código ya pa alelizado, pa a ob ene una acele ación aún mayo , ha
esul ado se mucho más complejo que los esul ados con él ob enidos. E iden emen e es o depen-
de del caso conc e o, pe o el g ado de complejidad, no solo en p og amación, sino ambién en la
necesidad de idea algo i mos co ec os lib es de bloqueo, hace que es a úl ima pa e no sea eco-
mendable in en a la si no se iene a una pe sona muy expe a en compu ación pa alela y dis ibuida
en el equipo. Se incluye la dis ibuida, po que el uncionamien o asínc ono de los hilos plan ea p o-
blemas alejados de la compu ación pa alela, y mucho más p opios de la dis ibuida, con su necesidad
de es udio de co ección y i eza de los algo i mos que se p opongan implemen a .
• Desde el pun o de is a cuan i a i o, la mig ación es un o al éxi o, dado que es co ec a en sus esul a-
dos, y apo a una acele ación en o no a 700 espec o al código o iginal ejecu ándose en un núcleo de
CPU. Económicamen e, si las simulaciones son muchas, implica un impo an e aho o en el iempo
de uso del clus e de p oducción u ilizado, y con ello, ambién económico.
41
Pa alelización median e GPU de la dinámica de elec ones en plasma con inado magné icamen e
(Página in encionadamen e en blanco)
42
CA P Í T U L O
5
RESULTADOS
En es e capí ulo se p esen an los esul ados ob enidos en di e en es en o nos con la ejecución del p og ama
implemen ado, o de algunas de sus e siones p e ias, si ya e a su icien e pa a saca conclusiones álidas.
Las p uebas se han ealizado en a ios en o nos de ejecución di e en es, po lo que se á in e esan e
p esen a una b e e eseña de los mismos con an elación a la p esen ación de dichos esul ados.
Finalmen e, se e ec ua á un análisis de los esul ados, que pe mi i á alo a la implemen ación, en sus
dos aspec os cuan i a i os más impo an es a alo a :
• su co ección, es o es, si p oduce los esul ados que de él se espe a,
• su e iciencia, y po lo an o, qué endimien o se ex ae de su u ilización, de o ma compa ada con
o as implemen aciones exis en es.
No obs an e, y eco dando que la pa alelización del código en conc e o u ilizado es una caso de p ueba
y demos ación, se debe alo a cuali a i amen e el p oceso de pa alelización u ilizado, en compa ación
con o as posibles al e na i as. Todo ello en is as a pode in o ma a la pa e cien í ica de los equisi os
que debe con a el pe sonal que deba acome e en el u u o es a labo , pe sonal que ac ualmen e, en su
mayo pa e, es á o mada po la p opia comunidad cien í ico eó ica del campo en cues ión, la ísica de
pa ículas.
5.1 P uebas ealizadas
Las p uebas se han ealizado en dos e apas di e en es:
• inicio de la implemen ación, pa a la op imización del amaño de la malla y es ima ya desde las p i-
me as e apas del abajo la acele ación mínima ob enible,
• con las implemen aciones inales e minadas de las dos e siones del código, la pu amen e MPI con
CUDA, y la que se añade OpenMP pa a desliga las ope aciones compu acionales de los ke nels de las
de comunicación y esc i u a en disco.
43
Pa alelización median e GPU de la dinámica de elec ones en plasma con inado magné icamen e
A con inuación se de allan ambas e apas, y las azones y obje i os de las mismas:
5.1.1 P ime a e apa: op imización del ke nel p incipal según los pa áme os p opios de su
in ocación
En la p ime a e apa el abajo se ocalizó en comp oba si el p oyec o e a iable, o mejo dicho, si el código
inicialmen e escogido e a pa alelizable con CUDA y suscep ible de ene una buena acele ación. Pa a ello
se iden i icó el mínimo ozo de código que e a esponsable de una g an p opo ción del iempo o al de
ejecución. En la Figu a 5.1 se ep esen a g á icamen e el diag ama de llamadas ob enido con el p o iling
del p og ama o iginal. En él se de ec ó que la sub u ina ad ance, jun o con aquellas a las cuáles és a llama-
ba ( hs_coe s,phi_and_psi, hs_ion yge _gaussian_noise) e a la consumido a del 85% del iempo de
ejecución, al cual hay que añadi p ác icamen e o o 13% po la pa e co espondien e de las sub u inas
es á icas de biblio eca hpso y sob e odo de an2, que son p incipalmen e u ilizadas po las sub u inas
dependien es de ad ance.
84.54%
999000×
50.91%
1998000×
18.17%
1998000×
10.00%
1998000×
85.45%
1×
39.09%
1998000×
MAIN__
85.45%
(0.91%)
1×
ad ance_
84.54%
(5.45%)
999000×
hs_coe s_
50.91%
(11.82%)
1998000×
ge _gaussian_noise_
18.18%
(18.18%)
1999000×
hs_ion_
10.00%
(10.00%)
1998000×
main
85.45%
(0.00%)
phi_and_psi_
39.09%
(39.09%)
1998000×
an2_
13.64%
(13.64%)
hpso 2_
0.91%
(0.91%)
Figu a 5.1: Diag ama de llamadas del p og ama o iginal ob enido del pe ilado
Es po ello que la p ime a e apa de implemen ación consis ió en pa aleliza median e ke nels de CUDA
la sub u ina ad ance y odas aquellas que son llamadas po és a. La ejecución del código p elimina así
ob enido mos ó que e ec i amen e es a pa e del código e a la que más a ec aba al iempo de ejecución, al
ob ene se ya un speedup en o no a 30–50, según el en o no de ejecución.
T as op imiza dicho código, se lanzó una p ueba de op imización de los pa áme os de llamada a los
44
Capí ulo 5. Resul ados 5.1. P uebas ealizadas
ke nels. Adicionalmen e a los ípicos pa áme os de en ada/salida de oda unción C/C++, los ke nels de
CUDA se lanzan indicando en e dos y cua o pa áme os más, que se incluyen en la llamada con una no-
ación especial que p ecisamen e ca ac e iza su código de llamada:
Ke nel_Name<<< G idSize, BlockSize, SMEMSize, S eam >>> (a gumen s,....);
Los alo es ele an es pa a nues o caso son BlockSize yG idSize, que de inen espec i amen e la
can idad de bloques y cómo és os se es uc u an al lanza la ejecución del ke nel en la GPU. Aunque es os
pa áme os son de un ipo especial de ec o de es dimensiones (x,y,z) de inido po el p opio CUDA, en
nues o código no es necesa ia al complejidad y se u iliza á únicamen e las dimensiones xeyen el del
amaño del bloque y xen el amaño de la malla.
La o ma en que se in ocan los ke nels en la GPU es impo an e po las siguien e azones:
• el núme o de bloques jun o con el amaño de cada bloque de e mina á el núme o de ejecuciones
indi iduales que se ealiza á del código. Debe se el núme o su icien e pa a que acoja, en nues o
caso, odas y cada una de las pa ículas a simula , pues o que cada hilo de ejecución se enca ga á de
una de ellas en exclusi a,
• el núme o de bloques (G idSize) iene que se su icien emen e ele ado como pa a pe mi i la máxi-
ma u ilización de los mul ip ocesado es de la a je a g á ica,
• el amaño del bloque (BlockSize) de e mina á un ac o muy impo an e pa a la e iciencia de la eje-
cución pa alela en la a je a g á ica, que es el g ado de ocupación de los egis os, y con ello, el g ado
de pa alelismo solapado exis en e en la ejecución. Téngase en cuen a que hay mucho cálculo de doble
p ecisión, po lo que las unidades de coma lo an e es a án cons an emen e en u ilización, y con iene
u iliza el iempo en que ese wa p es á inac i o en espe a del esul ado, en o os cálculos u ilizando
egis os y o as unidades lógicas del co e.
La p ueba consis e en a ia es os pa áme os, eniendo siemp e en cuen a que exis e un lími e máximo
según la a qui ec u a de núme o de hilos que pueden ejecu a se concu en emen e en un bloque. Pa a ello,
se a ían las dimensiones xeyde BlockSize, cambiándose el alo de G idSize pa a que se cumpla que
se lancen los mínimos bloques necesa ios pa a que cada i e ación (pa ícula) sea ejecu ada una y al menos
una ez po un único hilo.
Es as p ebas se ealizan en di e sos en o nos educidos a una única máquina, dado que en es e caso, el
esul ado no depende de la masi idad del cómpu o, sino de las ca ac e ís icas ha dwa e de la a je a g á ica
u ilizada, es udiando pa a ello es di e en es gene aciones de a qui ec u a CUDA:Fe mi,Keple y Maxwell
(p ime a gene ación).
5.1.2 Segunda e apa: medición de p es aciones de las e siones inales en un en o no HPC
eal
Una ez ob enidas las dimensiones óp imas pa a el lanzamien o del p incipal ke nel, el abajo se cen a en
pa aleliza el es o de unciones que es án den o del bucle p incipal del p og ama. De es a o ma se ob iene
un p og ama inal que ealiza p ác icamen e odos los cálculos sob e cada pa ícula u ilizando CUDA. Es o
pe mi e e i a aspasos con inuos de memo ia en e la CPU y la GPU en cada i e ación empo al. Sólo
se ealizan aquellas ans e encias de memo ia necesa ias, siemp e de GPU aCPU, pa a en ia los da os
mínimos necesa ios pa a que la CPU pueda gua da los da os es adís icos y de p og eso de la simulación en
disco (o p esen a los po consola).
45
Pa alelización median e GPU de la dinámica de elec ones en plasma con inado magné icamen e
También se ob end án conclusiones in e esan es sob e aspec os inicialmen e no plani icados, como
po ejemplo, in luencia del lanzamien o de un núme o no di isible po 2 del amaño de los bloques, de ec-
ción de posibles p oblemas con la u ilización de OpenMPI con In iniBand.
Las p uebas se ealizan en el en o no de ejecución de MinoTau o. Se u iliza un núme o a iable de
nodos, así como un núme o a iable de GPU. También se a ía el núme o de GPU po nodo que se u iliza
en cada p ueba, pa a e si la mayo localidad de los p ocesos en menos nodos inc emen a la e iciencia
de la ejecución de la simulación. Se seleccionan di e en es amaños de ca ga, a iando an o el núme o de
i e aciones empo ales, como el núme o de pa ículas que son conside adas en cada i e ación. También se
cambia el ipo de simulación (con gene ación o no de esul ados es adís icos in e medios, con ue e ca ga
de in e cambio de mensajes y esc i u a en disco). Y inalmen e se u ilizan es p og amas: el código o iginal
en Fo an+MPI; la nue a implemen ación sus i uyendo la pa e compu acional con CUDA, y algo de C
pa a acili a la in ocación a la API; y la que mejo a és a úl ima con la adición de OpenMP pa a desacopla
el cómpu o de la comunicación, y así solapa lo más posibles es as dos ac i idades.
Todas es as p uebas se hacen de una o ma o ogonal (o ogonalidad no comple a, pe o sí su icien e
pa a ex ae conclusiones adecuadas). De es a o ma se puede es udia la escalabilidad del p og ama bajo
di e en es pun os de is a: espacial, empo al y localidad, así como e alua si la inclusión de CUDA p ime o
y de OpenMP después compensan espec o de su espec i o iempo de desa ollo.
A con inuación se p ocede a desc ibi , p esen a esul ados, analiza los esul ados, y ob ene conclu-
siones sob e cada una de las p uebas ealizadas.
5.3.2.1 Ca ac e ización del compo amien o del p og ama o iginal
Pa a pode e alua la nue a implemen ación, se necesi a hace lo po compa ación con el código o iginal de
pa ida. En es a p ueba se i á pa a ca ac e iza el compo amien o del p og ama o iginal, ya que la nue a
implemen ación debe á mejo a los aspec os más débiles del o iginal, sin que los aspec os ue es de és e
su an me ma. La ca ac e ización consis i á en analiza su escalabilidad espacial y empo al.
B e e desc ipción de las p uebas
Consis e en la ejecución del código o iginal en el en o no de MinoTau o median e las siguien es p ue-
bas:
1. Con una ca ga pequeña cons an e (10.000 i e aciones empo ales de 20.000 pa ículas), a ia el nú-
me o de p ocesos que se ejecu an en un único nodo. Con es o se comp oba á la escalabilidad en un
en o no pu o de memo ia compa ida.
2. Con la misma ca ga pequeña cons an e an e io , ejecu a siemp e con 12 p ocesos, pe o con un nú-
me o a iable de nodos, a iando po lo an o el núme o de p ocesos po nodo. Así se pod á compa a
la elocidad de in e comunicación en memo ia compa ida con la exis en e en e di e en es nodos
(memo ia dis ibuida).
3. Con una ca ga g ande cons an e (500.000 i e aciones empo ales de 200.000 pa ículas), a ia el nú-
me o de nodos, y po lo an o de p ocesos, haciendo siemp e que cada nodo abaje al 100% de su
capacidad, es o es, con 2x6 =12 p ocesos po nodo. La idea es comp oba la escalabilidad del p o-
g ama en un en o no mix o de memo ia compa ida y dis ibuida a g an escala.
Los amaños son escogidos con dos ideas:
52
Capí ulo 5. Resul ados 5.3. Ejecución de las p uebas
• La ca ga pequeña es pa a que las ejecuciones no sean excesi amen e la gas, sob e odo cuando se
ejecu an en un único nodo.
• La ca ga mayo es á elacionada con la memo ia máxima que una única GPU del clus e puede so-
po a , y el núme o de i e aciones es uno ya su icien emen e ele ado como pa a que el enómeno del
pla eau (mese a) en la o mación de los elec ones ugi i os sea cla o, se ea cla amen e es abilizado,
en es ado es aciona io.
Resul ados ob enidos
Las p uebas 1 y 2 se ealizan en un único nodo, pa a e la escalabilidad en memo ia compa ida. En la
Tabla 5.4 se mues an los esul ados ob enidos.
P ocesos Nodos P ocesos Tiempo de Acele ación E iciencia
po nodo ejecución
1 1 1 2045,806 s 1,000 1,000
2 1 2 1021,929 s 2,002 1,001
3 1 3 683,256 s 2,994 0,998
4 1 4 511,999 s 3,996 0,999
6 1 6 343,132 s 5,962 0,994
9 1 9 228,449 s 8,955 0,995
12 1 12 170,748 s 11,981 0,998
12 2 6 171,560 s 11,925 0,994
12 3 4 173,361 s 11,801 0,983
12 4 3 171,696 s 11,915 0,993
12 6 2 172,575 s 11,855 0,988
12 12 1 170,895 s 11,971 0,998
Tabla 5.4: Acele ación y e iciencia del código o iginal de CPU (memo ia compa ida y dis ibuida)
En la G á ica 5.2, en ep esen ación doble loga í mica, se ep esen an los da os ob enidos de la P ueba
3, con g an can idad de p ocesos y una ca ga g ande. Se obse a la disminución del iempo de ejecución
con o me se inc emen a el núme o de nodos u ilizados en la compu acion de o ma muy p opo cional al
núme o de p ocesos pa icipan es.
Fenómenos obse ados
En la p uebas 1, sob e un único nodo, es o es, sólo con memo ia compa ida, al como se e en la Ta-
bla 5.4 en las ilas somb eadas de ama illo, la escalabilidad es p ác icamen e lineal en odo el in e alo. Lo
mismo es cie o pa a cuando se cambia p og esi amen e a memo ia dis ibuida ( ilas somb eadas de azul),
donde igualmen e la e iciencia es p ác icamen e la unidad en odos los casos, nunca bajando del 98%.
En la p ueba 3, mezcla de memo ia compa ida y dis ibuida, Figu as 5.2 y 5.3, se obse a que la línea es
casi ec a, con una pendien e de p ác icamen e la unidad, lo que adelan a que la acele ación se á bas an e
lineal. Ese hecho se comp ueba en la G á ica 5.3 que isualiza que an o la acele ación como la e iciencia se
ap oximan a la idealidad (e iciencia muy ce cana a 1 incluso con 64 nodos, que son 768 p ocesos, y la línea
muy coinciden e con la ideal).
Aún así, con 64 nodos (768 p ocesos MPI) la e iciencia sigue siendo muy al a, p ác icamen e del 95%.
53
Pa alelización median e GPU de la dinámica de elec ones en plasma con inado magné icamen e
1; 66988
4; 16910
16; 4382
32; 2142 64; 1105
1
10
100
1000
10000
100000
1 10 100
Núme o de nodos (cada nodo ejecu a 12 p ocesos en sendos núcleos)
Tiempo (s)
Tiempo ejecución o al
Figu a 5.2: Escalabilidad empo al del código o iginal
de CPU (500.000 pa ículas y 200.000 i e aciones)
16; 15.287
32; 31.276
64; 60.615
4; 3.962
1; 1.000
0.977
0.947
0.990
1.000
0.955
0
10
20
30
40
50
60
70
0 8 16 24 32 40 48 56 64 72
Núme o de nodos (cada nodo ejecu a 12 p ocesos en sendos núcleos)
Acele ación (-)
0.880
0.900
0.920
0.940
0.960
0.980
1.000
1.020
E iciencia (-)
Acele ación Escalabilidad lineal pe ec a E iciencia
Figu a 5.3: Acele ación y e iciencia del código o iginal de
CPU (500.000 pa ículas y 200.000 i e aciones)
Conclusiones de las p uebas
A aíz de es as es p uebas, se ob ienen las siguien es conclusiones espec o al p og ama o iginal en
Fo an pa alelizado con MPI ejecu ándose sólo en CPU y ambién sob e el en o no de ejecución de Mino-
Tau o.
• El p og ama o iginal escala muy bien en memo ia compa ida, pe o al se an len o, no es su icien e
pa a simulaciones que pe mi an ex ae conclusiones ísicas in e esan es.
• El p og ama o iginal escala muy bien en un clus e HPC, lo que has a aho a ha pe mi ido ealiza
simulaciones su icien e pa a ex ae conclusiones.
• La ed de comunicaciones del clus e MinoTau o es muy ápida. No hay di e encia sus ancial en e el
uso de memo ia compa ida y la memo ia dis ibuida.
No obs an e, se obse a que pa a pode alcanza amaños de simulación in e esan es, se necesi ang an-
des ecu sos compu acionales du an e un iempo nada desp eciable. Como se e á, la pa alelización con
CUDA pe mi i á educi d ás icamen e es a elación en e iempo necesa io y ecu sos ha dwa e u ilizados,
lo que implica á o un impo an e aho o de explo ación, y la posibilidad de lanza simulaciones mucho más
g andes que pe mi an ob ene esul ados más conclusi os, o disminui la can idad de ap oximaciones ea-
lizadas pa a alcanza un conjun o de ecuaciones más complicadas de compu a , pe o más ieles espec o
del compo amien o espe ado del plasma de pa ículas simulado.
5.3.2.2 Ca ac e ización básica de la implemen ación consis en e en la pa alelización con CUDA
A con inuación se a a p ocede a es udia el compo amien o de la e sión inal del p og ama en el que,
basándose en el código o iginal en Fo an+MPI ejecu able en CPU, se ealiza una pa alelización de oda
la pa e de compu ación numé ica y del cálculo de las es adís icas in e medias median e CUDA. De es a
o ma, Fo an queda sólo como sopo e básico pa a la lec u a y esc i u a de iche os y la in ocación a la
lib e ía MPI pa a el in e cambio de da os en e los di e en es p ocesos, así como ambién del lujo de con ol
básico del p og ama, incluyendo la ges ión de las i e aciones empo ales, y de cuándo co esponde ealiza
las es adís icas.
La implemen ación ha sido al que an sólo es necesa ia la ans e encia de los da os de elocidades de
las pa ículas al p incipio y al inal del p og ama. Du an e odas las i e aciones empo ales, la ans e encia
de da os se ealiza únicamen e de la GPU a la CPU solamen e en aquellas i e aciones en las que hay que
54
Capí ulo 5. Resul ados 5.3. Ejecución de las p uebas
ecopila y gua da en disco las es adís icas in e medias solici adas, y sólo de los mínimos da os necesa ios.
De esa o ma se ha conseguido disminui mucho la ans e encia de memo ia en e la GPU y la CPU, lo
que pe mi e inc emen a el po cen aje de código que el p og ama es á ealizando cómpu os, y po lo an o,
po la Ley de Amdahl, pe mi i á un mucho mejo ap o echamien o del pode de la pa alelización, como se
obse a á a a és de los esul ados que a con inuación se p esen an y discu en.
Al igual que en la sección an e io , p ime o se de alla án las p uebas ealizadas, después se p esen a án
los da os cuan i a i os esumidos ob enidos de dichas p uebas, que pe mi i án obse a las p incipales
ca ac e ís icas de la ejecución, y con ello, ca ac e iza la implemen ación, a pa i de lo cual se ex ae án
conclusiones sob e ella.
5.3.2.2.1 P ueba de co ección Du an e odo el p oceso de implemen ación se ha ido comp obando
que los esul ados de cada pa e que se implemen aba no cambiaban los esul ados in e medios es adís i-
cos que gene a el p og ama. En ealidad, los mismos esul ados no pueden gene a se, dado que se cambió
el gene ado de núme os alea o ios. Sin emba go, o zando a que unos pocos núme os sean los mismos se
comp obó que las elocidades y su clasi icación en con enedo es ue an iguales a los del código o iginal.
De hecho, du an e es a e isión se localiza on a ios posibles bugs en el código o iginal que ue on pues os
en conocimien o de sus esponsables.
A pa i de ese momen o, los núme os gene ados alea o iamen e se ija on pa a la GPU has a la e sión
inal, y aunque al p ocesa con di e en e núme o de GPU esos alo es uel en a cambia , sí que se obse a
que la dis ibución de los alo es en cada columna en los iche os gene ada es es adís icamen e simila a
los del código o iginal.
Además, isualizando los iche os .silo con VisI , se obse a que los mapas de elocidades y su dis i-
bución son simila es a los que se mues an en [4].
Es po odo ello que se conside a que las implemen aciones p esen adas son co ec as en cuan o a la
idelidad de la esolución de las ecuaciones ísicas que se usan pa a simula el plasma con inado magné i-
camen e.
5.3.2.2.2 Acele ación y e iciencia espec o del código en CPU
B e e desc ipción de las p ueba
La p ueba consis e en ejecu a la misma ca ga que se u ilizó en la p ueba de la ca ac e ización de la CPU,
cuyos da os se han mos ado g á icamen e en la Figu as 5.2 y 5.3, es o es, 200.000 i e aciones empo ales
sob e 500.000 pa ículas. Se ealizan a ias simulaciones a iando dos pa áme os:
• El núme o de p ocesos, con cada p oceso u ilizando una GPU. Se a ía desde 1 nodo con 1 GPU (caso
base) has a 128 p ocesos, u ilizando 128 GPU.
• El núme o de GPU que se u ilizan en cada nodo. Las mismas p uebas se ealiza án u ilizando una
GPU po nodo, o dos.
Es o úl imo pe mi i á es ablece si hay alguna di e encia impo an e en e la ejecución den o de un
mismo nodo o con un mayo núme o de nodos, y po lo an o, con una mayo u ilización de la ed de
in e conexión.
Resul ados ob enidos
55
Pa alelización median e GPU de la dinámica de elec ones en plasma con inado magné icamen e
En la Tabla 5.5 se mues an los da os de es a p ueba. Los expe imen os se han lanzado po duplicado,
siendo muy coinciden es en odos los casos pa ejos, po lo que en la abla se mues a el alo p omedio
medido.
P ocesos Nodos GPU
nodo
Tiempo de ejecución Acele ación E iciencia Acele ación Acele ación
To al GPU I/O MPI O os GPU/CPU ela i izada
1 1 1 1181,871 1177,111 4,559 0,057 0,144 1,000 1,000 680 680
2 2 1 600,646 597,715 2,596 0,386 −0,051 1,968 0,984 1338 669
4 4 1 317,959 315,880 1,631 0,525 −0,077 3,717 0,929 2528 632
8 8 1 167,233 165,699 1,141 0,515 −0,122 7,067 0,883 4807 601
16 16 1 93,997 92,619 0,901 0,583 −0,106 12,573 0,786 8552 534
32 32 1 55,610 54,437 0,792 0,565 −0,184 21,253 0,664 14455 452
64 64 1 44,437 38,298 0,716 5,525 −0,101 26,597 0,416 18090 283
2 1 2 601,306 598,022 2,780 0,512 −0,007 1,966 0,983 1337 668
4 2 2 317,888 315,954 1,625 0,370 −0,060 3,718 0,929 2529 632
8 4 2 167,683 166,181 1,151 0,431 −0,079 7,048 0,881 4794 599
16 8 2 93,997 92,619 0,901 0,583 −0,106 12,573 0,786 8552 534
32 16 2 55,610 54,437 0,792 0,565 −0,184 21,253 0,664 14455 452
64 32 2 44,437 38,298 0,716 5,525 −0,101 26,597 0,416 18090 283
128 64 2 26,550 25,318 0,656 1,086 −0,509 44,515 0,348 30277 237
Tabla 5.5: Acele ación y e iciencia de la implemen ación Fo an+MPI+CUDA con misma ca ga que Tabla 5.4
Pa a el cálculo de la acele ación sob e la CPU, y dado que el código o iginal escala linealmen e de o ma
pe ec a, se ha omado el iempo o al de ejecución en un nodo comple o, co igiéndose el hecho de que
ese iempo se co esponde con 12 p ocesos.
Es os da os se isualizan en las G á icas 5.4.
0
5000
10000
15000
20000
25000
30000
35000
40000
0 16 32 48 64 80 96 112 128
Núme o de p ocesos (gpu)
Acele ación espec o 1 CPU (-)
0
100
200
300
400
500
600
700
800
Acele ación ela i izada (-)
Acele ación 2GPU/nodo espec o CPU Acele ación 1GPU/nodo espec o CPU
Acele ación 2GPU/nodo ela i izada Acele ación 1GPU/nodo ela i izada
(a) Compa ación con el código o iginal en CPU
0
20
40
60
80
100
120
140
0 16 32 48 64 80 96 112 128
Núme o de p ocesos (gpu)
Acele ación en e GPU (-)
0.0
0.2
0.4
0.6
0.8
1.0
1.2
1.4
E iciencia (-)
Acel. 2GPU/n CPU Acel. 1GPU/n sob e CPU Escalabilidad lineal pe ec a
Acel. 2GPU/n ela . Acel. 1GPU/n ela . E iciencia unidad
(b) Compe ación en e las p opias e siones en GPU
Figu a 5.4: Acele ación y e iciencia de implemen ación Fo an+MPI+CUDA con misma ca ga que Tabla 5.4
Fenómenos obse ados
En la Tabla 5.5 se obse an los siguien es enómenos:
• La acele ación de una única GPU en e a un único núcleo de CPU alcanza el ele ado alo de 680. Es o
quie e deci que una única GPU ealiza el mismo abajo p ác icamen e que 32 nodos bip ocesado
como los exis en es en MinoTau o.
56
Capí ulo 5. Resul ados 5.3. Ejecución de las p uebas
• Con o me se u ilizan más GPU la acele ación inc emen a, sin no a se que llegue un momen o de
desacele ación.
• Con o me se u ilizan más GPU la acele ación ela i a dec emen a. Es o es, añadi el doble de nodos
con GPU al mismo abajo no disminuye a la mi ad el iempo global de ejecución. Es o es, la e iciencia
se obse a que baja, has a llega a un 35% al usa 128 nodos. Es e enómeno es el espe able, dado
que el man ene se cons an e abajo o al, al inc emen a se el núme o de GPU, disminuye su ca ga
indi idual, po lo que en gene al, al disminui la ca ga compu acional po nodo, es espe able cie o
dec emen o de p es aciones. En odo caso, en la p ác ica, es una si uación que no suele da se, pues o
que el lanzamien o se suele ya ealiza sob e los mínimos p ocesos necesa ios pa a e i a el cos e de
comunicaciones y ap o echa la localidad de la ca ga.
• Al igual que en p uebas an e io es, la misma ca ga epa ida en e el doble de nodos que abajan con
la mi ad de sus ecu sos (sólo 1 p ocesado CPU y sólo 1 a je a g á ica) iene p ác icamen e el mismo
iempo de ejecución que si se ejecu an de o ma más concen ada en la mi ad de nodos a ope de
capacidad (2 p ocesado es CPU con 2 GPU).
• So p enden emen e, cuando se u ilizan 64 nodos en MinoTau o, en odas las ejecuciones ealizadas
en es a p ueba, el iempo pa cial empleado po la aplicación en comunicaciones MPI se inc emen a
de mane a súbi a de 0,5 segundos a 5,5 segundos. Cuando se u ilizan 128 nodos, uel e a baja a un
alo jus i icable en e 0,5 y 1,0 segundos.
• Los iempos pa ciales de esc i u a (I/O) dec emen an con o me aumen a el núme o de nodos. Es o
es así po las ca ac e ís icas del sis ema de iche os dis ibuido GPFS que usa MinoTau o.
Conclusiones de las p uebas
De las obse aciones an e io es se concluye que:
• La implemen ación en GPU del mé odo ap oxima i o de Lange in es muy e icien e compa ada con
la o iginal en CPU+MPI, con una acele ación de 680.
• Es a p ime a implemen ación con CUDA no escala bien cuando el núme o de GPU inc emen a más
allá de 16, aunque sigue acele ándose el cómpu o. Es e hecho es el que impulsa la siguien e e sión
añadiendo OpenMP pa a desacopla más el cálculo de la comunicación y la esc i u a en disco.
• Se con i ma que la ed de in e conexión MinoTau o es excelen e. No obs an e, hay algunas combina-
ciones de núme o de nodos, quizá ligada a la opología esul an e y p obablemen e ambién a algún
p oblema en e OpenMPI eIn iniBand, que hace que el iempo de comunicación po MPI se dispa e,
con la consiguien e pé dida de endimien o global.
5.3.2.3 Ca ac e ización básica de la implemen ación con CUDA yOpenMP
Consis e en las mismas p uebas y me odología que en el an e io apa ado 5.3.2.2.
Los esul ados son muy simila es a la e sión an e io , sólo que un 3–5% más ápidos, según la ca ga. La
acele ación máxima ob enida en es e caso es de 695 sob e el código o iginal en CPU. Po mo de la b e edad,
se omi e la abla y las g á icas de esul ados, al no apo a mayo in o mación, y se edundan es con las de
la p ime a implemen ación po su semejanza.
57
Pa alelización median e GPU de la dinámica de elec ones en plasma con inado magné icamen e
5.3.2.4 P uebas masi as de escalabilidad de las implemen aciones con CUDA
T as obse a el uncionamien o básico de la nue a implemen ación, y siendo és a co ec a y ob eniendo
esul ados de acele ación muy impo an es espec o al código o iginal en CPU, se p ocede a ealiza a ias
p uebas masi as a ni el de p oducción de los dos códigos p esen ados, al que sólo se le ha inco po ado
CUDA ( e e enciada como p og ama o e sión 24, con Fo an+MPI+CUDA) y al que añade a la an e io
OpenMP pa a ges iona dos hilos en cada p oceso, uno enca gado de la compu ación numé ica en la GPU
p incipalmen e y o o esponsable de las comunicaciones y la esc i u a en disco de los esul ados ( e e en-
ciada como 27).
B e e desc ipción de las p uebas
Las p uebas se ealizan en el en o no de ejecución de MinoTau o. Se ealizan di e en es lanzamien os
a iando la ca ga, pa a lo cual básicamen e se man iene cons an e el núme o de i e aciones empo ales,
ijándolas en 200.000 i e aciones (dado que llega un momen o en que se alcanza el es ado es aciona io y no
iene sen ido ísico alguno con inua la simulación), y a ia el núme o de pa ículas, desde muy pocas a
muchas.
Es impo an e indica que exis e un lími e pa a el núme o de pa ículas que se pueden lanza en una
única GPU. La a je a g á ica NVIDIA M2090, que dispone de 6GB de memo ia RAM, y con la ac ual imple-
men ación, sólo pe mi e un máximo de unas 825.000 pa ículas. Pa a abaja con un poco de ma gen, se
escoge lanza simulaciones con 500.000 u 800.000 pa ículas po cada GPU.
P esen an las siguien es ca ac e ís icas, lanzadas de o ma o ogonal en e odas ellas:
• Ca ga de en e 1 millón y 50 millones de pa ículas, siemp e con 200.000 i e aciones empo ales.
• Se a ía el núme o de GPU, desde el mínimo núme o posible po la capacidad en memo ia de las
a je as g á icas, que coincide con unas 825.000 pa ículas/GPU, has a el máximo disponible en el
clus e po polí ica de u ilización, que es de un máximo de 128 GPU.
• Se p ueban las dos e siones 24 (con CUDA) y 27 (con CUDA más OpenMP).
Es as p uebas se componen de o ma o ogonal, ba iendo odas las posibilidades combina i as, pe-
o po mo de la b e edad, sólo se mos a án las más ele an es, sob e odo eniendo en cuen a que se
comp ueba que alguna de las a iables inicialmen e p e is a no iene en la p ác ica, en es e en o no de
ejecución, ninguna in luencia es adís ica.
5.3.2.4.1 Resul ados ob enidos
Una impo an e obse ación as las p uebas, y conco dan e con lo is o con an e io idad, es que da
p ác icamen e lo mismo lanza Xp ocesos en Xnodos (u ilizando sólo 1 GPU po nodo), que lanza esos
mismos Xp ocesos en X
2nodos (u ilizando 2 GPU po nodo). Es po ello que en adelan e sólo se mos a án
los da os co espondien es a la u ilización de 2 GPU po nodo, excep o en el caso de las p uebas con 128
nodos, que po polí ica del clus e , sólo podían se lanzadas en 64 nodos.
En las Tablas 5.6 y 5.7 se mues an los esul ados de los iempos de ejecución de las di e en es p uebas.
Las p uebas se ealizan po duplicado, epi iéndose si se obse a algún alo ex año, que gene almen e
se p esen a como un alo ex añamen e al o en el iempo pa cial de las comunicaciones. En las ablas se
mues an el alo p omedio de las ejecuciones ealizadas, eliminando los alo es ex emos ex años, que
suelen se en o no al 10–15% de las ejecuciones, especialmen e las que se ejecu an con mayo núme o de
GPU() o nodos.
58
Capí ulo 5. Resul ados 5.3. Ejecución de las p uebas
P omedio de Tiempo
Pa ículas
P ocesos
Pa e
1,000,000
2,000,000
4,000,000
8,000,000
16,000,000
32,000,000
50,000,000
2 GPU 1177.366
I/O 4.628
MPI 0.570
O os 0.024
To al
1182.587
4 GPU 597.950 1177.426
I/O
2.663
4.643
MPI
0.364
0.397
O os -0.065 -0.072
To al
600.912
1182.394
8 GPU 315.947 597.928 1177.343
I/O 1.621 2.784 4.596
MPI 0.550 0.488 0.802
O os -0.091 -0.087 -0.006
To al
318.027
601.112
1182.736
16 GPU 165.991 316.038 597.802 1177.352
I/O 1.126 1.621 2.618 4.636
MPI 0.447 0.503 0.460 0.470
O os -0.141 -0.089 -0.105 -0.076
To al
167.422
318.072
600.775
1182.382
32 GPU 92.590 166.030 315.896 597.833 1177.577
I/O 0.848 1.133 1.634 2.621 4.598
MPI 0.751 0.536 0.557 0.629 0.570
O os -0.195 -0.149 -0.165 -0.149 -0.125
To al
93.994
167.550
317.922
600.929
1182.620
64 GPU 54.031 92.574 166.073 315.856 597.692 1177.630 1861.650
I/O 0.763 0.906 1.139 1.633 2.619 4.569 6.751
MPI 0.773 0.889 0.719 1.238 9.418 0.716 8.898
O os -0.299 -0.467 -0.223 -0.291 -0.253 -0.243 -0.169
To al
55.267
93.902
167.707
318.436
609.475
1182.672
1877.130
128 GPU 54.140 92.571 166.113 315.868 597.822 954.424
I/O 0.788 0.932 1.209 1.660 2.627 3.681
MPI 11.897 23.777 49.865 101.112 204.925 355.542
O os -0.588 -0.535 -0.618 -0.691 -0.734 -0.515
To al
66.237
116.745
216.569
417.949
804.639
1313.133
Tabla 5.6: Tiempos de ejecución de las p uebas de p oducción pa a la e sión 24 (CUDA+MPI)
Pa a pode obse a mejo el compo amien o, pa a cada una de las implemen aciones y ipo de simu-
lación, se p esen an ambién las siguien es g á icas:
Figu a 5.5: Tiempos de ejecución en unción del núme o de GPU, pa a cada una de las ca gas (núme o de
pa ículas), en escala doble loga í mica. Pe mi i á isualiza cómo escala el p og ama, pues o que lo
ideal se ía ob ene una ec a de pendien e la unidad.
Figu a 5.6: Tiempos de ejecución en unción del núme o de pa ículas de la ca ga, según el núme o de
GPU u ilizado.
Figu a 5.7: Tiempos pa ciales de la pa e de comunicaciones MPI en unción del núme o de GPU y del
núme o de pa ículas simuladas. Pe mi e comp oba si la pé dida de escalabilidad se puede achaca
p incipalmen e a es a pa e del p og ama, po lo que es in e esan e obse a cómo a ía ambién
en e las di e en es implemen aciones y ipos de simulación ealizadas.
59
Pa alelización median e GPU de la dinámica de elec ones en plasma con inado magné icamen e
P omedio de Tiempo
Pa ículas
P ocesos
Pa e
1,000,000
2,000,000
4,000,000
8,000,000
16,000,000
32,000,000
50,000,000
2 GPU 1127.802
I/O 3.932
MPI 1.416
O os 5.009
To al
1138.158
4 GPU 570.129 1127.719
I/O
2.413
3.817
MPI
0.573
0.884
O os 5.479 5.422
To al
578.594
1137.842
8 GPU 299.392 569.961 1127.621
I/O 1.759 2.446 3.700
MPI 0.576 0.626 2.696
O os 5.536 5.528 4.884
To al
307.263
578.560
1138.901
16 GPU 155.517 299.533 570.070 1127.730
I/O 1.243 1.671 2.334 3.776
MPI 0.471 0.396 0.499 0.552
O os 5.533 5.711 5.700 5.987
To al
162.763
307.310
578.602
1137.905
32 GPU 85.486 155.836 299.634 570.313 1127.866
I/O 0.945 1.263 1.675 2.397 3.748
MPI 0.750 0.546 0.702 0.540 3.493
O os 5.460 5.475 5.831 5.578 5.938
To al
92.641
163.119
307.842
578.828
1141.045
64 GPU 50.852 86.174 156.630 300.415 571.260 1128.100
I/O 0.939 0.977 1.281 1.796 2.399 3.830
MPI 0.733 0.628 0.619 0.588 3.734 9.993
O os 4.704 5.360 5.354 5.510 5.554 5.661
To al
57.228
93.138
163.884
308.309
582.947
1147.586
128 GPU 52.316 87.130 157.008 302.132 657.749 1141.044
I/O 1.017 1.146 1.478 2.077 2.578 3.297
MPI 5.944 19.578 45.918 111.002 365.214 801.091
O os 6.205 7.089 7.253 -8.189 -241.537 -670.985
To al
65.481
114.941
211.656
407.021
784.003
1274.447
Tabla 5.7: Tiempos de ejecución de las p uebas de p oducción pa a la e sión 27 (CUDA+MPI)
Figu a 5.8 a) y b): E iciencia empo al ela i a del p og ama en unción del núme o de GPU, pa a cada
ca ga. Se ha denominado ela i a po que no se u iliza como e e encia el código o iginal Fo an
en CPU, sino que se compa a con la ejecución que u iliza menos ecu sos. En es e caso, se a a se
compa a con la ejecución en un único nodo con dos GPU, dado que la ca ga meno no puede se
ejecu ada po una única GPU po al a de memo ia.
Figu a 5.8 c) y d): E iciencia espacial ela i a del p og ama, es o es, cómo se compo an los p og amas con
el inc emen o de la ca ga, ep esen ada po el núme o de pa ículas, pues el núme o de i e aciones
se man iene cons an e en 200,000 en odas es as p uebas.
Figu a 5.9 Compa ación di ec a en e los iempos de ejecución de las dos e siones con GPU p esen adas
( 24 y 27).
Es impo an e explica po qué apa ece el alo nega i o en la pa e de compu ación “O os”, que es
60
Capí ulo 5. Resul ados 5.3. Ejecución de las p uebas
aquella que no es á con abilizada ni como de cálculo en la GPU y su ges ión, ni de ansmisiones MPI, ni
de esc i u a en disco du o (“I/O”). Apa ece sob e odo en la e sión con OpenMP, y especialmen e cuando
más p ocesos es án ejecu ando, y en las ca gas mayo es. Es o es debido a que hay dos hilos den o de cada
p oceso, y el hilo que se enca ga de la ansmisión MPI con abiliza los iempos de comunicación y ambién
la de esc i u a en disco. Po su pa e, el hilo que ejecu a los ke nels c onome a el iempo de GPU u ilizado. El
hecho de que la suma de la compu ación numé ica más la de comunicaciones y esc i u a en disco es mayo
al iempo o al de ejecución eal de la aplicación demues a que exis e asinc onía en e ambos conjun os
de ope aciones.
Así se jus i ica ambién que el iempo de ejecución global sea meno que en la e sión 24, sin OpenMP,
dado que allí es án se alizadas la compu ación, la compu ación y la esc i u a en disco, de al o ma que
cuando aumen a el amaño del p oblema, o el núme o de nodos pa icipando de la compu ación, aumen a
la can idad de da os a ansmi i y a esc ibi en disco.
5.3.2.4.2 Escalabilidad de las implemen aciones
Pa a es udia la escalabilidad de las implemen aciones p esen adas nos se i emos de las Figu as 5.5 y 5.6,
donde se mues an los esul ados ob enidos en ocando la ep esen ación a un análisis espacial o empo al,
espec i amen e.
Núme o de pa ículas en la simulación
10
100
1000
10000
1 10 100 1000
Núme o de p ocesos (gpu)
Tiempo de ejecución (s)
1,000,000 2,000,000 4,000,000 8,000,000
16,000,000 32,000,000 50,000,000
(a) Código 24 (CUDA+MPI)
Núme o de pa ículas en la simulación
10
100
1000
10000
1 10 100 1000
Núme o de p ocesos (gpu)
Tiempo de ejecución (s)
1,000,000 2,000,000 4,000,000 8,000,000
16,000,000 32,000,000 50,000,000
(b) Código 27 (CUDA+MPI+OpenMP)
Figu a 5.5: Escalabilidad espacial de las implemen aciones ealizadas
De las Tablas 5.6 y 5.7 ambién se obse a un súbi o inc emen o del iempo empleado po las comunica-
ciones con MPI cuando se llega a usa g an pa e de nodos del clus e MinoTau o. Las G á icas 5.7 mues an
mejo ese enómeno.
De odos es os da os se obse a que:
• El código con OpenMP se ejecu a en unos iempos in e io es a la e sión con sólo CUDA yMPI.
• Pa ece exis i algún p oblema con la e sión 27 con OpenMP cuando se abaja con 64 nodos (128
p ocesos) y con más de 30.000.000 de pa ículas. No se ha analizado la causa, pues el enómeno de
pé dida de escalabilidad en esas condiciones no se ep oduce en la e sión 24. Una hipó esis po-
d ía se que cuando en ese clus e se ejecu an simulaciones con la mi ad de los nodos globales de
61
Pa alelización median e GPU de la dinámica de elec ones en plasma con inado magné icamen e
de la pa alelización de o os códigos cien í icos his ó icos, se p ocede a alo a cuali a i amen e la expe-
iencia del p oceso de implemen ación, las decisiones que se han omado en dicha implemen ación y o as
al e na i as que se desca a on al inicio del abajo.
Como oda alo ación cuali a i a, és a es subje i a, po lo que a con inuación se incluye se exp esa
como opinión o mada a a és de odo el p oceso de ealización del p esen e abajo. Sin emba go, se
conside a muy in e esan e su exp esión explíci a en es a memo ia po que es la pa e quizá más in e esan e
pa a el abajo u u o, más que la me a pe ección de las implemen aciones conc e as p esen adas.
A con inuación se p esen an di e en es ca ac e ís icas que se conside an de in e és.
5.4.2.1 Facilidad de p og amación
CUDA es á basado en CyC++, y és os ya son menos in ui i os de usa que Fo an pa a los cien í icos sin
base especí ica de p og amación. CUDA ep esen a o o paso más allá en la p og amación, pues se cambia
el pa adigma de p og amación. Po ello, la pa alelización de código his ó ico en Fo an equie e:
• que una pa e del g upo de cien í icos se especialice se iamen e en p og amación pa alela,
• que la a ea de p og amación sea enca gada a un expe o ingenie o in o má ico.
Es a segunda opción se ía la p e e ible, pe o siemp e bajo el aseso amien o de algún cien í ico, pa a po-
de cla i ica las ó mulas, algo i mos, y en de ini i a, da a en ende al p og amado qué se es á haciendo.
Po la azón an e io , CUDA es un lenguaje complicado de usa , aunque exp ime a ondo las a je as
g á icas de NVIDIA, muy po en es compu acionalmen e. Es in e esan e es a a en o a o as al e na i as,
conc e amen e con el a ance de OpenMP, e sión 4, y sob e odo, de OpenACC. Ambos pe mi en el o load
(en ío de a eas de compu ación) a los acele ado es (p incipalmen e, pe o no exclusi amen e, GPU, pe o
ambién a o os como In el Xeon Phi o a je as g á icas de AMD) de una o ma más in ui i a que CUDA. En
es e úl imo imes e de año se espe a el lanzamien o de e siones ya inales de compilado es lib es, como
gcc, con sopo e pleno a es as nue as ecnologías. Se p opone es a a en os a es e hecho, y compa a la
pa alelización usando las GPU a a és de OpenMP 4.0 y OpenACC.
5.4.2.2 Necesidad de la e o mulación de los algo i mos
El g an lei mo i de Fo an es su p opio o igina io ac ónimo: FORmula TRANsla ion sys em, hecho po el
cual es an ampliamen e u ilizado en el mundo cien í ico. Pe o ambién es uno de sus p incipales p oble-
mas. Al se an sencillo ansc ibi las ó mulas, los mé odos ma emá icos y los algo i mos en ellas ex e -
namen e isualizados, es muy ácil cae en la p og amación di ec a de la ó mula, sin pensa en aspec os
impo an es desde el pun o de is a de ingenie ía del so wa e:
• ene en cuen a los cos es espaciales y empo ales a la ho a de implemen a algo i mos (po ejemplo,
clasi icación en canas as, que puede hace se con cos e 1 po pa ícula, o al O(N), siendo innecesa io
hace p e iamen e una o denación o al de los alo es, con cos e O(N·log(N)), y después eco e
o o bucle con cos e O(N)),
• implemen a e icien emen e según la a qui ec u a ha dwa e y so wa e disponible en el momen o,
(po ejemplo, es a ac ualizado en cuan o al a ance de la ecnología de la pa alelización, ales como
OpenMP,OpenACC yCUDA),
68
Capí ulo 5. Resul ados 5.4. Valo ación
• amplio conocimien o de las unciones y biblo ecas disponibles en el en o no (ejemplo, u ilización
de la unción e o , e en Fo an,CyCUDA), en luga de calcula la cada ez median e mé odos
numé icos de in eg ación ( apecio o Simpson).
• ac ualización del p og ama base a las nue as e siones de Fo an (po ejemplo, ac ualiza los p o-
g amas desde Fo an 77 o Fo an 90 a Fo an 95 (bindings con C) o incluso Fo an 2003 (in e -
ope abilidad con Cy po lo an o, más ácil abaja con CUDA, y obje os, incluso aunque sean como
me as es uc u as de da os, pa a ocul ación de a iables ac ualmen e decla adas globalmen e)
5.4.2.3 Depu ación semán ica de las implemen aciones his ó icas
Du an e el ancu so del abajo se de ec a on lo que podían se dos e o es de p og amación que pod ían
in lui de mane a muy impo an e en los esul ados que és e gene a. A la echa de hoy, el ísico esponsable
de los códigos no ha con i mado ni negado esos in o mes de e o en iados.
Los códigos his ó icos u ilizando ecnologías de pa alelización basadas en clus e s de CPU ienen cie a
limi ación en cuan o al amaño y, po lo an o, alidez, de las simulaciones que con ellos se pueden ealiza .
Ésa es la azón que undamen a es e abajo, de hecho, el es udio de iabilidad de su con e sión pa a la
u ilización de a je as g á icas de compu ación. Dado ese limi ado pode de simulación, es posible que en
los códigos his ó icos, aunque es én en cons an e e olución y e isión, pe sis an e o es de base, di íciles
de de ec a en código y ambién en simulaciones a pequeña escala, pe o que en simulaciones mayo es,
p o oquen esul ados mucho más di e gen es con la ealidad que lo azonablemen e espe ado. Es o lle a ía
a alsas conclusiones y gene ación de dudas sob e el p opio cue po eó ico cien í ico en que se basan.
Es po ello que an es de cada pa alelización, se e ise comple amen e el código o iginal, o incluso en
mucho casos, que la implemen ación se ealice desde ce o pa a e i a de aíz es e p oblema. Es o iene la
en aja de que p opo ciona ía un código mucho más adap ado a las ac uales ecnologías de p og amación
pa alela.
5.4.2.4 Selección de códigos a pa aleliza
Finalmen e, y es una ob iedad, dadas odas las di icul ades a iba des acadas, es siemp e con enien e ea-
liza un adecuado es udio de selección de qué códigos his ó icos deben se pa alelizados con GPU. La p o-
g amación de GPU pa a GPGPU es delicada, labo iosa y di ícil de depu a , pe o su ecnología (ha dwa e y
so wa e), po encial y iabilidad económica, no pa an de c ece . Aún así, no odos los p oblemas ap o e-
chan es a nue a ecnología.
Es una labo c ucial ene a algún expe o que aseso e sob e la iabilidad de una implemen ación con
CUDA u o as ecnologías eme gen es (OpenACC,OpenMP 4), y de es a o ma, di igi los es ue zos en pa-
aleliza p ime o aquellas aplicaciones más in e esan es pe o que sean iables, an o desde de el pun o de
is a ecnológico ( endimien o ob enido), como empo al (cos e económico de la implemen ación).
69
Pa alelización median e GPU de la dinámica de elec ones en plasma con inado magné icamen e
(Página in encionadamen e en blanco)
70
CA P Í T U L O
6
TRABAJO FUTURO
La pa alelización ealizada de CUDA, con y sin OpenMP, sob e un código cien í ico basado en Fo an con
MPI, ha pe mi ido comp oba que la aplicación del modelo SIMT a cie o ipo de códigos pe mi e ob ene
unas p es aciones ex ao dina ias compa a i amen e con el código uncionando sob e CPU. También ha
se ido pa a de ec a di icul ades que debe án se supe adas pa a la aplicación de es e p ocedimien o de
pa alelización a o os códigos cien í icos.
Las líneas de u u o a pa i de es e abajo se di iden en es ca ego ías:
1. Ampliación del abajo sob e las implemen aciones en CUDA p esen adas, con obje o de mejo a su
es abilidad, endimien o y aplicabilidad:
• Depu ación del p og ama, median e de ección de posibles bugs, limpieza de código y o as a-
eas básicas pa a que el código quede en un es ado de mejo man enibilidad.
• Mejo a la ubicación de los ce ojos de OMP, que pe mi an, po ejemplo, disminui la g anula i-
dad, y con ello, in en a ex ae oda ía más p es aciones basadas en un mayo solapamien o de
la compu ación con las comunicaciones y la esc i u a en disco o consola.
• Mejo a p og amá icamen e lasimplemen aciones ac uales, po ejemplo, e i ando la copia, den-
o de la GPU de los ec o es de elocidad nue os sob e los iejos, median e el sis ema de o a
el pun e o pa a ealiza dichos cambios con copia ce o, o in es igando sob e la mejo a de p es-
aciones en el uso de los gene ado es de núme os alea o ios.
• In es iga po qué azón no se pe mi en ejecuciones de simulaciones de más de 825.000 pa í-
culas po cada GPU, cuando és as pa ecen dispone de su icien e capacidad de almacenamien o
(6GB). Posiblemen e a a és de una mejo ges ión de los di e en es ipos de memo ia p esen es
en la a je a g á ica.
• Reimplemen a el código u ilizando o as ecnologías de pa alelización eme gen es que am-
bién se ap o echan de los acele ado es g á icos, pe o pe mi en ambién hace lo sob e o os ace-
le ado es, como sob e las a je as g á icas de AMD, o sob e odo, del acele ado In el Xeon Phi.
Ejemplos de es as ecnologías eme gen es son OpenMP 4 y OpenACC, de los cuales se espe a
una implemen ación inal lib e en es e úl imo imes e g acias a GNU.
71
Pa alelización median e GPU de la dinámica de elec ones en plasma con inado magné icamen e
2. Aplicación de la pa alelización a o os códigos cien í icos
• Mig a o os códigos simila es a CUDA, u o as ecnologías eme gen es, pa a ap o echa el ex-
emo pode compu acional de las GPU.
• Modi ica las ecuaciones base de Lange in ob enidas inicialmen e, a a és de la p og esi a
eliminación de algunas de las ap oximaciones e ec uadas pa a la deducción del conjun o de
ecuaciones implemen adas en el p esen e código. Es o debe ía pe mi e ob ene simulaciones
más ce canas a la ealidad.
• A pa i de es a expe iencia, y iendo que es posible, añadi complejidad al cue po eó ico inicial,
po ejemplo, median e la conside ación de la ela i idad den o del conjun o de ecuaciones,
pa a de es a o ma ace ca se más si cabe al compo amien o que end á el plasma cuando es é
ealmen e en eacción de usión con olada de o ma con inuada, bien sea en un eac o de ipo
okamak o del ipo s ella a o .
3. U ilización a ondo de la nue a capacidad de simulación en es e campo, y es udia nue as condicio-
nes, a iando los pa áme os de en ada, ealizando las opo unas mínimas a iaciones en el código
si es necesa io, de al o ma que se con ie a en una he amien a más pa a la comp ensión del com-
po amien o eal del plasma de pa ículas con inado magné icamen e.
72
CA P Í T U L O
7
CONCLUSIONES
En el p esen e T abajo Fin de Más e se ha es udiado la iabilidad y me odología pa a pode mig a códi-
go his ó ico cien í ico, gene almen e en lenguaje Fo an, al nue o pa adigma de p og amación median e
acele ado es ex e nos, conc e amen e, median e a je as g á icas de NVIDIA a a és de su ecnología p o-
pia p i a i a CUDA. Pa a ello se ha u ilizado como caso de es udio un código en Fo an ya pa alelizado
median e MPI, que pe mi e la simulación de un plasma de pa ículas a al a empe a u a con inado magné-
icamen e, que es la ísica básica en la que se basan los ac uales in en os de usión en calien e en eac o es
de ipo okamak.
Los esul ados cuan i a i os son plenamen e sa is ac o ios: se han ob enido acele aciones de has a 700
en compa ación con el código ejecu ándose en un único núcleo de CPU, odo ello, ob eniendo esul ados
co ec os en la simulación y gene ando co ec amen e los iche os in e medios es adís icos pe inen es. Es-
o ep esen a g andes en ajas e iden es: pe mi e la ejecución de simulaciones más g andes en un iempo
azonable, y disminuye el cos e de explo ación (núme o de ho as) de u ilización del clus e de compu ación
de al as p es aciones.
Asímismo, se ha edac ado una memo ia que puede se i de guía sob e los p oblemas, di icul ades, éc-
nicas, plan eamien os y decisiones que pod ían su gi du an e la ealización a g an escala de la mig ación
de código cien í ico a las nue as ecnologías de GPGPU.
A pesa de ello, la iabilidad de ex ende es e caso de es udio a o os p oyec os más ambiciosos no debe
sólo se in o mado po es a alo ación muy posi i a desde el pun o de is a cuan i a i o. Como ya se ha
indicado al inal de los Capí ulos 4 y 5, hay o os aspec os cuali a i os que sean an o o más impo an es a
la ho a de oma la decisión:
• La mig ación es écnicamen e iable y se han demos ado cómo ealiza la. No obs an e, no es i-
ial. El g ado de complejidad del código esul ado es ele ado, sob e odo po la mezcla de di e en es
lenguajes y ecnologías. Es po ello que deben conclui se se p ecisa una pe sona cona la su icien e
o mación en compu ación pa alela y en ingenie ía del so wa e pa a pode en en a se con ga an ías
y exi osamen e al e o.
• A pesa de lo an e io , es muy impo an e des aca la impo ancia que iene el signi icado ísico de las
ó mulas y algo i mos que implemen an, así como el conocimien o del enómeno ísico es udiado, y
73
Pa alelización median e GPU de la dinámica de elec ones en plasma con inado magné icamen e
con ello, los esul ados que a p io i pueden ob ene se de la simulación. Es po ello que en el p oceso
de mig ación ambién debe es a p esen e un expe o en la ma e ia cien í ica de que se a e, al obje o
de guia , comp oba y e isa que la implemen ación se ajus e a la eo ía, es o es, e ec úe una e isión
semán ica de los códigos.
• Con ela i amen e poco es ue zo, se pueden consegui esul ados no ables. Mejo a los es ambién
posible, pe o muchas eces equie e de una in e sión en iempo y ecnología más ele ado. Pe o odo
depende del caso conc e o.
• Hay un aspec o que no se ha podido analiza , y es la exis encia de compilado es especí icos p i a i os
de pago que pe mi en el uso de CUDA di ec amen e sob e un dialec o o a iación del lenguaje Fo -
an. Cabe la posibilidad de que su uso sea más sencillo que la solución p opues a, y que los equisi os
del pe sonal a ca go del p oyec o sean ambién di e en es.
• No odo código cien í ico his ó ico puede se ácilmen e pa alelizable con CUDA, o incluso puede que
sea con ap oducen e hace lo. Se equie e un buen conocimien o de CUDA y del p og ama a mig a ,
pa a pode de e mina si el nue o pa adigma de pa alelización masi a de la GPGPU es adecuado al
p oyec o en cues ión. Como ejemplos, los mé odos ecu si os deben pasa se a i e a i os. Tampoco se
ole a la p og amación dinámica, aunque es poco común en el mundo cien í ico. Los algo i mos con
g an dependencia en e da os pueden p esen a p oblemas de acceso a memo ia que disminuyan
mucho el endimien o de las GPU.
• Es po ello que es necesa ia una adecuada selección del código o algo i mo que a a se mig ado o
implemen ado con CUDA, pa a ex ae de es a ecnología odo lo que puede apo a .
74
GLOSARIO
bu e Espacio de memo ia in e media, que puede se so wa e o ha dwa e.
bug En español, simplemen e, e o , aunque a eces se aduce li e almen e como bicho, o gusano. E o ,
gene almen e su il, en el código que p o oca el compo amien o anómalo del p og ama, incluso p o-
ocando su inalización ab up a. Especialmen e pelig osos cuando sus mani es aciones son e á i-
cas, dependiendo de alguna combinación de e minada de condiciones pa a e ela se. Muy di íciles
de depu a en compu ación pa alela y dis ibuida.
cache Memo ia ápida in e media de pequeña capacidad pa a acele a el acceso a una memo ia p incipal
de g an capacidad más len a.
clus e Conjun o de o denado es in e conec ados po una ed de al as p es aciones pa a la ejecución con-
jun a de aplicaciones pa alelas.
compu ación g id En o no de ejecución HPC o mado po a ios clus e s localizados geog á icamen e en
ubicaciones muy dispe sas y adminis ados po di e en es o ganizaciones que, no obs an e, compa -
en sus ecu sos en e sí pa a log a una mayo ocupación y u ilización de sus ins alaciones, o ecien-
do una in e az de lanzamien o común. Las ejecuciones deben se plani icadas y coo dinadas, pa a
lo cual exis en ges o es de colas especializados que pueden unciona en base a c édi os.
CUDA ke nel Función cuyo código que se ejecu a en una GPU, y que po lo an o de mane a masi amen e
pa alelizada.
daemon Apicación se ido a que se inicia usualmen e en el a anque del sis ema ope a i o y que se enca -
ga de ges iona un de e minado se icio pa a el sis ema ope a i o o las aplicaciones. Aunque no mal-
men e se suele aduci al español po «demonio», en es e abajo se op a po el é mino «duende»,
é mino que pa ece más co ec o, pues demonio iene conno aciones malignas que no cabe espe a
de un se icio legí mo a ancado po el sis ema ope a i o, mien as que el é mino «duende» e oca
más al e ec o «mágico» de aquello que se ocupa de hace algo po noso os sin casi pe cibi esa ayuda.
dis upción Fenómeno b usco en un plasma en con inamien o magné ico po el cual pie de sus condi-
ciones de es abilidad y que p o oca que en muy pocos milisegundos desapa ezcan las condiciones
necesa ias pa a la usión nuclea , apagándose el eac o como consecuencia.
HPC High Pe o mance Compu ing, compu ación de al o endimien o. Consis e en la ejecución de p o-
g amas eales en en o nos masi os de p oducción do ados de la úl ima ecnología especialmen e
diseñados y ges ionados con el in de ob ene las máximas p es aciones compu acionales..
mapea Tecnicismo u ilizado pa a desc ibi la acción de e e encia un obje o o zona de memo ia desde
o a ubicación, gene almen e con el obje o de i ualiza o acili a el acceso di ec o al obje o o iginal.
75
Pa alelización median e GPU de la dinámica de elec ones en plasma con inado magné icamen e
middlewa e Pieza de so wa e que o ece se icios a o as aplicaciones más allá de los que o ece el sis ema
ope a i o, ales como pe mi i la mú ua in e acción o el in e cambio de in o mación. Es comúnmen e
u ilizado en sis emas dis ibuidos, en donde un único sis ema ope a i o no puede cen aliza y ges-
iona oda la in e comunicación. O o uso es acili a al p og amado el acceso a di e en es ecu sos
de en ada/salida, ya sean locales o emo os, y de ipo so wa e o ha dwa e.
name mangling Nomencla u a pa icula u ilizada po cada compilado pa a cada lenguaje pa a la deno-
minación de sus símbolos en los iche os obje o .o.
plasma Es ado de la ma e ia, simila al gas, en el que po el e ec o de las al ísimas empe a u as, la ma e ia
se haya comple amen e ionizada, dada la al a elocidad é mica de las pa ículas.
p o iling In es igación del compo amien o de un p og ama a a és de la in o mación ecopilada desde
el análisis dinámico del mismo. Exis en p og amas especí icos pa a ales a eas, siendo el más común
gp o , den o del so wa e lib e en Linux. NVIDIA pone a disposición den o de su Toolki , la u ilidad
n p o . Aunque el é mino inglés es á ampliamen e di undido, puede aduci se po “pe ilaje” o po
“análisis del endimien o”..
un ime Biblio eca de unciones que dan sopo e pa a la ejecución de aplicaciones que u ilicen un de e -
minado lenguaje, en nues o caso CUDA C.
speedup Acele ación. Es una mé ica de la mejo a ela i a en p es aciones del endimien o pa a la ejecu-
ción de una misma a ea. En el ámbi o de la compu ación pa alela, hace e e encia al cocien e en e
el iempo de ejecución de la a ea secuencial y el iempo de ejecución del p og ama pa alelizado.
s ella a o Disposi i o donde se con ina magné icamen e un plasma de pa ículas a al a empe a u a con
la inalidad de ob ene la usión nuclea con olada. Tiene la pa icula idad de que el campo magné-
ico es al que las ó bi as de las pa ículas con enidas iene una o ma helicolidal.
okamak Disposi i o simila al s ella a o , pe o en el que el campo magné ico con ina al plasma en una
conjun o de ó bi as de o ma o oidal.
wa p En español, u dimb e. Rep esen a la ag upación de 32 ó 64 hilos de ejecución (según la a qui ec u a
CUDA) que ienen un ámbi o de ejecución común en una a je a g á ica de NVIDIA. Compa en e-
cu sos esenciales y escasos como egis os y memo ia cache, pe o sob e odo, ienen un mismo lujo
de ejecución, de al o ma que si és e es di e gen e pa a cada hilo, los hilos que no es én en esa bi u -
cación pe manecen pa ados, y luego al e és, de al o ma que se acumulan los iempos. Es o es así
po que cada u dimb e sólo iene ac i a una ins ucción, la cual se á o no ejecu ada po el hilo que la
componga. La u dimb e es, en la indus ia ex il, el hilo longi udinal que se man ienen en ensión en
un ma co o ela, y que si e de guía y es uc u a sob e la que se en e ejen los hilos.
w appe Función en ol o io, que o ece una in e az conocida pa a accede a o a unción o secuencia de
unciones. Su uso puede es a mo i ado po di e en es causas, ales como acili a el acceso a o as
unciones, simpli icando la o ma de in oca las, o de esconde el uncionamien o in e no de un so -
wa e po emas de segu idad o de p o ección de la p opiedad in elec ual.
76
SIGLAS
API Applica ion P og amming In e ace, In e az de p og amación de aplicaciones.
ARPACK ARnoldi PACKage, Paque e de (mé odo de) A noldi.
BLAS Basic Linea Algeb a Subp og ams, Subp og amas de álgeb a lineal básica.
CPU Cen al P ocessing Uni , Unidad cen al de p ocesamien o.
CUDA Compu e Uni ied De ice A chi ec u e, A qui ec u a uni icada de disposi i os de compu ación.
FORTRAN An e io men e FORmula TRAsla ion sys em, Sis ema de aducción de ó mulas. En la ac uali-
dad ya no se in e p e a de es a mane a, se conside a una palab a p opia.
GPFS Gene al Pa allel File Sys em, Sis ema de iche os pa alelo gene al (desa ollado po IBM.
GPGPU Gene al-Pu pose compu ing on G aphics P ocessing Uni s, Compu ación de p opósi o gene al en
unidades de p ocesamien o g á ico.
GPU G aphics P ocessing Uni , Unidad de p ocesamien o g á ico.
ITER In e na ional The monuclea Expe imen al Reac o , Reac o expe imen al e monuclea in e nacio-
nal.
LAPACK Linea Algeb a PACKage, Paque e de álgeb a lineal.
Lis Lib a y o I e a i e Sol e s, Biblio eca de esol edo es i e a i os.
MPI Message Passing In e ace, In e az de in e cambio de mensajes.
OpenCL Open Compu ing Language, Lenguaje abie o de compu ación.
OpenMP Open Mul i-P ocessing, Mul ip ocesamien o abie o.
PETSc Po able, Ex ensible Toolki o Scien i ic Compu a ion, Conjun o po able y ex ensible de he a-
mien as pa a la compu ación cien í ica.
ScaLAPACK Scalable Linea Algeb a PACKage, Paque e de álge a lineal escalable.
SIMT Single Ins uc ion Mul iple Th eads, Ins ucción única, múl iples hilos. Modelo de ejecución en pa-
alelo, u ilizada po las GPU de NVIDIA con capacidad CUDA, en e o as, en la que múl iples hilos
ejecu an concu en emen e la misma ins ucción sob e di e en es da os.
SLEPc Scalable Lib a y o Eigen alue P oblem Compu a ions, Biblio eca escalable pa a compu aciones
sob e el p oblema de los alo es p opios o ca ac e ís icos.
77