Most recent comments
2021 in Books -- a Miscellany
Are, 2 years, 11 months
Moldejazz 2018
Camilla, 5 years, 4 months
Romjulen 2018
Camilla, 5 years, 11 months
Liveblogg nyttårsaften 2017
Tor, 6 years, 11 months
Selvbygger
Camilla, 1 month, 4 weeks
Bekjempelse av skadedyr II
Camilla, 11 months
Kort hår
Tor, 3 years, 11 months
Ravelry
Camilla, 3 years, 6 months
Melody Gardot
Camilla, 5 years, 5 months
Den årlige påske-kommentaren
Tor, 5 years, 8 months
50 book challenge
Camilla, 11 months, 3 weeks
Ten years ago
Nissebading
Tor
Controls
Register
Archive
+ 2004
+ 2005
+ 2006
+ 2007
+ 2008
+ 2009
+ 2010
+ 2011
+ 2012
+ 2013
+ 2014
+ 2015
+ 2016
+ 2017
+ 2018
+ 2019
+ 2020
+ 2021
+ 2022
+ 2023
+ 2024

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
4720
Google hits
1
Last google search
v60 kaffelaging