Most recent comments
Jogging og blogging
Are, 9 måneder, 2 uker
Liveblogg nyttårsaften 2016
Are, 9 måneder, 2 uker
Reading in dark times
Are, 11 måneder, 1 uke
Moldejazz 2016
Camilla, 1 år, 2 måneder
Dørskilt
Karoline, 1 år, 3 måneder
Halifax
Tor, 1 år, 4 måneder
Sony Smartwatch 3 review
Tor, 1 år, 4 måneder
Numerikk, takk
Tor, 1 år, 4 måneder
Topp tur
Camilla, 1 år, 6 måneder
Tolkien reading day
Tor, 1 år, 7 måneder
50 book challenge
Camilla, 9 måneder, 3 uker
Five years ago
Tokyo
Tor
Controls
Register

Parallellisering

Jeg starter stort sett hver dag på jobb med litt parallellisering. Jeg sparer fort noen minutter på dette, så det er viktig å kjenne til slike teknikker, for noen minutter om dagen blir mange timer i løpet av et år. Eller i allefall noen timer. Et minutt om dagen blir vel omtrent tre og en halv time i løpet av et år. Nuvel.

La oss analysere problemet, som i mitt tilfelle er å lage en presskanne med kaffe. Det er en prosess som involverer flere steg, der de viktigste er:
  1. Veie opp kaffe (20 sek)
  2. Kverne kaffe (20 sek)
  3. Tømme kannen for gammel grut (20 sek)
  4. Koke opp vann (2 min)
  5. Putte kaffe i kannen (10 sek)
  6. Putte kokende vann i kannen (10 sek)
  7. Trekke kaffen (3 min)
  8. Presse ned filteret (10 sek)

Noen av disse tingene må gjøres i en spesiell rekkefølge for optimalt resultat, mens andre kan gjøres i parallell. Jeg har forsøkt å estimere tiden hvert av disse skrittene tar, og hvis vi begynner med å tenke oss at vi gjennomfører dette sekvensielt kan vi tegne følgende diagram:

Det finnes andre måter å gjøre dette på, for eksempel er det ikke så viktig om man renser kannen for gammel grut før eller etter at man veier opp ny kaffe. Det er imidlertid essensielt at man for eksempel koker opp vannet før man putter vannet i kannen. Her er det med andre ord rom for parallellisering, men vi må passe på synkroniseringen.

Når jeg lager kaffe alene blir prosessen litt annerledes, siden vannkokeren kan koke opp vannet mens jeg bruker tiden min på andre ting. Vi kan da for eksempel tegne dette diagrammet.

Dette virker kanskje som et trivielt problem, men vi har allerede berørt et viktig problem i parallellprogrammering, nemlig synkronisering når noen oppgaver må skje før andre, og nå ser vi et annet viktig poeng, som er at denne prossesen er nå så effektiv som den kan bli. I dag, for eksempel, var vi to stykker som lagde kaffe sammen, så en av oss renset kannen mens den andre veide og kvernet kaffe. Vi hadde dermed tre prossesser gående i parallell, men likevel sparte vi ikke noe tid totalt sett, siden vi uansett måtte vente på at vannet skulle koke. Videre ser vi at vannet må koke før vi kan tilsette vannet, vannet må tilsettes før kaffen kan trekke, og kaffen må trekke før vi kan presse ned filteret. Denne prosessen kan dermed ikke parallelliseres ytterligere på en slik måte at vi sparer tid.

Dagens moral er dermed at man bør analysere problemet sitt for å finne ut om parallellisering lønner seg før man setter i gang. Se forøvrig artikkelen om Amdahls lov og Gustafsons lov.
Camilla likes this

Comments

Jeg har av og til tenkt på dette selv. Stort sett når jeg glemmer å trykke på knappen som får vannet til å koke.

Are,  26.08.13 11:38

Jeg tenker i grunnen på denne måten hele tida. Og kaffelaging er jo et veldig godt eksempel fra hverdagen, siden vannkokinga gir dødtid. Når jeg sitter foran maskinen på jobb kan overivrig parallelisering føre til at jeg får gjort mye forskjellig - men gjerne at det viktigste jeg driver med blir gjort tregere enn det burde.

Faktisk er denne posten et eksempel på akkurat det. Jeg begynte å skrive den etter å ha trykket F5 for å trigge kjøring av programmet jeg jobber med, siden jeg likevel har litt dødtid i de 10-15 sekundene kompilering og oppstart tar... men posten tar jo litt mer tid enn det å skrive, så dermed blir min manglende evne til å sitte stille og ikke gjøre noenting en årsak til at hovedoppgaven jeg arbeider med blir forsinket. Jaja, sånn kan det gå.

Når jeg begynte å lese artikkelen forventet jeg halvveis at du hadde laget et Python-program for å lage en optimal arbeidsplan, men dengang ei. Eller i det minste funnet og testet et sånt program på nettet ;)
Category
Technology
Tags
kaffe
parallellprogrammering
parallellisering
Views
1715
Google hits
1
Last google search
v60 kaffelaging