Hva er Distributed Computing?

Kort fortalt så er Distributed Computing (heretter DC) en fordeling av ett stort problem til mange små. "Hæ???", tenker du nå kanskje!
Fortvil ikke, jeg skal prøve å gi et eksempel på dette.

Tenk deg at du har 1 datamaskin som samler inn data, det kan f.eks være temperaturer, avstander, vekt osv., over en gitt periode.
Tenk deg så at det skal utføres kompliserte beregninger på grunnlag av disse dataene.
Med den ene datamaskinen som du har til rådighet, tar denne jobben, la oss si 3 år.
Tenk deg så at du har 10 datamaskiner og du har fordelt dataene likt mellom disse og beregningene tar like lang tid på hver av maskinene. Nå tar jobben bare 3,6 måneder å utføre.
Det sier seg selv hva man kan spare i form av tid med dette systemet.

 

Så hvordan fungerer dette i praksis?

Vanligvis så er det gjerne et selskap eller et universitet som kommer opp med ett prosjekt (problem) som trenger mye datakraft.

Det er selvfølgelig flere muligheter for å få løst dette problemet:

  1. Leie av plass på en supercomputer:
    • Fordeler:
      1. Fungerer bra for mindre prosjekter.
      2. Uavhengig av andre.
    • Ulemper:
      1. Begrenset aksess på maskinen.
      2. Dyrt å leie over lengre tid.
      3. Krever spesialiserte programmer.
  2. Kjøp av supercomputer:
    • Fordeler:
      1. Full tilgang på maskinen.
      2. Kjøre proprietære prosjekter.
      3. Skalerbart til en viss grad.
      4. Uavhengig av andre.
    • Ulemper:

      1. Latterlig dyrt.
      2. Krever spesialiserte programmer.
  3. Bruke din og min datamaskin for å lage en "supercomputer".
    • Fordeler:
      1. Vanvittig skalerbart.
      2. Krever ikke astronomiske budsjetter for å drive prosjektet.
    • Ulemper:
      1. Ingen garanti for at prosjektet slår an.

Nr.1 og 2 krever en rimelig bra økonomi, noe som universiteter og vanlige selskaper/institusjoner sjeldent har.

Nr.3 er avhengig av om du synes prosjektet er interessant og er villig til å donere den ledige kapasiteten på datamaskinen din til prosjektet.

 

Hva er prinsippene bak ett DC prosjekt?

For å ta eksemplet over, så skal jeg prøve å gi en forklaring på hva som skjer mellom datamaskinen som samler inn data, til datamaskinene som utfører beregningene.
Datainnsamlingsmaskinen kaller jeg server (S1), beregningsmaskinene kaller jeg klienter (K1-10).

  1. Datainnsamlingen er ferdig eller pågår under hele prosjektets livstid.
  2. S1 deler opp de innkomne dataene i pakker som er små og som ikke tar altfor lang tid å prossesere.
  3. S1 får forespørsel fra K1-10 om nye pakker med data.
  4. S1 sender ut pakker med data til K1-10.
  5. K1-10 beregner disse ferdig og sender dem tilbake til S1.
  6. S1 holder orden på hva som har gått ut og hva som kommer inn (Logistikk,Statistikk).
  7. Gjenta 2 -> 6 til prosjektet er ferdig.
  8. Resultatet blir presentert og/eller brukt i senere prosjekter.

All programvare blir som regel utviklet av prosjekthaver.

Så prosjekthaver holder alle serverene (backend) og foretar datainnsamling, mens klienten (din og min maskin) utfører arbeidet.
Klienten kan være en skjermsparer eller et vanlig program skrevet spesiellt for prosjektet som kommuniserer med serverene.

 

Hvilke typer prosjekter finnes det?

Det finnes mange typer DC prosjekter, så jeg vil gi noen eksempler på disse:

  • Vitenskap:
    • Seti@Home Leting etter liv i verdensrommet. Kanskje hørt om det før?
    • Climate prediction Hjelp til med å spå hvordan været blir om 50 år.
  • Matematikk:
    • OGR Optimal Golomb Ruler Målesystem
  • Medisinsk:
    • D2OL Finne kur for blant annet SARS,EBOLA,MILTBRANN m/fler.
    • Folding@Home Protein bretting. Forståelse hvordan dette fungerer.

Det er mange flere prosjekter å nevne, så jeg må be dere ta en titt her for mer informasjon om de forskjellige prosjektene.

 

Hvorfor er det så mange som blir med på slike prosjekter som dette?

 

  • Det at man kan være med på å forandre fremtiden for mange mennesker er jo en artig tanke.
  • Konkurranse. Alle DC prosjekter har hjemmesider på internet hvor du kan følge din eller lagets progresjon; Jo mere datakraft du bidrar med, jo høyere kommer du opp på resultatlistene. Ingenting er som å knuse opponenter sønder og sammen med rå datakraft. Man må prøve det.
  • Istedenfor at datamaskinen bare står å går på tomgang, kan man bruke PC'n til noe fornuftig.

 

Ett viktig spørsmål...

Det har kommet opp noen spørsmål i diverse fora om at hvorfor gjøre drittjobben for andre, mens det er andre som sitter igjen som eier av resultatene og stikker av med profitten?

Mange velger derfor å avstå fra å bli med på prosjekter som dette, da de ikke vil jobbe gratis for store legemiddelfirmaer og det er jo forståelig. Jeg tror og håper at ingen av oss har lyst til det.
MEN, de fleste prosjektene blir styrt fra nonprofitt selskaper eller universiteter.
Dvs. resultatene blir lagt ut på internett, slik at alle kan bruke de til hva de måtte ønske!
Ergo: du har lik mulighet til å f.eks profittere på dette som alle andre, hvis du kan utnytte resultatene på en fornuftig måte.

Det finnes også prosjekter som gir ut pengepremier til de som har funnet f.eks en nøkkel i et dekrypterings prosjekt.

Jeg vil råde deg til å finne ut av hvem det er som driver prosjektet og hva de står for, hva prosjektet går ut på og hva resultatene brukes til FØR du melder deg på. Det er til syvende og sist DU som avgjør om den ledige prossesorkraften i datamaskinen din skal bli brukt til noe fornuftig eller ei.
Lykke til.