Performance analyse van de parallelle Lattice

advertisement
Performance analyse van de parallelle Lattice Boltzmann simulatie in Java met Ibis.
M.V. Filatov
22 juni 2005
Inleiding:
Veel wetenschappelijke berekeningen zijn vaak ingewikkeld maar vooral grootschalig[12, 13]. Er
wordt met enorme hoeveelheden data gerekend. Verschillende simulaties vragen daarom om veel
rekenkracht en snelheid. Lattice Boltzmann simulatie van de vloeistof dynamica[16] is een van zulke
applicaties. Performance van een wetenschappelijke applicatie hangt sterk af van de machine
waarop deze applicatie wordt gedraaid. Maar èèn machine is niet genoeg om wenselijke
performance te halen. Parallel computing is een mogelijke oplossing voor de performanceproblemen.
High-performance parallelle applicaties worden geoptimaliseerd voor betere performance. Het
efficiënt opdelen van een probleem in stukken (decompositie) en verdelen van deze stukken over de
beschikbare processors (mapping) is misschien het belangrijkste onderdeel van het maken van een
parallelle applicatie. De keuze voor een programmeer omgeving valt vaak op C/C++ met MPI als
communicatie interface. Traditioneel wordt C met MPI (Message Passing Interface) beschouwd als
een standaard voor het schrijven van parallelle programma’s. De meeste applicaties zijn tot nu toe
met succes gemaakt in C of C++ met MPI. Maar er zijn natuurlijk ook andere middelen beschikbaar
voor parallel computing, zoals bijvoorbeeld Java. Java wordt vaak gezien als niet efficiënt en traag
voor de wetenschappelijke berekeningen. Er wordt echter hard gewerkt aan het verbeteren van Java
voor wetenschappelijk rekenen[17]. Java-Compilers zijn in staat een efficiënte code te genereren en
met JIT(Jist-in-Time) compiler worden vaak gebruikte routines gecompileerd om performance te
verbeteren. Bovendien zijn er verschillende packages en systemen beschikbaar voor de highpeformance wetenschappelijke applicaties[1,8].Ook het object georiënteerde programmeer model
en portabiliteit maken Java een geschikte programmeeromgeving voor wetenschappelijke
applicaties. De groeiende interesse om Java voor high-performance parallel comupintg te
gebruiken heeft enkele ontwikkelingen in dit gebied gestimuleerd. Zo is er bijvoorbeeld Ibis
ontwikkeld[2]. Het systeem stelt de gebruiker in staat om efficiënte parallelle applicaties in Java te
schrijven. Er zijn echter veel twijfels over prestaties van parallelle Java-applicaties. Dat is ook
begrijpelijk want de communicatie in Java is nog niet zo snel als in C met MPI [2] In dit werk wordt de
performance van een parallelle Java-applicatie geanalyseerd. Dezelfde applicatie is in C++ met MPI
geïmplementeerd. De prestaties van beide implementaties worden met elkaar vergeleken. De vraag
is dan natuurlijk of een parallelle applicatie in Java een performance vergelijkbaar met C++ zal halen.
Uit de resultaten van dit onderzoek wordt duidelijk of Java een concurrentie kan maken voor C++ en
MPI bij wetenschappelijke berekeningen.
Download