Software versnellen: LOTOS-EUROS
Versnelling LOTOS-EUROS
Het model LOTOS-EUROS is ontwikkeld door TNO en RIVM. Het kent al een heel lange geschiedenis en behoort inmiddels tot de toonaangevende modellen op dit gebied in Europa. Omdat het voor veel toepassingen gebruikt wordt (ook operationeel) is het van belang dat het pakket zo snel mogelijk rekent. Het was daarom al deels geparallelliseerd om gebruik te kunnen maken van de rekenvoorzieningen bij het KNMI. Maar de performance was op sommige computers veel minder dan men verwachtte. VORtech heeft bijgedragen aan de optimalisatie van LOTOS-EUROS.
In stappen naar een hogere performance
Het verbeteren van de performance verliep in een aantal stappen:
- Het onderzoek van VORtech begon met het analyseren van de performance met onze eigen tools en op onze eigen computers. Daaruit kwam hetzelfde beeld naar voren als wat eerder op de computers van het KNMI was gevonden.
- Daarna hebben we in detail gekeken naar de berekeningen die problemen veroorzaakten:
- Bij een daarvan was het mogelijk om op een hoger niveau te parallelliseren. Daardoor kunnen er veel grotere brokken werk parallel uitgevoerd worden zodat het opstarten en afsluiten van de parallelle threads veel minder tijd vergt. Wel was het nodig om extra arrays in te voeren om tussenresultaten te bewaren.
- Op een bepaald punt in de code werd een interpolatie steeds weer herhaald. Dat kon flink worden versneld door de interpolatiegewichten te bewaren in plaats van ze steeds opnieuw uit te rekenen.
- Tenslotte zijn uitgebreide performance studies gedaan om vast te stellen of de maatregelen afdoende waren.
Een mooi resultaat
Uiteindelijk loopt de referentieberekening nu in 80 seconden, waar voorheen 125 seconden nodig was (op acht cores). Op een enkele core kostte de berekening 280 seconden. Een versnelling met een factor drie lijkt weinig voor acht cores maar dat komt vooral doordat er flinke delen nog niet geparallelliseerd zijn. Naarmate het parallelle gedeelte hogere versnellingen laat zien, gaan deze sequentiële stukken steeds bepalender worden voor de algehele performance.