Software versnellen: LOTOS-EUROS

LOTOS-EUROS is een pakket waarmee de concentratie van stoffen zoals ozon, fijnstof en aerosolen wordt berekend voor de onderste laag van de atmosfeer. Het wordt ondermeer gebruikt voor de dagelijkse voorspellingen van de luchtkwaliteit. De belangrijkste stukken van het pakket waren al geparallelliseerd. Toch heeft VORtech in opdracht van het KNMI de rekensnelheid nog eens met 30% weten te verhogen.

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.

Kan uw programmatuur sneller gemaakt worden?
Lees over onze diensten voor het optimaliseren van programmatuur en onze expertise op het gebied van High Performance Computing. Of neem contact op voor een vrijblijvende kennismaking.
Neem contact op