Parallell partikkeltransport implementert i Python med MPI
Master thesis
Permanent lenke
http://hdl.handle.net/11250/2433720Utgivelsesdato
2017Metadata
Vis full innførselSamlinger
- Institutt for fysikk [2701]
Sammendrag
Det er skrevet et program i Python for å beregne parallell partikkeltransport.Som numerisk integrator ble fjerdeordens Runge-Kutta-metode brukt for å beregne partikkeltransporten i et hastighetsfelt gitt ved et analytisk uttrykk.Bevegelsen av hver partikkel er antatt å være uavhengig av de andre, en vanlig antagelse ved transport av løste partikler i vann.
Programmet er kjørt i parallell på flere datamaskiner, inkludert superdatamaskinen Vilje ved NTNU. Kjøretiden for ulikt antall av parallelle prosesser ble målt og sammenlignet. Ytelsen ble funnet til å være meget bra. Hastighetsøkningen var bedre enn lineær skalering ved bruk av mellom 8 og 16 parallelle prosesser. Ved kjøring på flere enn 16 prosesser ble imidlertid ytelsen ikke bedre. Dette kommer av at programmet det da må kommuniseres mellom noder, som er tregere enn å kommunisere innad i en node.
Det er demonstrert at kombinasjonen av Python og \emph{Message Passing Interface} kan bli brukt til å skrive vitenskapelig kildekode for parallelle simuleringer av partikkeltransport. Koden er svært kompakt og lesbar, sammenlignet med lignende kode i Fortran. En tentativ sammenligning viser at ytelsen til det mer høynivå programmeringsspråket Python ikke er signifikant dårligere enn til en tilsvarende kode skrevet i Fortran.