Onelegante code blijkt nog schadelijker voor de wereld dan gedacht

We zien ook in de wereld van rekensoftware steeds meer aandacht is voor milieuoverwegingen en CO2-uitstoot. Dat is niet onterecht: volgens het International Energy Agency (IEA) zijn datacenters al verantwoordelijk voor ongeveer 1-1,5% van het wereldwijde elektriciteitsverbruik. Dat zal snel blijven stijgt door AI en cloud computing.

Er wordt hard gewerkt aan energiezuinigere hardware, bijvoorbeeld door het toepassen van neuromorphic computing zoals die ontwikkeld wordt in het NL-ECO initiatief van de Nationale Wetenschapsagenda. Maar een veel directere manier is om bij het programmeren te zorgen dat de code minder energie gebruikt.

Vaak is programmatuur geschreven met weinig oog voor efficiëntie, maar wordt vervolgens wel ontsloten aan veel gebruikers, en staat het dus veel processoruren te draaien. In dat soort gevallen kunnen kleine veranderingen leiden tot een enorme reductie in energieverbruik. Laatst hield Bert Hubert een interessant praatje bij Joy of Coding met aardige (soms pijnlijke) voorbeelden, zoals 40 Watt (!) besparing door Spotify op de telefoon te gebruiken in plaats van in de web app.

Voor ons als specialisten in wetenschappelijke software is dit herkenbaar. De software waar wij aan werken is vaak rekenintensief. Kleine optimalisaties in high-performance computing (HPC) kunnen een grote impact hebben. We zien ook veel laaghangend fruit bij minder intensieve applicaties. Toch is energiebesparing nooit de reden dat klanten ons benaderen. Als we code efficiënter maken, wordt dat eigenlijk altijd benut om meer te rekenen – grotere modellen, hogere resolutie, meer simulaties.

Die economische wetmatigheid geldt al sinds het begin van de industriële revolutie, toen Jevons observeerde dat efficiënter gebruik van steenkool leidde tot een enorme toename in kolenverbruik. Jevons’ paradox gaat zeker ook op voor computerhardware, waaraan we steeds meer uit zijn gaan geven naarmate het minder is gaan kosten. Voor software lijkt het niet anders.

Toch blijven we streven naar elegante software, waar wat ons betreft bijhoort dat het redelijk efficiënt in elkaar zit. Onlangs vroeg een klant of we hun rekenprogramma konden parallelliseren. Daarvan zou het vast sneller geworden zijn, maar na een korte analyse bleek het beter om eerst de code zelf te optimaliseren, omdat er nog veel te winnen was. Dat advies was gebaseerd op pragmatisme, esthetiek en een liefde voor deugdelijke, nette software engineering. Maar misschien zouden we daar nu CO2-besparing als argument aan toe kunnen voegen.