Most recent comments
Liveblogg nyttårsaften 2017
Tor, 11 months, 1 week
Jogging og blogging
Are, 1 year, 11 months
Liveblogg nyttårsaften 2016
Are, 1 year, 11 months
Reading in dark times
Are, 2 years
Moldejazz 2016
Camilla, 2 years, 4 months
Dørskilt
Karoline, 2 years, 4 months
Halifax
Tor, 2 years, 5 months
Sony Smartwatch 3 review
Tor, 2 years, 6 months
Numerikk, takk
Tor, 2 years, 6 months
Topp tur
Camilla, 2 years, 8 months
50 book challenge
Camilla, 11 months, 1 week
Ten years ago
Pics or it never happened!
Tor
Controls
Register

En hissig datamaskin

Jeg kan huske den gangen jeg kjøpte min andre pc. Det var en Pentium III 450 mhz, med 13 gb harddisk, og jeg husker ikke akkurat hvor mye ram, men antagelig 256 mb eller noe slikt. Jeg var rimelig fornøyd, husker jeg, og tatt i betraktning at min første pc var en Pentium 150 mhz uten cache-minne er det vel ikke så rart. Men etter at jeg kjøpte denne maskinen kan jeg ikke huske at jeg har vært spesielt opptatt av spesifikasjoner på datamaskinene mine. Jeg driver jo ikke med noe spesielt krevende, så jeg har bare antatt at det man får kjøpt er bra nok. Nå befinner jeg meg imidlertid i en situasjon der det man får kjøpt ikke lenger er bra nok, og det er litt irriterende.

Paul Anton og jeg ønsker å regne ut det reflekterte feltet fra en vilkårlig overflate. For å gjøre dette bruker vi en ligning som heter the Reduced Rayleigh Equation, som essensielt gir oss et digert sett med ligninger med et like digert antall ukjente, som vi kan løse for å finne det vi lurer på. Problemet er at dette er en nokså minne-hungrig fremgangsmåte. Sett at vi ønsker å se på en overflate på N x N punkter. Av tekniske årsaker har vi like mange mulige retninger for innkommende bølger som vi har punkter på overflaten, atså N^2. For hver innkommende retning vil vi vite hvor mye av denne bølgen som spres inn i de N^2 mulige retningene ut igjen, så N^2 ukjente for hver innkommende bølge. For å løse et ligningsystem med N^2 ukjente trenger vi N^4 koeffisienter. Hver av disse koeffisientene er et komplekst tall med singel-presisjon i hver komponent, så hver koeffisient tar 64 bit, eller 8 byte, minne. Totalt trenger vi altså 8*N^4 byte minne for å holde ligningsystemet vårt. Det betyr at selv med svært beskjedne størrelser på overflaten vår vil vi trenge mye minne. Svært mye minne. 512 gigabyte ville vært fint, for eksempel.

Av nyssgjerrighet tok jeg en kikk på hva man kan få tak i av datamaskiner med mye minne. Først sjekket jeg Mac Pro, men den går bare opp til usle 32 gb, så det er ikke noe å ha. På komplett, derimot, har de noe som begynner å ligne på noe. Dette hovedkortet, som til 4550 kroner er det dyreste de har, er utstyrt med hele 18 spor for DDR3-ram, og takler opptil 144 gb ram. 8gb DDR3-brikker får man også kjøpt, til 5395 kroner stykket. Vi trenger 18 slike. Videre trenger vi naturligvis to quad-core Xeon-prosessorer (3295 kr), store, sinte harddisker (2495 kr) og et høvelig pimpet kabinett (5595 kr). Pluss litt annet smårusk som solid strømforsyning, dvd-spiller, vifter og denslags. Alt i alt burde det komme på sa 130000 kroner. Så hvis det er noen som ikke har kjøpt julegave til meg ennå er det dette jeg ønsker meg.

-Tor Nordam

Comments

Camilla,  26.11.09 00:36

Jeg har kjøpt julegave til deg. Tenk.

Eivind,  26.11.09 11:30

Har en ganske avansert kalkulator på telefonen min. Du kan få låne den om du vil!

Eivind,  27.11.09 02:24

Tor, er det ikke sant at du en gang sa: "For jeg har altfor lite cache, så kassa mi ekke' no' rå"?

B,  27.11.09 15:07

Høres ut som om det kan være greit å lage et program som distribuerer problemet.
Supercomputing eller cluster. :)
Hvis løsningen din er å skaffe en maskin med en trillion billion Gigabyte ram, er det nok bedre å fokusere på en alternativ løsning.

Hvis du kan parallelisere problemet ditt kan du jo bruke flere designated workers som enten er en multicore cpu, flere multicore cpu'er eller bot net. (tsk tsk)
Og så kan man bruke memorymapping for å dra opp hastigheten, da blir det litt som pageing av minne. Dermed så skal forhåpentligvis søketiden gå ned.

B,  27.11.09 15:13

Jeg tror FSB'en vil bli en alvorlig flaskehals hvis du effektivt vil skrive data frem og tilbake til 512GB RAM.

Tor,  27.11.09 15:33

Vi ser på parallellisering nå. Jeg skrev mitt første parallelle program i går. Brukte to kjerner til å regne ut summen av alle heltall fra 0 til 10000000. Sparte 0,25 sekunder i forhold til å bruke 1 kjerne, hvis du ser bort fra at det tok meg 45 minutter å skrive programmet, mot 10 sekunder for 1 kjerne.

B,  28.11.09 13:17

Godt poeng, men tradeoff is a part of the equation.

Å skrive optimal paralell kode er nok ikke bare enkelt.
Skrev du det i python??
Hvis man skriver det i C kan man jo kontrollere bruken av minne og klokkesykler mer.
Og bruke f.eks register static float k_var = 0.123123. Hvis det er en konstant som brukes av flere deloppgaver. Da sparer den flere operasjoner bare i å slippe å laste den inn i registeret hele tiden.

B,  28.11.09 13:19

jeg er litt usikker, men jeg tror register static er litt smør på flesk.

Tor,  28.11.09 13:44

Jeg brukte python og mpi4py.

B,  29.11.09 12:53

Jeg kjenner ikke til mpi4py, men av og til er python optimalisering med feil verktøy som å øse vann i en foss.

B,  29.11.09 13:12

http://heim.ifi.uio.no/~knutm/geilo2008/seland.pdf
Tor,  11.07.12 00:02

Interessant å lese hvordan jeg tenkte om slike ting for tre år siden. Vi er nå i ferd med å publisere/har publisert artikler der vi bruker denne metoden, og løsningen ble åpenbart ikke å kjøpe én boks fra komplett med 512 GB ram, men derimot å bruke smarte triks for å få ned minnebruken litt, pluss å moderere systemstørrelsen litt. Stort sett greier vi oss med under 20 GB, og der vi trenger mer er det åpenbart MPI og ScaLAPACK på en superadatamaskin som er løsningen.

Forøvrig, i dag får man hovedkort på komplett som takler 512 GB ram, men det har dessverre bare 16 minnespor, som betyr at man må ha 32 GB-brikker for å fylle det, og så store brikker selger ikke komplett. La meg forøvrig legge til at jeg finner det ekstremt irriterende at ram selges i sett, da dette gjør det mye vanskeligere å finne frem når man faktisk leter etter 32 GB-brikker, og ikke 8 4 GB-brikker. Uansett, amazon selger 32 GB-brikker til 1700 kroner stykket, så for 70000 kroner får man i dag en PC med 512 GB ram, mens man for tre år siden måtte hoste opp 130000 for en med 144 GB. Moores lov FTW!