Com optimitzar un simulador fent servir l’arquitectura multicore?

bsc-marenostrum-1280px
Com optimitzar un simulador fent servir l’arquitectura multicore?

Avui en dia l’arquitectura multicore és a tot arreu. Qui no té un portàtil o un mòbil amb més d’un processador? Aquesta arquitectura ofereix noves oportunitats per les aplicacions que la fan servir, ja que no només proveeix més recursos de computació sinó la capacitat de gestionar una memòria compartida per millorar el rendiment.

Avui en dia l’arquitectura multicore és a tot arreu. Qui no té un portàtil o un mòbil amb més d’un processador? Aquesta arquitectura ofereix noves oportunitats per les aplicacions que la fan servir, ja que no només proveeix més recursos de computació sinó la capacitat de gestionar una memòria compartida per millorar el rendiment.

La simulació és una eina que contribueix a la presa de decisions, permet partir d’un cas real, construir un model, sigui una representació gràfica o matemàtica del cas a estudiar, per tal de reproduir-ho en un entorn controlat i fer proves que contribueixin a la presa de decisions. Un dels paradigmes de simulació que permet aprofitar les capacitats de l’arquitectura paral·lela és la simulació paral·lela per esdeveniments discrets (de l’anglès Parallel Discrete Event Simulation, PDES), que permet enregistrar el moviment de les entitats a simular des que entren al sistema fins que el deixen. Per paral·lelitzar la simulació una solució és partir l’espai en diferents parts o processos lògics (de l’anglès Logical Processes, LP) que són distribuïdes entre els processadors. En l’àrea de la simulació social, a més, s’ha demostrat que és de molta utilitat la modelització basada en agents (de l’anglès Agent Based Modeling, ABM), que permet tractar les diferents unitats de simulació com a agents (individus, famílies) que interaccionen entre ells i amb el seu entorn i que prenen decisions que afecten el seu pas pel sistema. Aquests dos paradigmes permeten tenir una aproximació de la realitat que es vol simular.

Què hem fet a l’inLab?

A l’inLab, en col·laboració amb el BSC (Barcelona Supercomputing Center) i la Universitat de Lancaster, es va desenvolupar el simulador Yades, que permet fer simulacions de dinàmiques ABM socio-demogràfiques aprofitant la capacitat de càlcul d’entorns d’arquitectura paral·lela. Per fer la comunicació entre els processadors d’un clúster o un supercomputador, Yades fa servir l’estàndard de comunicació entre nodes MPI (Message Passing Interface). S’ha demostrat que MPI funciona bé per gestionar les comunicacions entre els diferents nodes de computació però té algunes mancances per gestionar les comunicacions dintre del mateix node on se segueix un esquema de memòria compartida.

Per aquesta raó a l’inLab s’ha posat en marxa un projecte per tal de poder dotar a Yades de les capacitats que li permeten aprofitar l’esquema de memòria que ens brinda l’arquitectura actual. En aquest projecte, es va iniciar una col·laboració amb la Universitat de Sapienza, a Roma, i emprar la seva llibreria de paral·lelització de simulacions ROOT-Sim, que permet aprofitar l’esquema de memòria compartida per gestionar les comunicacions dintre d’un mateix node, a partir de l’ús de threads i fent servir un paradigma PDES.

Ara mateix hem desenvolupat una versió de Yades que fa servir ROOT-Sim, i que ha aconseguit, no només una optimització en les comunicacions intra-node, sinó també altres millores de funcionalitats que li han donat un valor afegit al projecte. Una de les més significatives és la possibilitat de fer servir el simulador Yades en entorns seqüencials, que no consten d’arquitectura paral·lela. Aquesta possibilitat ens permet apropar-nos al nostre client final, que moltes vegades no disposa d’aquesta arquitectura paral·lela per treballar.

Altres millores que s’han aconseguit en aquest projecte han estat la disminució del temps d’execució de la nostra aplicació en relació amb la versió inicial de l’aplicació, i la possibilitat d’emprar situacions que requereixin molta mobilitat dels agents com poden ser migracions de grans quantitats de població cap a les regions veïnes, cas molt útil en el cas que es vulguin simular situacions de guerres o desastres naturals.

En la següent gràfica es pot veure una comparativa en seqüencial de la nostra aplicació en relació amb l’aplicació inicial.

Aquest projecte ha servit per donar les primeres passes i establir una línia d’investigació per la col·laboració entre dos grups de recerca de dues universitats europees que es preveu que continuï durant els mesos vinents per millorar l’eina que hem desenvolupat i dotar-la de més funcionalitats.