# Distributed computing

Distributed computing (Engels voor gedistribueerd rekenen) is een techniek waarbij rekentaken niet door één enkele computer worden uitgevoerd, maar door een verzameling computers verbonden in een computernetwerk; het 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 processorcapaciteit, proberen deze projecten vaak zo veel 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 zo veel 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. Een 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, de opvolger van SETI classic die wel op een eigen platform draaide.

## 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 gebruikmaakt van de CPU, wordt de rekenkracht ingezet voor die taak. Een voorbeeld is het 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 Zwaartekrachtsgolven (Einstein@home)
** zoeken naar zwarte gaten
* Wiskundig:
** 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.
* 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. Hierop draaien momenteel 9 projecten. Een kleine greep hieruit: (kinder)kanker, spierziektes, clean energy en proteïne vouwen.
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.
* D2OL had als doel medicijnen te vinden voor de ziekten ebola, miltvuur (antrax), pokken (smallpox), SARS en malaria. De 5 meest besmettelijke ziekten op aarde.