123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- Kompilering: `javac *.java`
- Kjøring: `java Main <tall>`
-
- # Eksempelutskrift
-
- I filen output.txt finner du et eksempel på å kjøre `java Main 200000000`.
-
- # Tider
-
- CPU: quad core Intel Xeon E31225 @ 3.1 GHz (ingen hyperthreading)
-
- 200 000 000:
- * Sekvensiell: 5.02s
- * Parallell: 1.73s (2.90x speedup)
-
- 20 000 000:
- * Sekvensiell: 274.08ms
- * Parallell: 147.10ms (1.86x speedup)
-
- 2 000 000:
- * Sekvensiell: 56.23ms
- * Parallell: 72.32ms (0.78x speedup)
-
- 200 000:
- * Sekvensiell: 23.59ms
- * Parallell: 23.28ms (1.01x speedup)
-
- 20 000:
- * Sekvensiell: 3.20ms
- * Parallell: 6.63ms (0.48x speedup)
-
- 2 000:
- * Sekvensiell: 270.98μs
- * Parallell: 5.00ms (0.05x speedup)
-
- ## Del C
-
- Jeg har et 2D-array kalt count2d. Tråd 0 skriver til count2d[0], 1 skriver til
- count2d[1], etc. Dette gjør samme algoritme som den sekvensielle del C, men
- bruker et count-array laget av del B med kun den delen av arrayet som
- tråden er ansvarlig for. Den ferdige akkumulerte verdien ender opp i et annet
- 2D-array som heter accumulated. Når alle trådene er ferdig med dette,
- går main-tråden igjennom alle arrayene i accumulated-arrayet, og samler
- verdiene i et count-array (som inni trådene heter globalCount).
- Etter at det er ferdig er vi klare til å sette igang del D i alle trådene.
|