Distributed computing
Distributed computing (nl: gedistribueerd rekenen) is een techniek waarbij de taken niet door één enkele computer worden uitgevoerd, maar door een verzameling van genetwerkte computers en lijkt daarmee enigszins op een computercluster. De verzameling computers kan bestaan uit machines in één ruimte, of uit computers op meerdere locaties, waarbij gebruik wordt gemaakt van conventionele netwerktechnieken en internet. Het idee is om een grotere totale rekenkracht (verwerkingscapaciteit) te verkrijgen door het combineren van de rekenkracht van de individuele computers. Wanneer in een dergelijk netwerk zeer veel relatief eenvoudige computers beschikbaar zijn kan de beschikbare rekenkracht aanzienlijke proporties aannemen, vergelijkbaar met een supercomputer.
Distributed computing is met name geschikt voor rekentaken waarbij de hoeveelheid data die tussen de cliënt en de server moet worden verstuurd erg klein is in verhouding tot de rekenkracht die nodig is om de data te verwerken. Ook moet de totale taak kunnen worden onderverdeeld in kleinere taken die geen onderlinge relaties hebben.
De pc thuis
Met de opkomst van permanente verbindingen met het internet voor de personal computers van thuisgebruikers is men de techniek ook gaan toepassen in dit segment, waardoor de braakliggende rekenkracht van letterlijk miljoenen pc's voor grote projecten beschikbaar gemaakt kan worden. In dit geval maakt de distributed computingsoftware over het algemeen alleen gebruik van de idle time van een pc. Hierdoor hoeven andere werkzaamheden die met dezelfde pc worden verricht niet trager te verlopen.
Aangezien deze distributed computingprojecten afhankelijk zijn van door vrijwilligers gedoneerde processorkracht proberen deze projecten vaak zoveel mogelijk rekenkracht te vergaren door het opzetten van pagina's met statistieken. Ook is het vaak mogelijk om een team op te richten zodat er tussen de deelnemers competitie ontstaat om zoveel mogelijk rekenkracht in te zetten voor een bepaald project.
Software en ontwikkeling
Vaak wordt voor één bepaald distributed computingproject eigen specifieke software ontwikkeld, maar er zijn inmiddels ook projecten die een soort algemene softwareomgeving bieden die het deelnemen aan verscheidene projecten (quasi) tegelijk mogelijk maakt en waarmee ook doorgerekend kan worden als één project even geen nieuw rekenwerk aanlevert.
De eerste poging op dit gebied was Distributed.net, waarmee deelgenomen kan worden aan een paar deelprojecten. Eén ervan is het vinden van complexe optimal Golomb Rulers. Een ander project is encryptie van een code bestaande uit 2 72 cijfers (RC5-72) waarmee wat prijzengeld is te winnen.
Ook de universiteit van Californië (Berkeley) ontwikkelde een dergelijk systeem in de vorm van de opensourcesoftware BOINC (Berkeley Open Infrastructure for Network Computing). Dit werd onder andere gebruikt voor het populaire SETI@Home en diens opvolger.
Toepassing
Er kunnen verschillende redenen zijn om distributed computing toe te passen:
- De taken zijn dusdanig complex dat uitvoeren op de snelste computers te lang duurt. Tijdwinst kan dan gerealiseerd worden door een taak op te delen (liefst zo onafhankelijk mogelijk van elkaar) en die delen vervolgens te verspreiden over de deelnemende computers.
- Kwetsbaarheid: computers die in één ruimte staan worden gemakkelijker getroffen door een storing, zoals uitval van elektriciteit, brand, terreur, en dergelijke. Door de rekenkracht te verspreiden over verschillende locaties zal bij een storing in de meeste gevallen slechts een deel van de rekenkracht uitvallen.
- Donatie: voor een aantal projecten is het mogelijk om ongebruikte verwerkingscapaciteit te laten gebruiken voor goede doelen. Zodra de computer niet of nauwelijks gebruik maakt van de CPU wordt de rekenkracht ingezet voor die taak. Voorbeelden zijn bijvoorbeeld het onderzoek naar buitenaardse intelligentie (SETI genoemd), of voor onderzoek naar aidsmedicijnen.
Voorbeelden
Enkele algemene voorbeelden van het soort projecten waarbij de techniek wordt ingezet:
- Wetenschappelijk:
- zoeken naar geneesmiddelen
- onderzoek naar het klimaat
- zoeken naar buitenaards leven (SETI)
- zoeken naar zwarte gaten
- Wiskundig:
- zoeken naar Optimal Golomb Ruler
- zoeken naar priemgetallen
- testen van nieuwe encryptietechnologie
- testen van de veiligheid van encryptiecodes
Populaire specifieke projecten
Naast de geïntegreerde projecten zoals Distributed.net en BOINC is er een groot aantal populaire specifieke projecten waar vrijwilligers aan kunnen deelnemen:
Medisch:
- Community TSC is een project dat zoekt naar een medicijn voor de dodelijke kinderziekte Tuberous Sclerosis Complex.
- D2OL heeft als doel medicijnen te vinden voor de ziekten ebola, miltvuur (antrax), pokken (smallpox), SARS en malaria. De 5 meest besmettelijke ziekten op aarde.
- Folding@Home tracht, in navolging van het eerdere Distributed Folding, door het simuleren van het vouwen van de proteïne te begrijpen waarom ziekten zoals alzheimer ontstaan, zodat er een behandeling kan komen.
- Rosetta@home tracht te voorspellen hoe eiwitten vouwen.
- World Community Grid doet momenteel aan aidsonderzoek en studie rondom het vouwen van proteïnen.
Wiskundig:
- Distributed.net doet onderzoek naar Optimal Golomb Rulers en encryptie.
- GIMPS zoekt naar mersennepriemgetallen.
- Seventeen or bust tracht 17 priemgetallen te vinden om het Sierpinskiprobleem op te lossen. Tot nu toe (november 2007) zijn 11 priemgetallen reeds gevonden en zijn er nog 6 te gaan.
- Riesel Sieve zoekt naar rieselgetallen.
- ABC@home doet onderzoek naar een van de belangrijkste wiskundige vermoedens van dit moment, het zogenaamde ABC-vermoeden. Dit project is vanuit Nederland opgezet.
Overige:
- Climateprediction.net doet onderzoek naar opwarming van de aarde.
- DPAD is een non-profitproject dat onderzoek doet naar neutrino's.
- SETI@home zoekt naar buitenaards leven.
Afgelopen projecten
- Distributed Folding
- Find A Drug
- United Devices o.a. kankeronderzoek.