Gå til hovedinnhold

Veldig kort guide til parallellprogrammering i R / Python

Siden datamaskiner begynner å få skremmende mange kjerner har parallell programmering blitt noe man i større og større grad bør forholde seg til. Jeg satt meg nettopp ned for første gang på fryktelig lenge for å teste det ut, og ble veldig forbauset over kort tid det tok å skrive koden. Generelt er dog parallell programmering helt jævli om man forsøker å bruke det på feil problemer, men på riktig type problemer er det ganske gøy. Det typiske eksempelet er en metode, som tar lang nok tid til at det er irriterende, som må kjøres flere ganger med forskjellig input... som disse.

Python

For Python kan mer eller mindre alt gjøres automagisk. I mitt tilfelle hadde jeg allerede en metode analyze som skulle kjøres på hvert bilde i en katalog. Det blir såpass enkelt som dette:

from multiprocessing import Pool

pool = Pool()

filenames = os.listdir("images")

results = pool.map(analyze,filenames)


Pool() lager automatisk like mange prossesser som maskinen har kjerner, og nye tråder blir ikke satt igang før de er blitt ledige. Dette er mer eller mindre optimalt med andre ord, selv om det ofte faktisk går hakket fortere med flere tråder enn kjerner (på tross av det virkelig, virkelig ikke burde det).

R

Parallellisering i R er ikke spesielt mye vanskeligere, men ikke like magisk. Standard-metoden å gjøre det på fyrer dessverre opp alle prossessene med en gang, men det er fortsatt betraktelig fortere enn singel-kjøring. Det er uansett fryktelig enkelt. Ta hvilken som helst av apply-funksjonene (mapply, sapply eller apply), og putt mc foran. Gratulerer. Du har nå parallell-programmert!

Koden jeg brukte så ut som dette, hvor generate_path er en funksjon og de restende er vektorer med inndata:

library(parallel)
mcmapply(generate_path,image, cx, cy, outfile)




Populære innlegg fra denne bloggen

Israel og Palestina

Jeg har virkelig likt å komme tilbake til Israel og Palestina. Det er over 10 år siden jeg var her sist, og mye har forandret seg. Det som derimot ikke har forandret seg er hvor mye rart som skrives om Israel og Palestina hjemme. Dette er et blogginnlegg som handler litt om det. For ordens skyld, dette er ikke et innlegg som forsøker å gi et helhetlig og balansert bilde av konflikten.

Mange vil kanskje synes dette er et veldig pro-Israelsk innlegg. Det er det sannhet i, men det gjør det ikke mindre viktig. Uansett hvilken side man heier på i en konflikt, så er det viktig at det man mener stemmer sånn noenlunde overens med virkeligheten. At Europa syntes synd på jødene og ønsket å hjelpe dem uavhengig av konsekvensene er jo faktisk en del av grunnen til at denne konflikten ble såpass ille som den har blitt. Å gjøre samme feilen bare i motsatt retning kommer virkelig ikke til å gjøre midt-østen til et bedre sted for folk flest.
Det Israelske militæret I Hebron endte jeg opp med å bli tå…

Best places to hang out

Best spots to hang out for a while Mostly everywhere on earth has it charm, however some places are also just plain better than others. This is my short list of favourite spots to hang out on this here earth.


Hualien Hualien is a slightly ugly and earthquaky city on the wild east coast of Taiwan. It's close to the gorgeous Taroka Gorge, which is why most people is visit. I however ended up coming back 3 times and spent over 4 weeks there in total. That doesn't sound that much, but as a backpacker doing nothing it's an eternity. So, what does Hualien have to offer?

Well, Taiwan is famous for it's variety of tea and soft-drinks, with excellent stalls pretty much everywhere. In Hualien the native Taiwanese influence has resulted in a mix of chinese tea and native fruitdrinks that is just jaw-droppingly delicious. The wintermelon-tea in Hualien, and in Hualien only, is so delicious I can't think of any drink that is even comparable. Other than that, the city is managa…

Best food in the world

I little while ago I was accused of being a foodie. At first I thought that was a bit ridicilous, as I'll happily eat at McDonalds, gorge on sweet stuff by the galleons and couldn't care less about what the name of my cow was. However, the accusation does have some merits, as I certainly care more about food nowadays. To prove it, here's my list of recommended foods.

One word of warning though. The pictures are mostly illegally borrowed from the internet, and were the closest I could find to the meals I had.

10. Mongolian Meat Soup Without Meat  I had this soup in Zamiin-Hud, which is a dusty, grimy Mongolian bordertown next to China. It's a somewhat deserted town, with two cafes serving microwaved stuff and this one local place where all the mongolians ate (here, right at the north corner of the parking lot).

To say my expectations were low would be a gross understatement. The cafe barely had furniture, the staff had that thousand mile stare and didn't bat an eye w…