Veelgebruikte bestandsformaten voor data-analyse, zoals Parquet, zijn ontworpen in een tijd waarin processoren vooral sequentieel werkten (stap voor stap). Moderne machines kunnen veel meer werk tegelijk uitvoeren. Een CPU (de centrale, allround processor) heeft SIMD-instructies (Single Instruction, Multiple Data) waarmee hij veel data-elementen in één keer kan verwerken, terwijl een GPU (oorspronkelijk ontwikkeld voor grafische toepassingen) veel meer, eenvoudigere rekenkernen heeft die uitblinken in het gelijktijdig uitvoeren van dezelfde bewerking op grote hoeveelheden data.
Omdat oudere bestandsformaten niet zo zijn ingericht dat ze deze processoren efficiënt “voeden” of hun capaciteit om gelijktijdig data te verwerken optimaal benutten, staan computers vaker te wachten, gaat rekenkracht verloren en verloopt data-analyse trager.
Werkend prototype
Afroozeh’s belangrijkste bevinding is dat bestanden kleiner én sneller kunnen zijn als je data opslaat in een indeling die aansluit bij de manier waarop moderne processoren werken. Daardoor kunnen duizenden waarden parallel worden gedecodeerd en verwerkt, met minder knelpunten.
Zijn aanpak combineert een zorgvuldige analyse van realistische datasets en processorgedrag met uitgebreide engineering. Hij ontwierp lichte, snel te decoderen compressiemethoden en nieuwe data-indelingen, en implementeerde die in portable C++-code (high-performance code die op veel verschillende computersystemen draait). Vervolgens testte hij de aanpak op platforms variërend van Intel-, AMD- en Apple-processoren tot cloudhardware en NVIDIA-GPU’s. Het resultaat is een werkend prototype van het FastLanes-bestandsformaat.
Open bron
In gerapporteerde experimenten leverde FastLanes aanzienlijke prestatieverbeteringen op; zo beschrijft het proefschrift resultaten tot 40 keer sneller op een Apple M1-processor vergeleken met Parquet, terwijl in diezelfde situatie ook de compressieverhouding verbeterde. Om FastLanes praktisch toepasbaar te maken voor realistische datasets ontwikkelde Afroozeh daarnaast ALP: een lichte, verliesvrije compressiemethode voor numerieke kolommen met floating-pointwaarden (zwevendekommagetallen), ontworpen om extreem snel te decoderen. Zowel FastLanes als ALP zijn als open source beschikbaar gesteld om gebruik en reproduceerbaarheid te ondersteunen, zodat anderen het werk kunnen herhalen en erop kunnen voortbouwen.