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.