Bouw je eigen supercomputer met Raspberry Pi’s
Als je denkt aan een zelfbouwcomputer, denk je allicht over een bliksemsnelle gamecomputer of aan de goedkoopste elementen die je samen gooit. Je denkt er zeker niet aan om een supercomputer te gaan bouwen.
Maar misschien moet je dat juist wel doen. Joshua Kiepert, een Amerikaanse doctoraatsstudent heeft voor minder dan 2000 dollar een supercomputer gebouwd met Raspberry Pi-computers.
De Raspberry Pi is een computer op een kleine printplaat. Ze worden aangedreven door een 700MHz ARM11-processor en hebben een Videocore IV-GPU. Het Model B in deze zelfsbouwsupercomputer heeft 512MB ramgeheugen, twee usb-poorten en een 10/100 BaseT ethernetpoort. In dit project zijn de processoren overklokt tot 1GHz.
Op zichzelf is de Pi al interessant, maar het lijkt in niets op een onderdeel van een supercomputer. Maar Kiepert had voor zijn onderzoek een probleem met de supercomputer van zijn school, een Onyx Beowulf-cluster supercomputer die draait op Linux. Deze heeft 32 nodes met elk een 3.1GHz Intel Xeon E3-1225 quadcoreporcessor en 8GB ram.
Een Beowulfcluster is een verzameling goedkope hardware die samen draaien op Linux en software voor parallelle procesverwerking. Maar in zijn paper legt Kiepert uit wat zijn probleem ermee was:
“Eerst, hoewel de Onyxcluster een goede uptime heeft, kan hij afsluiten om verschillende redenen. Als je een project hebt dat zo’n cluster nodig heeft en Onyx is niet beschikbaar, dan zijn er geen andere opties dan wachten op beschikbaarheid. De RPiCluster verschaft een andere optie om de ontwikkeling van projecten voort te zetten die MPI (Message Passing Interface) of Java in een clusteromgeving vereisen.
"Ten tweede hebben de RPi’s de unieke eigenschap dat ze toestaan dat externe hardware op erg laag niveau inhaakt, zoals I2C, SPI, UART en GPIO. Dat is zeer nuttig voor elektrische ingenieurs die embedded hardware op grote schaal gaan testen.
"Ten derde is gebruikerstoegang tot een cluster okee als de nodige tools geïnstalleerd zijn. Indien niet, dan moet je met de clusterbeheerder werken om dingen aan de praat te krijgen. Door mijn eigen cluster te bouwen, kan ik hem voorzien van alles wat ik nodig heb.
"En tenslotte zijn RPi’s goedkoop! Het RPi-platform moet een van de goedkoopste manieren zijn om een cluster van 32 nodes te maken. De kost voor een RPi met een SD-kaart van 8GB is ongeveer 45 dollar. Ter vergelijking: elke node in de Onyxcluster kost tussen de 1.000 en 1.500 dollar. Dus voor de prijs van ongeveer één zo’n node, maken we een hele cluster met Raspberry Pi.”
In een e-mail voegt Kiepert daaraan toe: “Dit project is gestart omdat we een week hadden (paasvakantie) waarin we de Onyx Beowulfcluster niet konden gebruiken. De Onyxcluster was buiten gebruik door renovatiewerken elders in het lab. Dat zette me aan het denken. Ik moest blijven testen voor mijn doctoraatswerk, maar zonder Onyx had ik geen opties.
"Eerder heb ik al veel tijd doorgebracht met de Raspberry Pi. En ik heb ook al veel gewerkt met Linux. Daarenboven gebruiken we in ons lab RPi’s voor onze op maat gebouwde sensornetwerken om sensorgegevens in onze centrale databank te stoppen. Voor dit project kon ik dus mijn eerdere ervaring met clusters en Raspberry Pi naar een hoger niveau tillen en het stelde me in staat verder te werken aan mijn doctoraatswerk. Het voegt in ieder geval iets toe al je een cluster gebruikt die je zelf hebt gebouwd."
Voor deze baby-supercomputer heeft Kiepert gekozen voor Arch Linux. Hij legt uit: “Arch Linux hanteert een minimalistische aanpak. De image is maar 150MB groot en het boot in 10 seconden. De installatie-image heeft niets extra. De standaardinstallatie voorziet een bare bones, minimale omgeving die in een command line interface boot. Het mooie aan deze aanpak is dat je kan starten met de properste, snelste installatie en dingen kan toevoegen als je die nodig hebt. Nadeel is dat je door het leerproces voor deze andere, maar elegantere aanpak.
De RPi-cluster is natuurlijk niet ideaal, geeft ook Kiepert toe: “De prijs-kwaliteitsverhouding is goed, vooral als het doel gedistribueerde workloads zijn, eerder dan parallelle verwerking. Dat wil zeggen voor programma’s die gemaakt zijn om gedistribueerd te werken, maar niet CPU-intensief zijn. Voor bewerkingen die veel bewerkingen vragen, moeten we iets anders zoeken. Er is gewoon onvoldoende paardenkracht om de RPi een goeie keuze te maken voor cluster computing.”
In onze mailconversatie voegt Kiepert nog toe: “het waarschijnlijk meest vervelende probleem dat ik had bij de bouw was SD-kaartcorruptie. In het begin had ik veel corrupte bestandssystemen als ik de cluster uitschakelde (met het commando shutdown –h now) en probeerde opnieuw op te starten. Het is een bekend probleem als je RPi’s overklokt. Het vreemde is dat het enkel voorkwam in de slaafmodules, niet de master (een Samsung Chromebook Series 3 met 1.7GHz dual-core Cortex-A15-processor).
Uiteindelijk ontdekte ik dat alle NFS-shares manueel ge-unmount moesten worden. Ik heb een script gemaakt om de omgang met de opslag te automatiseren.
Op het einde van de rit heeft Kiepert een goedkope, werkende supercomputer, maar dan wel eentje die nog plakband gebruikt om de ventilators op hun plaats te houden. Maar nu voor de vraag van 64 bit: hoe snel is de machine?
Kiepert draaide de benchmark High Performance Linpack (HPL) en ontdekte dat zijn RPi-cluster met 32 Broadcom BCM2708 ARM11-processors aan 1GHZ en 14,6GB aan bruikbaar ram een piekperformantie haalde van 10,13GFLOPS. ‘Dat is niet genoeg voor een plek in de top 500 supercomputers, maar de eerst Cray-2 supercomputer in 1985 haalde 1,9GFLOPS. Hoe de tijden veranderd zijn,” aldus Kiepert.