INF2440 Effektiv Parallellprogrammering Uke 2 våren tidtaking. Eric Jul PSE Inst. for informatikk

Størrelse: px
Begynne med side:

Download "INF2440 Effektiv Parallellprogrammering Uke 2 våren tidtaking. Eric Jul PSE Inst. for informatikk"

Transkript

1 INF2440 Effektiv Parallellprogrammerig Uke 2 våre tidtakig Eric Jul PSE Ist. for iformatikk 1

2 Oppsummerig Uke1 Vi har gjeomgått hvorfor vi får flere-kjere CPUer Tråder er måte som et Javaprogram bruker for å skape flere uavhegige parallelle programflyter i tillegg til mai-tråde Tråder deler felles adresserom (data og kode) Vi ka gjøre mage typer feil, me det er alltid e løsig. É stygg feil vi ka gjøre: Samtidig oppdaterig (skrivig) på delte data, på samme variabel (eks: i++) Samtidig skrivig på e variabel må sykroiseres: Alle objekter ka yttes som e sykroiserigsvariabel, og da ka vi bruke ete e sychroized metode (treigt)for å gjøre det, eller objekter av spesielle klasser som: CyclicBarrier Semaphore (udervises Uke2) Lock De har metoder som await() eller lock(), som gjør at tråder evt. må vete. 2

3 Tråder i Java (lett revidert og kompilerbar ) E tråd er é programflyt, dvs. e serie med istruksjoer som oppfører seg som ett program og kjører på e kjere Det ka godt være (lagt) flere tråder e det er kjerer. E tråd er ofte implemetert i form av e idre klasse i de klasse som løser problemet vårt (da får de greit felles data): import java.util.cocurret.*; class Problem { it [] fellesdata ; // dette er felles, delte data for alle trådee public static void mai(strig [] args) { Problem p = ew Problem(); // MÅ alltid lage ett objekt av de ytre klasse p.utfoer(); // før det lages objekter av idre klasser } void utfoer () { Thread t = ew Thread(ew Arbeider()); t.start(); } class Arbeider implemets Ruable { it i, lokaldata; // dette er lokale data for hver tråd public void ru() { // dee kalles år tråde er startet } } // ed idre klasse Arbeider } // ed class Problem 3

4 Flere tråder samtidig oppdaterig av e variabel : i Alle trådee (1,2 20, 200 og 2000) prøver samtidig å utføre i gager Vi skal se på programmet som produserte dette: Atall tråder Riktig svar: Svar 1.gag 2. gag Tap 1.gag 2. gag 0 % 0% 0% 20,4% 35,5% 14,6% 15,3% 17,7% 14,9% 17,5% 4

5 Programmet som laget tabelle import java.util.*;l kode for mai-tråde import easyio.*; kode for trådee import java.util.cocurret.*; /** Viser at maglede sykroiserig på ett felles objekt gir feil bare loesig 1) er riktig'*/ public class Parallell { it tall; // Sum av at 'attraader' traader teller opp dee CyclicBarrier b ; // sikrer at alle er ferdige aar vi tar tid og sum it attraader, atgager,svar; // Etter summerig: riktig svar er:attraader*atgager //sychroized void ikrtall(){ tall++;} void ikrtall() { tall++;} // 1) OK fordi sykroiserer på samme objekt p // 2) - feil public static void mai (Strig [] args) { if (args.legth < 2) { System.out.pritl("bruk >java Parallell <attraader> <= atgager>"); }else{ it atkjerer = Rutime.getRutime().availableProcessors(); System.out.pritl("Maskie har "+ atkjerer + " prosessorkjerer."); Parallell p = ew Parallell(); p.attraader = Iteger.parseIt(args[0]); p.atgager = Iteger.parseIt(args[1]); p.utfor(); } } // ed mai 5

6 void utskrift (double tid) { svar = atgager*attraader; System.out.pritl("Tid "+atgager+" kall * "+ attraader+" Traader ="+ Format.alig(tid,9,1)+ " ms,"); System.out.pritl(" sum:"+ tall +", tap:"+ (svar -tall)+" = "+ Format.alig( ((svar - tall)*100.0 /svar),12,6)+"%"); } // ed utskrift void utfor () { // Dee kjøres bare av mai-tråde b = ew CyclicBarrier(atTraader+1); log t = System.aoTime(); //+1, ogsaa mai // start klokke } // utfor for (it j = 0; j< attraader; j++) { ew Thread( ew Para(j) ).start(); } try{ // mai thread veter på at alle trådee er ferdige b.await(); } catch (Exceptio e) {retur;} double tid = (System.aoTime()-t)/ ; utskrift(tid); 6

7 class Para implemets Ruable{ it id; Para(it iid) { this.id =id;} public void ru() { // Kjøres av hver tråd for (it j = 0; j< atgager; j++) { ikrtall(); } try { // wait o all other threads + mai b.await(); } catch (Exceptio e) {retur;} } // ed ru // void ikrtall() { tall++;} // 3) Feil - usykroisert // sychroized void ikrtall(){ tall++;} // 4) Feil kallee sykroiserer på // hvert sitt objekt } // ed class Para } // END class Parallell 7

8 Hvilke typer problem eger seg for parallelle løsiger? Lad os kjøre programmet! (Iteraktive demo av programmet med og ute sykroiserig). 8

9 Hvilke typer problem eger seg for parallelle løsiger? 1. Kompleksitetsklasse: O(1), O(log), O(), O(*log), O( 1,5 ), O( 2 ),, P,..., NP 2. Størrelse på data: Sorterer vi 100 eller 100 millio tall? Multipliserer vi to 4x4 matriser eller to 2000x2000 matriser? 3. Må vi sykroisere på delte data, må atall sykroiseriger være (mist) e orde lavere e algoritme pga. mye overhead ved sykroiserig. 4. Å starte flere tråder tar ca. 3-5 millisekuder de første tråde tar legst tid. Dette skal vi se på utover i kurset, med utak av O(1) (kostat eksekverigstid uavhegig av datamegde som klart ikke eger seg for parallelliserig) ka det meste gis e mer effektiv parallell implemetasjo hvis er stor ok (eller sagt på e ae måte: hvis kjøretide er > 10 millisekuder). 9

10 Pla for reste av Uke2 JVM I) Om å avslutte parallelle tråder La dem bli ferdige med ru-metode, Hvorda teste at alle er ferdige? Sykroisert avslutig (Semaphore, CyclicBarrier) ew Thread joi() avslutig II) Ulike sykroiserigsprimitiver Vi skal bare lærte oss oe få - ett tilstrekkelig sett III) Hvor mye tid bruker parallelle programmer JIT-kompilerig Overhead ved start Sykroiserig uderveis i beregigee Operativsystem og søppeltømmig IV) Lover om kjøretid Amdahl lov Gustafsos lov 10

11 1) Avslutig med e CyclicBarrier E CyclicBarrier (cb= ew CyclicBarrier (+1)) Er tekt som et vetested, e bom/grid for et atall (i dette tilfellet for +1) tråder - de ye trådee + mai. Alle må vete år de sier sier cb.await() til sistema akommer køe, og da ka alle fortsette. Trådee ka da være ferdige med e beregig ka selv avslutte med å bli ferdige med si ru() -kode. Mai-tråde forsetter, og vet at de adre trådee er ferdige. Mai-tråde ka da bruke resultatee fra trådee. De sykliske barriere cb er da strakt klar til å køe ye tråder som sier cb.await(),.. osv cb.await() sies ie i e try-catch blokk

12 2) Avslutig med e Semaphore E Semaphore (sf = ew Semaphore(-+1)) Admiistrerer (i dette tilfellet) +1 stk. tillatelser. To setrale primitiver: sf.acquire() ber om e tillatelse. Atall tillatelser i sf blir da 1 midre hvis atallet er >0. Hvis det ikke er oe ledig tillatelse, må tråde vete i e kø (ie i e try-catch blokk) sf.release() gir é tillatelse tilbake til semafore sf. Ikke try-catch blokk (De tillatelse som gis tilbake behøver ikke vært fått ved hjelp av aquire() ; de er bare et tall). Avlutig med Semaphore sf: Maitråde sier sf.acquire() og må vete på at det er mist e tillatelse i sf. Alle de ye trådee sier sf.release() år de termierer, og år de siste sier sf.release() blir det 1 tillatelse ledig og mai fortsetter. Ikke syklisk.

13 3) Avslutig med joi() - eklest Logikke er her at i de rutie hvor alle trådee lages, legges de også i i e array. Mai-tråde legger seg til å vete på de tråde som de har peker til skal termiere selv. Veter på alle trådee etter tur at de termierer: // mai tråde i kostruktøre Thread [] t = ew Thread[]; for (it i = 0; i < ; i++) { t[i] = ew Thread (ew Arbeider(..)); t[i].start(); } // mai vil vete her til trådee er ferdige for(it i = 0; i < ; i++) { try{ t[i].joi(); }catch (Exceptio e){retur;}; }.. 13

14 II) Mage ulike sykroiserigs primitiver Vi skal bare lære oe få! java.util.cocurret Classes AbstractExecutorService Semaphore ArrayBlockigQueue SychroousQueue CocurretHashMap ThreadLocalRadom CocurretLikedDeque ThrExecutors CocurretLikedQueue ForkJoiPool CocurretSkipListMap ForkJoiTask CocurretSkipListSet ForkJoiWorkerThread CopyOWriteArrayList CopyOWriteArraySet FutureTask CoutDowLatch LikedBlockigDeque CyclicBarrier LikedBlockigQueue DelayQueue LikedTrasferQueue Exchager Phaser ExecutorCompletioService PriorityBlockigQueue ecutor RecursiveActio eadpoolexecutor RecursiveTask ThreadPoolExecutor.AbortPolicy ScheduledThreadPoolEx ThreadPoolExecutor.CallerRusPolicy ThreadPoolExecutor.DiscardOldestPolicy ThreadPoolExecutor.DiscardPolicy Iterfaces BlockigDeque BlockigQueue Callable CompletioService CocurretMap CocurretNavigableMap Delayed Executor ExecutorService ForkJoiPool.ForkJoiWorkerThreadFacto ry ForkJoiPool.MaagedBlocker Future RejectedExecutioHadler RuableFuture RuableScheduledFuture ScheduledExecutorService ScheduledFuture ThreadFactory TrasferQueue 14

15 java.util.cocurret.atomic De har samme virkig (sematikk) som volatile variable (forklares seere), me ka gjøre mer sammesatte operasjoer. Mye raskere e sychroized methods. Eksempel på operasjoer i AtomicItegerArray: it it it void Classes AtomicBoolea AtomicIteger AtomicItegerArray AtomicItegerFieldUpdater AtomicLog AtomicLogArray AtomicLogFieldUpdater AtomicMarkableReferece AtomicReferece AtomicRefereceArray AtomicRefereceFieldUpdater AtomicStampedReferece get(it i) Gets the curret value at positio i. getadadd(it i, it delta) Atomically adds the give value to the elemet at idex i. getaddecremet(it i) Atomically decremets by oe the elemet at idex set(it i, it ewvalue) Sets the elemet at positio i to the give value. 15

16 Vi skal bare lære ett fåtall av dette Her er de vi skal kosetrere oss om: ew Thread joi() sychroized method Semaphore aquire() og release() CyclicBarrier await() ExecutorService pool = Executors.ewFixedThreadPool(k); med Futures - forklares seere AtomicItegerArray get(), set(), getadadd(),.. ReetratLock ( i pakke: java.util.cocurret.locks) volatile variable - forklares seere Alle de sykroiseriger vi treger, ka gjøres med disse! De fleste adre har sie måter å gjøre det på, me ma har eppe tid til å lære seg alle. Bedre å bli flik i et lite og tilstrekkelig sett av sykroiserigsprimitiver, e halvgod i de fleste. 16

17 II) Tidtagig JIT kompilerig Hvor mye betyr det egetlig Operativsystemet (Widows eller Liux) Er de like raske? Søppeltømmig i Java Skjer uder kjørig (med i tidee) 17

18 Tidsmåliger og JIT (Just I Time) -kompilerig Tilbake til kompilerige av et Java-program: javac kompilerer først vårt java-program til e.class fil. som består av byte-kode java (JVM) starter vår program i mai(), me følger med. 1.Kalles e metode flere gager, kompileres de over fra bytekode til maskikode. 2. Kalles de eda mage gager ka dee kode igje optimaliseres (flere gager) mai( ). Vårt program kjører først iterpretert (byte-kode tolkes). Blir JIT-kompilert (mes kode kjører) e eller flere gager. Går mye raskere 18

19 Optimaliserg ett eksempel Origial kode class A { B b; public void ewmethod() { y = b.get();...do stuff... z = b.get(); sum = y + z; } } class B { it value; fial it get() { retur value; } } 1) Ilie get public void ewmethod() { y = b.value;...do stuff... z = b.value; sum = y + z; } 3) Fjer overflødige variable public void ewmethod() { y = b.value;...do stuff... y = y; sum = y + y; } 2) Fjer overflødige les public void ewmethod() { y = b.value;...do stuff... z = y; sum = y + z; } 4) Fjer død kode public void ewmethod() { y = b.value;...do stuff... sum = y + y; } 19

20 Mediatider for fimax fra ukeoppgavee: = Vi ser at kjøretidee (para) syker dramatisk fra 1.ste til este kjørig. Pga JIToptimaliserig M:\INF2440Para\FiMax>java FiMaxMulti Kjørig:0, at kjerer:8, attråder:8 Max para = a:9853, paa: msek., aosek/: Max sekv = a:9853, paa: 0.13 msek., aosek/: Kjørig:1, at kjerer:8, attråder:8 Max para = a:9853, paa: 0.20 msek., aosek/: Max sekv = a:9853, paa: 0.11 msek., aosek/: Kjørig:2, at kjerer:8, attråder:8 Max para = a:9853, paa: 0.26 msek., aosek/: Max sekv = a:9853, paa: 0.11 msek., aosek/: Kjørig:3, at kjerer:8, attråder:8 Max para = a:9853, paa: 0.21 msek., aosek/: Max sekv = a:9853, paa: 0.24 msek., aosek/: Kjørig:4, at kjerer:8, attråder:8 Max para = a:9853, paa: 0.22 msek., aosek/: Max sekv = a:9853, paa: 0.20 msek., aosek/: Kjørig:5, at kjerer:8, attråder:8 Max para = a:9853, paa: 0.25 msek., aosek/: Max sekv = a:9853, paa: 0.23 msek., aosek/: Kjørig:6, at kjerer:8, attråder:8 Max para = a:9853, paa: 0.20 msek., aosek/: Max sekv = a:9853, paa: 0.21 msek., aosek/: Media seq time: 0.205, media para time: 0.250, Speedup: 0.82, =

21 M:\INF2440Para\FiMax>java FiMaxMulti Kjørig:0, at kjerer:8, attråder:8 Max para = a: , paa: msek., aosek/: 2.19 Max sekv = a: , paa: 7.65 msek., aosek/: 0.76 = 10 mill Kjørig:1, at kjerer:8, attråder:8 Max para = a: , paa: 3.04 msek., aosek/: 0.30 Max sekv = a: , paa: 5.95 msek., aosek/: 0.59 Kjørig:2, at kjerer:8, attråder:8 Max para = a: , paa: 3.20 msek., aosek/: 0.32 Max sekv = a: , paa: 7.33 msek., aosek/: 0.73 Kjørig:3, at kjerer:8, attråder:8 Max para = a: , paa: 2.67 msek., aosek/: 0.27 Max sekv = a: , paa: 5.10 msek., aosek/: 0.51 Kjørig:4, at kjerer:8, attråder:8 Max para = a: , paa: 2.88 msek., aosek/: 0.29 Max sekv = a: , paa: 5.57 msek., aosek/: 0.56 Media seq time: 5.945, media para time: 3.042, Speedup: 1.95, =

22 M:\INF2440Para\FiMax>java -Xit FiMaxMulti Kjørig:0, at kjerer:8, attråder:8 Max para = a: , paa: msek., aosek/: 5.31 Max sekv = a: , paa: msek., aosek/: Kjørig:1, at kjerer:8, attråder:8 Max para = a: , paa: msek., aosek/: 4.49 Max sekv = a: , paa: msek., aosek/: JITkompilerig avslått : > java Xit.. = 10 mill Kjørig:2, at kjerer:8, attråder:8 Max para = a: , paa: msek., aosek/: 3.38 Max sekv = a: , paa: msek., aosek/: Kjørig:3, at kjerer:8, attråder:8 Max para = a: , paa: msek., aosek/: 5.36 Max sekv = a: , paa: msek., aosek/: Kjørig:4, at kjerer:8, attråder:8 Max para = a: , paa: msek., aosek/: 5.01 Max sekv = a: , paa: msek., aosek/: Media seq time: , media para time: , Speedup: 2.75, =

23 M:\INF2440Para\FiMax>java FiM Kjoerig:0, at kjerer:8, attraader:8 Max verdi parallell i a: , paa: ms. Max verdi sekvesiell i a: , paa: ms. = 100 mill Kjoerig:1, at kjerer:8, attraader:8 JIT-kompilerig +optimaliserig Max verdi parallell i a: , paa: ms. Max verdi sekvesiell i a: , paa: ms. Kjoerig:2, at kjerer:8, attraader:8 Max verdi parallell i a: , paa: ms. Max verdi sekvesiell i a: , paa: ms. Søppel-tømmig Kjoerig:3, at kjerer:8, attraader:8 Max verdi parallell i a: , paa: ms. Max verdi sekvesiell i a: , paa: ms. Kjoerig:4, at kjerer:8, attraader:8 Max verdi parallell i a: , paa: ms. Max verdi sekvesiell i a: , paa: ms. Media sequetial time: , media parallel time: , = , Speedup:

24 Hva betyr dette for tidsmåligee Første gage vi gjører er tide vi måler e sum av: Først litt iterpreterig av bytekode Så oversettig(kompilerig) av hyppig brukte metoder til maskikode kjørig av reste av programmet dels i maskikode. Adre gag vi kjører, ka følgede skje: JVM fier at oe av maskikompilerte metodee våre må optimaliseres ytterligere Kjøretide syker ytterligere Tredje gag er som oftest optimaliseriga ferdig, me ytterligere optimaliserig ka bli gjort Tidtakige vår må edres! Vi kjører det sekvesielle og parallelle programmet f.eks 9 gager i e løkke, oterer alle kjøretider i to arrayer som så sorteres og vi velger mediaverdie = a[a.legth/2] Du får aldri samme svaret to gager mye variasjo!! 24

25 FiMax, 3 ulike kjøriger (samme parametre, varierer atall tråder: 8, 16, 4 ) Uke2>java FiM Kjørig:0, at kjerer:8, attråder:8 Max verdi parallell i a:999216, paa: ms. Max verdi sekvesiell i a:999216, paa: ms. Kjørig:1, at kjerer:8, attråder:8 Max verdi parallell i a:999216, paa: ms. Max verdi sekvesiell i a:999216, paa: ms. Kjørig:8, at kjerer:8, attråder:8 Max verdi parallell i a:999216, paa: ms. Max verdi sekvesiell i a:999216, paa: ms. Media sequetial time: , media parallel time: , Speedup: 1.26, = Uke2>java FiM Kjørig:0, at kjerer:8, attråder:16 Max verdi parallell i a:999216, paa: ms. Max verdi sekvesiell i a:999216, paa: ms. Uke2>java FiM Kjørig:0, at kjerer:8, attråder:4 Max verdi parallell i a:999216, paa: ms. Max verdi sekvesiell i a:999216, paa: ms. Kjørig:1, at kjerer:8, attråder:4 Max verdi parallell i a:999216, paa: ms. Max verdi sekvesiell i a:999216, paa: ms. Kjørig:2, at kjerer:8, attråder:4 Max verdi parallell i a:999216, paa: ms. Max verdi sekvesiell i a:999216, paa: ms. Kjørig:8, at kjerer:8, attråder:4 Max verdi parallell i a:999216, paa: ms. Max verdi sekvesiell i a:999216, paa: ms. Media sequetial time: , media parallel time: , Speedup: 0.88, = Kjørig:1, at kjerer:8, attråder:16 Max verdi parallell i a:999216, paa: ms. Max verdi sekvesiell i a:999216, paa: ms. Kjørig:8, at kjerer:8, attråder:16 Max verdi parallell i a:999216, paa: ms. Max verdi sekvesiell i a:999216, paa: ms. Media sequetial time: , media parallel time: , Speedup: 0.90, =

26 «Aldri» samme resultatet to gager Uke2>java FiM at kjerer:8, attråder:8, = 1mill Med atall kjøriger for media = 9 1) Speedup: 0.68, = ) Speedup: 0.96, = ) Speedup: 0.84, = ) Speedup: 0.71, = ) Speedup: 1.06, = ) Speedup: 1.26, = Med atall kjøriger for media = 21 7) Speedup: 1.00, = ) Speedup: 0.84, = ) Speedup: 0.88, = ) Speedup: 1.75, = ) Speedup: 0.87, = ) Speedup: 1.11, = ) Speedup: 1.03, =

27 Koklusjo på JIT-kompilerig JIT-kompilerig ka skrues av med >java Xit MittProg.. Brukes bare for debuggig JIT kompilerig ka gi 10 til 30 gager så rask eksekverig for lite (e god del mer for stor ) Første, adre (og tredje) kjørig er tidsmessig sterkt misvisede Vi må: Kjøre programmet i e løkke f.eks 9 (eller 7 eller 11) gager Legge tidee i hver si array (sekvesielt og parallell tid) Sortere arrayee Ta ut mediae (elemet a.legth/2), som blir vår tidsmålig 27

28 Dette måler tidee for 9 tråder kjørt etter hveradre import java.util.cocurret.*; import java.util.*; class Problem2 { it [] fellesdata ; // dette er felles, delte data for alle trådee double [] tidee ; it at, svar; public static void mai(strig [] args) { ( ew Problem()).utfoer(args); } void utfoer (Strig [] args) { at = ew Iteger(args[0]); fellesdata = ew it [at]; tidee = ew double[9]; for (it m = 0; m <9; m++) { log tid = System.aoTime(); Thread t = ew Thread(ew Arbeider()); t.start(); try{t.joi();}catch (Exceptio e) {retur;} tidee[m] = (System.aoTime() -tid)/ ; System.out.pritl("Tid for "+m + ", tråd:"+tidee[m]+«ms"); } Arrays.sort(tidee); System.out.pritl("Media med svar:"+svar+", for trådee:"+tidee[(tidee.legth)/2]+" ms"); } // ed utfoer class Arbeider implemets Ruable { it i,lokaldata; // dette er lokale data for hver tråd public void ru() { it sum =0; for (it i = 0; i < at; i++) sum +=fellesdata[i]; svar =sum; } } // ed idre klasse Arbeider } // ed class Problem 28

29 M:\INF2440Para\Powerpoit\Uke2>java Problem Tid for 0, tråd:22.26 ms Tid for 1, tråd: 1.12ms Tid for 2, tråd: 3.19ms Tid for 3, tråd: 0.58ms Tid for 4, tråd: 0.65ms Tid for 5, tråd: 0.49ms Tid for 6, tråd: 0.48ms Tid for 7, tråd: 0.53ms Tid for 8, tråd: 0.85ms Media med svar:0, for trådee:0.65 ms 29

30 Hva med operativsystemet: Liux og Widows har om lag like rask implemetasjo av Java og trådprogrammerig, Dag Lagmyhr testet to helt like maskier med hhv. Liux og Widows, og resultatee tidsmessig (mediaer) var este helt like, me Ulike maskier som Ifis store servere (diamat, safir,..) har e ae Liux og e oe lagsommere ytelse for korte, trådbaserte programmer. 30

31 Hva med søppeltømmig garbage collectio: Søppeltømmig (=oppryddig i lageret og fjerig av objekter vi ikke leger ka bruke) ka slå til år som helst uder kjørig: Kjørig:2, at kjerer:8, attråder:8 Max para = a:9853, paa: 0.35 msek., aosek/: Max sekv = a:9853, paa: 0.01 msek., aosek/: 1.36 Kjørig:3, at kjerer:8, attråder:8 Max para = a:9853, paa: 0.57 msek., aosek/: Max sekv = a:9853, paa: 0.01 msek., aosek/: 0.66 Kjørig:4, at kjerer:8, attråder:8 Max para = a:9853, paa: 0.43 msek., aosek/: Max sekv = a:9853, paa: 0.01 msek., aosek/: 1.33 Kjørig:5, at kjerer:8, attråder:8 Max para = a:9853, paa: 0.49 msek., aosek/: Max sekv = a:9853, paa: 0.01 msek., aosek/:

32 Amdahl lov for parallelle beregiger Amdahl lov: Har du seq adel sekvesiell kode og da p adel parallelliserbar kode i et parallelt program, seq+p=1, er de største speedup S du ka få med k kjerer: Når k, vil S!!"#. + = -./( ) -./ (#9:966266) =! 12;'#/3 =!!"#'#/3 Er p=0.9, så er S 10 uasett hvor mage kjerer du har, og! har du bare 50, er S = = 8,5.!"$.&'$,&/*$ Amdahls lov er pessimistisk- atar fast størrelse på problemet «Hvis du først har brukt 10% av tida på e sekvesiell del, så ka reste av programmet ikke gå fortere e 0.00 sekuder uasett hvor mage prosessorer du bruker på det. Dvs. at speedup 10» 32

33 Amdahl for ulike verdier av p 33

34 Amdahl viktig å parallellisere største del 34

35 Gustafsos lov for parallelle beregiger La S være speedup, P atall kjerer og α være adel sekvesiell kode (tidsmessig), så er: S(P) = P α (P 1) Parallell løsig er:! + # (a = sekvesiell tid, b = parallell tid) Sekvesiell løsig er da:! + $ # Speedup er da: &'( ) &') &, og har at α = &') og da er: +, =! + $ #! + # =!! + # + $ #! + # = α + P #! + # = α + P &')0& &') = α + P 1 α = «Hvis du tidligere brukte 1 time på å løse et problem sekvesielt, vil du å også bruke 1 time på å løse et større, mer øyaktig problem parallelt, da med større speedup for eksempel i meteorologi» 35

36 S x = x a % 1, 36

37 Sammeligig av Amdahl og Gustafso + ege betraktiger Amdahl atar at oppgave er fast av e gitt legde() Gustafso atar at du med parallelle maskier løser større problemer (større ) og da blir de sekvesielle dele midre. Mi betraktig: 1. E algoritme består av oe sekvesielle deler og oe parallelliserbare deler. 2. Hvis de sekvesielle delee har lavere orde f.eks O(log ), me de parallelle har e større orde eks O() så vil de parallelle delee bli e stadig større del av kjøretida hvis øker (Gustafso) 3. Hvis de parallelle og sekvesielle delee har samme orde, vil et større problem ha samme sekvesielle adel som et midre problem (Amdahl). 4. I tillegg kommer alltid et fast overhead på å starte k tråder (1-4 ms.) Algoritmer vi skal jobbe med er mer av type 2 (Gustafso) e type 3(Amdahl) me vi har alltid overhead, så små problemer løses best sekvesielt. Koklusjo: For store problemer bør vi ha håp om å skalere ær lieært med atall kjerer hvis ikke vi får kø og forsikelser år alle kjeree skal lese/skrive i lageret. 37

38 Hva har vi sett på i Uke2 I) Tre måter å avslutte tråder vi har startet. joi(), Semaphor og CyclicBarrier. II) Mage ulike sykroiserigsprimitiver Vi skal bare lærte oss oe få - ett tilstrekkelig sett III) Hvor mye tid bruker parallelle programmer JIT-kompilerig, Overhead ved start, Sykroiserig, Operativsystem og søppeltømmig, Bruk mediatida av flere kjøriger IV) Lover om Kjøretid Amdahl lov Gustafsos lov V) Samtidig skrivig i aboelemeter i e array er OK. 41

INF2440, Uke 3, våren 2018 Regler for parallelle programmer, mer om cache og Radix-algoritmen. Eric Jul PSE, Inst. for informatikk

INF2440, Uke 3, våren 2018 Regler for parallelle programmer, mer om cache og Radix-algoritmen. Eric Jul PSE, Inst. for informatikk INF2440, Uke 3, våre 2018 Regler for parallelle programmer, mer om cache og Radix-algoritme Eric Jul PSE, Ist. for iformatikk 1 Hva har vi sett på i Uke2 I) Tre måter å avslutte tråder vi har startet.

Detaljer

INF2440 Uke 5, våren2018. Eric Jul PSE Inst. for informatikk

INF2440 Uke 5, våren2018. Eric Jul PSE Inst. for informatikk INF2440 Uke 5, våre2018 Eric Jul PSE Ist. for iformatikk 1 Hva så vi på i Uke4 1. Kommetarer om matrise-multiplikasjo 2. Hvorfor vi ikke bruker PRAM modelle for parallelle beregiger som skal gå fort. 3.

Detaljer

INF2440 Effektiv parallellprogrammering Uke 2 -, våren2015 - tidtaking. Arne Maus PSE, Inst. for informatikk

INF2440 Effektiv parallellprogrammering Uke 2 -, våren2015 - tidtaking. Arne Maus PSE, Inst. for informatikk INF2440 Effektiv parallellprogrammering Uke 2 -, våren2015 - tidtaking Arne Maus PSE, Inst. for informatikk 1 Oppsummering Uke1 Vi har gjennomgått hvorfor vi får flere-kjerne CPUer Tråder er måten som

Detaljer

INF2440 Uke 4, v2018 Om å samle parallelle svar, matrisemultiplikasjon og The Java Memory Model. Eric Jul PSE, Inst.

INF2440 Uke 4, v2018 Om å samle parallelle svar, matrisemultiplikasjon og The Java Memory Model. Eric Jul PSE, Inst. INF2440 Uke 4, v2018 Om å samle parallelle svar, matrisemultiplikasjo og The Java Memory Model Eric Jul PSE, Ist. for iformatikk 1 Hva så vi på i uke 3 1. Presiserig av hva som er pesum 2. Samtidig skrivig

Detaljer

INF2440 Effektiv parallellprogrammering Uke 1, våren Eric Jul Professor PSE Institutt for Informatikk

INF2440 Effektiv parallellprogrammering Uke 1, våren Eric Jul Professor PSE Institutt for Informatikk INF2440 Effektiv parallellprogrammerig Uke 1, våre 2018 Eric Jul Professor PSE Istitutt for Iformatikk 1 Litt om Eric Ph.D. Uiversity of Washigto, 1989 Dask-amerikaer Bor i Damark pedler til Oslo ca 3-4

Detaljer

IN3030 Uke 12, v2019. Eric Jul PSE, Inst. for informatikk

IN3030 Uke 12, v2019. Eric Jul PSE, Inst. for informatikk IN3030 Uke 12, v2019 Eric Jul PSE, Ist. for iformatikk 1 Hva skal vi se på i Uke 12 Review Radix sort Oblig 4 Text Program Parallellizig 2 Oblig 4 Radix sort Parallelliser Radix-sorterig med fra 1 5 sifre

Detaljer

INF3030 Uke 7, våren Eric Jul PSE Inst. for informatikk

INF3030 Uke 7, våren Eric Jul PSE Inst. for informatikk INF3030 Uke 7, våre 2019 Eric Jul PSE Ist. for iformatikk 1 Hva så vi på i uke 6 1. Eratosthees sil 2. Kokker og Kelere 3. Cocurrecy: De første to av tre måter å programmere moitorer i Java eksemplifisert

Detaljer

INF3030 Uke 6, våren Eric Jul PSE Inst. for informatikk

INF3030 Uke 6, våren Eric Jul PSE Inst. for informatikk INF3030 Uke 6, våre 2019 Eric Jul PSE Ist. for iformatikk 1 Å dele opp algoritme Kode består e eller flere steg; som oftest i form av e eller flere samliger av løkker (som er ekle, doble, triple..) Vi

Detaljer

IN3030 Uke 5, våren Eric Jul PSE Inst. for informatikk

IN3030 Uke 5, våren Eric Jul PSE Inst. for informatikk IN3030 Uke 5, våre 2019 Eric Jul PSE Ist. for iformatikk 1 Hva så vi på i Uke4 1. Kommetarer om matrise-multiplikasjo 2. Hvorfor vi ikke bruker PRAM modelle for parallelle beregiger som skal gå fort. 3.

Detaljer

INF2440 Uke 6, våren Eric Jul PSE Inst. for informatikk

INF2440 Uke 6, våren Eric Jul PSE Inst. for informatikk INF2440 Uke 6, våre 2018 Eric Jul PSE Ist. for iformatikk 1 Hva så vi på i uke 5 (ku første forelesigstime) 1. Eda bedre Matrise-multipliserig 2. Modell2-kode for sammeligig av kjøretider på (ekle) parallelle

Detaljer

Tråder i Java Parallelle programmmer og programbiter

Tråder i Java Parallelle programmmer og programbiter Oversikt Tråder i Java Parallelle programmmer og programbiter Stei Gjessig, Ist. for iformatikk, Uiv. i Oslo Hva er parallelle programmer? Hvorfor parallelle programmer? Hvorda ka dette skje i e maski

Detaljer

Om Grafiske Bruker-Grensesnitt (GUI) Hvordan gjør vi det, to typer av vinduer? GUI (Graphical User Interface)-programmering

Om Grafiske Bruker-Grensesnitt (GUI) Hvordan gjør vi det, to typer av vinduer? GUI (Graphical User Interface)-programmering Uke9. mars 2005 rafisk brukergresesitt med Swig og awt Litt Modell Utsy - Kotroll Del I Stei jessig Ist for Iformatikk Uiv. i Oslo UI (raphical User Iterface)-programmerig I dag Hvorda få laget et vidu

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i : INF2440 Praktisk parallell programmering Eksamensdag : 2. juni 2014 Tidspunkter: 14.30 Oppgavesettet er på : 4 sider Vedlegg

Detaljer

n / ($$ n 0$$/ $ " 1! <! ')! $ : ; $.+ $.5.+ .!)/!/ ) $.) 6$ 7$, $.5.,.9+- 5.+ 8$ 7$, + - 5.

n / ($$ n 0$$/ $  1! <! ')! $ : ; $.+ $.5.+ .!)/!/ ) $.) 6$ 7$, $.5.,.9+- 5.+ 8$ 7$, + - 5. "# %% & ' ()*,"""). / " %% &%% / ( 0/ " 1 /(232.,..5. 6 7,.5.,. / : ; 5.. )// ).) 8 < ') < 6 6 8 < 8 8 7,.5.,.9 5. 5. 5. 5. 5.. 5..9 /.> DB(?/ ( / (.?/. /?(5@"""6(?( 5@""6 &. A8 6 (."B 3 8 6 ) ("?/& =

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Prøveeksamen i : INF2440 Praktisk parallell programmering Prøveeksamensdag : 26. mai 2014 Tidspunkter: 11.00 Utdeling av prøveeksamen 15:15

Detaljer

INF3030, Uke 3, våren 2019 Regler for parallelle programmer, mer om cache og Matrise-multiplikasjon. Arne Maus / Eric Jul PSE, Inst.

INF3030, Uke 3, våren 2019 Regler for parallelle programmer, mer om cache og Matrise-multiplikasjon. Arne Maus / Eric Jul PSE, Inst. INF3030, Uke 3, våren 2019 Regler for parallelle programmer, mer om cache og Matrise-multiplikasjon Arne Maus / Eric Jul PSE, Inst. for informatikk 1 Hva har vi sett på i Uke2 Én stygg feil vi kan gjøre:

Detaljer

INF NOV PARALLELL SORTERING. Arne Maus, PSE, Ifi

INF NOV PARALLELL SORTERING. Arne Maus, PSE, Ifi INF2220-2. NOV. 2017 PARALLELL SORTERING Arne Maus, PSE, Ifi 2 Dagens forelesning Hva er et parallelt program med tråder (i Java) Typer av parallelle programmer her vil vi ha raskere programmer Hva er

Detaljer

Vi lærte sist å lage vinduer. Om å lage et vindu. GUI (Graphical User Interface)-programmering. Inf 1010-2007 GUI - del 2

Vi lærte sist å lage vinduer. Om å lage et vindu. GUI (Graphical User Interface)-programmering. Inf 1010-2007 GUI - del 2 GUI (Graphical User Iterface)-programmerig If 1010-2007 GUI - del 2 Stei Gjessig Ist for Iformatikk Uiv. i Oslo Tidligere Hvorda få laget et vidu på skjerme Grafikk (tegig i viduet) Hvorda legge ulike

Detaljer

INF2440 Prøveeksamen, løsningsforslag, 20 mai Arne Maus PSE, Inst. for informatikk

INF2440 Prøveeksamen, løsningsforslag, 20 mai Arne Maus PSE, Inst. for informatikk INF2440 Prøveeksamen, løsningsforslag, 20 mai 2015 Arne Maus PSE, Inst. for informatikk 1 Prøveeksamen Er en modell av hva du får til eksamen: - like mange (+-1) oppgaver som eksamen og nesten samme type

Detaljer

Uke 12 IN3030 v2019. Eric Jul PSE-gruppa Ifi, UiO

Uke 12 IN3030 v2019. Eric Jul PSE-gruppa Ifi, UiO Uke 12 IN3030 v2019 Eric Jul PSE-gruppa Ifi, UiO Oblig 5 Kovekse Ihylliga Itroduksjo De kovekse ihylliga til pukter Oblig 5 Hva er det, defiisjo Hvorda ser de ut Hva brukes de til? Hvorda fier vi de? 24

Detaljer

INF2440 Effektiv parallellprogrammering Uke 1, våren Arne Maus PSE, Inst. for informatikk

INF2440 Effektiv parallellprogrammering Uke 1, våren Arne Maus PSE, Inst. for informatikk INF2440 Effektiv parallellprogrammering Uke 1, våren 2016 Arne Maus PSE, Inst. for informatikk 1 Hva vi skal lære om i dette kurset: Lage parallelle programmer (algoritmer) som er: Riktige Parallelle programmer

Detaljer

INF2440 Effektiv parallellprogrammering Uke 1, våren Arne Maus PSE, Inst. for informatikk

INF2440 Effektiv parallellprogrammering Uke 1, våren Arne Maus PSE, Inst. for informatikk INF2440 Effektiv parallellprogrammering Uke 1, våren 2017 Arne Maus PSE, Inst. for informatikk 1 Hva vi skal lære om i dette kurset: Lage parallelle programmer (algoritmer) som er: Riktige Parallelle programmer

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i: INF2440 Effektiv parallellprogrammering Eksamensdag: 2. juni 2015 Tidspunkter: 09.00 13.00 Oppgavesettet er på: 3 sider + 2 sider

Detaljer

IN1010 våren 2019 Onsdag 15. mai. Rask repetisjon av subklasser og tråder (pluss µ nytt)

IN1010 våren 2019 Onsdag 15. mai. Rask repetisjon av subklasser og tråder (pluss µ nytt) IN1010 våre 2019 Osdag 15. mai Rask repetisjo av subklasser og tråder (pluss µ ytt) Stei Gjessig Istitutt for iformatikk Uiversitetet i Oslo 1 Iledig Dette er 41 lysark som det ikke er mulig å gå gjeom

Detaljer

INF2440, Uke 3, våren2015 Regler for parallelle programmer, mer om cache og Radix-algoritmen. Arne Maus OMS, Inst. for informatikk

INF2440, Uke 3, våren2015 Regler for parallelle programmer, mer om cache og Radix-algoritmen. Arne Maus OMS, Inst. for informatikk INF2440, Uke 3, våren2015 Regler for parallelle programmer, mer om cache og Radix-algoritmen Arne Maus OMS, Inst. for informatikk 1 Hva har vi sett på i Uke2 I) Tre måter å avslutte tråder vi har startet.

Detaljer

INF2440 Eksamen 2016 løsningsforslag. Arne Maus, PSE ifi, UiO

INF2440 Eksamen 2016 løsningsforslag. Arne Maus, PSE ifi, UiO INF2440 Eksamen 2016 løsningsforslag Arne Maus, PSE ifi, UiO 1 Oppgave 1 (10 poeng) a) Beskriv meget kortfattet de to viktigste egenskapene ved tråder i et Java-program. 1. En tråd er sekvensielt programdel

Detaljer

INF2440, Uke 3, våren2014 Regler for parallelle programmer, mer om cache og Radix-algoritmen. Arne Maus OMS, Inst. for informatikk

INF2440, Uke 3, våren2014 Regler for parallelle programmer, mer om cache og Radix-algoritmen. Arne Maus OMS, Inst. for informatikk INF2440, Uke 3, våren2014 Regler for parallelle programmer, mer om cache og Radix-algoritmen Arne Maus OMS, Inst. for informatikk 1 Hva har vi sett på i Uke2 I) Tre måter å avslutte tråder vi har startet.

Detaljer

Hvordan gjør vi det, to typer av vinduer? Om Grafiske Bruker-Grensesnitt (GUI) GUI (Graphical User Interface)-programmering

Hvordan gjør vi det, to typer av vinduer? Om Grafiske Bruker-Grensesnitt (GUI) GUI (Graphical User Interface)-programmering GUI (Graphical User Iterface)-programmerig Uke 11 13. mars 2007 Grafisk brukergresesitt med Swig og awt Litt Modell Utsy - Kotroll Del I Stei Gjessig Ist for Iformatikk Uiv. i Oslo I dag (så lagt vi kommer)

Detaljer

I et Java-program må programmøren lage og starte hver tråd som programmet bruker. Er dette korrekt? Velg ett alternativ

I et Java-program må programmøren lage og starte hver tråd som programmet bruker. Er dette korrekt? Velg ett alternativ INF2440-V18 Information INF2440 Vår 2018 eksamen Dato og tid: 11. juni 2018 09:00. Varighet: 4 timer Hjelpemidler: Alt skriftlig materiale er tillatt. Ingen elektroniske hjelpemidler er tillatt. Powerpoint

Detaljer

INF1010 våren 2017 Torsdag 9. februar. Interface - Grensesnitt

INF1010 våren 2017 Torsdag 9. februar. Interface - Grensesnitt INF1010 våre 2017 Torsdag 9. februar Iterface - Gresesitt og litt om geeriske klasser og geeriske iterface hvis tid Stei Gjessig Dages hovedtema Egelsk: Iterface (også et Java-ord) Norsk: Gresesitt Les

Detaljer

INF1010 - våren 2007 16. januar, uke 3 - Oversikt og forutsetninger Java datastruktur-tegninger

INF1010 - våren 2007 16. januar, uke 3 - Oversikt og forutsetninger Java datastruktur-tegninger INF1010 - våre 2007 16. jauar, uke 3 - Oversikt og forutsetiger Java datastruktur-tegiger Stei Gjessig Ist. for iformatikk Nye temaer i INF1010 Fra problem til program Software Egieerig light, fasee i

Detaljer

INF2440 Uke 6, våren2014 Mer om oppdeling av et problem for parallellisering, mye om primtall + thread-safe. Arne Maus OMS, Inst.

INF2440 Uke 6, våren2014 Mer om oppdeling av et problem for parallellisering, mye om primtall + thread-safe. Arne Maus OMS, Inst. INF2440 Uke 6, våren2014 Mer om oppdeling av et problem for parallellisering, mye om primtall + thread-safe Arne Maus OMS, Inst. for informatikk 1 Oppsummering Uke1 Vi har gjennomgått hvorfor vi får flere-kjerne

Detaljer

INF3030 Uke 14, v2019. Eric Jul PSE, Inst. for informatikk

INF3030 Uke 14, v2019. Eric Jul PSE, Inst. for informatikk INF3030 Uke 14, v2019 Eric Jul PSE, Ist. for iformatikk 1 Reste av INF3030 v2019 (uke 13 ige forelesig) Dee forelesige (uke14) Mer om hvorda parallellisere ulike problemer 3. mai Ige forelesig jobbar med

Detaljer

INF2440 Uke 7, våren2017. Arne Maus PSE, Inst. for informatikk

INF2440 Uke 7, våren2017. Arne Maus PSE, Inst. for informatikk INF2440 Uke 7, våren2017 Arne Maus PSE, Inst. for informatikk 1 Hva så vi på i uke 6 1. Hva er raskest: Modell2 eller Modell3 kode? 2. Avslutning om matrisemultiplikasjon 1. Radvis (ikke kolonnevis) beregning

Detaljer

INF2440 Uke 4, våren2014 Avsluttende om matrisemultiplikasjon og The Java Memory Model + bedre forklaring Radix. Arne Maus OMS, Inst.

INF2440 Uke 4, våren2014 Avsluttende om matrisemultiplikasjon og The Java Memory Model + bedre forklaring Radix. Arne Maus OMS, Inst. INF Uke, våren Avsluttende om matrisemultiplikasjon og The Java Memory Model + bedre forklaring Radix Arne Maus OMS, Inst. for informatikk Hva så vi på i uke. Presisering av hva som er pensum. Samtidig

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i: INF2440 Effektiv parallellprogrammering Eksamensdag: 7. juni 2016 Tidspunkter: 09.00 13.00 Oppgavesettet er på: 3 sider + 1 side

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Prøveeksamen i: INF2440 Effektiv parallellprogrammering Prøveeksamensdag: 1. juni 2016 Tidspunkter: 09.00 16.00 Oppgavesettet er på: 4 sider

Detaljer

INF våren 2005 Uke 1, 11 jan - Praktisk, oversikt og forutsetninger

INF våren 2005 Uke 1, 11 jan - Praktisk, oversikt og forutsetninger INF1010 - våre 2005 Uke 1, 11 ja - Praktisk, oversikt og forutsetiger Stei Gjessig og Stei Michael Storleer Ist. for iformatikk Om INF1010 Forutsetter INF1000 (eller tilsvarede som Humit1700?) Lærebok

Detaljer

INF1010 våren 2005 Uke 3, 25. januar Arv og subklasser del I

INF1010 våren 2005 Uke 3, 25. januar Arv og subklasser del I Emeoversikt subklasser INF1010 våre 2005 Uke 3, 25. jauar Arv og subklasser del I Stei Gjessig Istitutt for iformatikk 1 Geeraliserig - spesialiserig Gjebruk av klasser Ved sammesetig (komposisjo) Ved

Detaljer

INF2440 Uke 4, v2017 Om å samle parallelle svar, matrisemultiplikasjon og The Java Memory Model + evt bedre forklaring Radix

INF2440 Uke 4, v2017 Om å samle parallelle svar, matrisemultiplikasjon og The Java Memory Model + evt bedre forklaring Radix INF Uke, v7 Om å samle parallelle svar, matrisemultiplikasjon og The Java Memory Model + evt bedre forklaring Radix Arne Maus PSE, Inst. for informatikk Hva så vi på i uke. Presisering av hva som er pensum.

Detaljer

Arne Maus OMS, Inst. for informatikk

Arne Maus OMS, Inst. for informatikk INF2440 Uke 5, våren2014 Sluttkommentarer om Matrisemultiplikasjon, Modellkode for parallelle systemer, Vranglås + evt. Oppdeling av et problem for parallellisering Arne Maus OMS, Inst. for informatikk

Detaljer

IN1010 våren 2018 Tirsdag 13. februar. Interface - Grensesnitt

IN1010 våren 2018 Tirsdag 13. februar. Interface - Grensesnitt IN1010 våre 2018 Tirsdag 13. februar Iterface - Gresesitt Stei Gjessig Dages hovedtema Egelsk: Iterface (også et Java-ord) Norsk: Gresesitt Les otatet Gresesitt i Java av Stei Gjessig To motivasjoer for

Detaljer

Jentetreff INF1000 Debugging i Java

Jentetreff INF1000 Debugging i Java Jentetreff INF1000 Debugging i Java Ingrid Grønlie Guren ingridgg@student.matnat.uio.no 11. november 2013 Kort om feilmeldinger i Java Java har to ulike type feilmeldinger som man kan få når man skriver

Detaljer

EKSAMEN Løsningsforslag

EKSAMEN Løsningsforslag ..4 EKSAMEN Løsigsforslag Emekode: ITF75 Dato: 6. desember Eme: Matematikk for IT Eksamestid: kl 9. til kl. Hjelpemidler: To A4-ark med valgfritt ihold på begge sider. Kalkulator er ikke tillatt. Faglærer:

Detaljer

Kap 19. Mer om parallelle programmer i Java og Kvikksort

Kap 19. Mer om parallelle programmer i Java og Kvikksort Arne Maus, 5.april 2011: Kap 19. Mer om parallelle programmer i Java og Kvikksort Parallell programmering er vanskelig, og det er derfor utviklet flere synkroniseringsmåter og biblioteker for mer strukturert

Detaljer

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister Dagens tema Lister og generiske klasser, del I Array-er og ArrayList (Big Java 6.1 & 6.8) Ulike lagringsformer (Collection) i Java (Big Java 15.1) Klasser med typeparametre («generiske klasser») (Big Java

Detaljer

INF Notater. Veronika Heimsbakk 10. juni 2012

INF Notater. Veronika Heimsbakk 10. juni 2012 INF1010 - Notater Veronika Heimsbakk veronahe@student.matnat.uio.no 10. juni 2012 1 Tilgangsnivåer 2 CompareTo Modifier Class Package Subclass World public Y Y Y Y protected Y Y Y N no modifier Y Y N N

Detaljer

Econ 2130 Forelesning uke 11 (HG)

Econ 2130 Forelesning uke 11 (HG) Eco 130 Forelesig uke 11 (HG) Mer om ormalfordelige og setralgreseteoremet Uke 1 1 Fra forrige gag ~ betyr er fordelt som. ~ N( µσ, ) E( ) = µ, og var( ) = σ Normalfordelige er symmetrisk om μ og kotiuerlig

Detaljer

Mer om utvalgsundersøkelser

Mer om utvalgsundersøkelser Mer om utvalgsudersøkelser I uderkapittel 3.6 i læreboka gir vi e kort iførig i takegage ved utvalgsudersøkelser. Vi gir her e grudigere framstillig av temaet. Populasjo og utvalg Ved e utvalgsudersøkelse

Detaljer

Oversikt. INF1000 Uke 1 time 2. Repetisjon - Introduksjon. Repetisjon - Program

Oversikt. INF1000 Uke 1 time 2. Repetisjon - Introduksjon. Repetisjon - Program Oversikt INF1000 Uke 1 time 2 Variable, enkle datatyper og tilordning Litt repetisjon Datamaskinen Programmeringsspråk Kompilering og kjøring av programmer Variabler, deklarasjoner og typer Tilordning

Detaljer

Oppgaver fra boka: X 2 X n 1

Oppgaver fra boka: X 2 X n 1 MOT30 Statistiske metoder, høste 00 Løsiger til regeøvig r 3 (s ) Oppgaver fra boka: 94 (99:7) X,, X uif N(µ, σ ) og X,, X uif N(µ, σ ) og alle variable er uavhegige Atar videre at σ = σ = σ og ukjet Kodesitervall

Detaljer

INF1010 våren 2017 Torsdag 26. januar. Arv og subklasser del 1. Stein Gjessing Institutt for informatikk Universitetet i Oslo

INF1010 våren 2017 Torsdag 26. januar. Arv og subklasser del 1. Stein Gjessing Institutt for informatikk Universitetet i Oslo INF1010 våre 2017 Torsdag 26. jauar Arv og subklasser del 1 Stei Gjessig Istitutt for iformatikk Uiversitetet i Oslo 1 Når du har lært om subklasser ka du programmere med: Første uke: Spesialiserig (og

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i: INF2440 Effektiv parallellprogrammering Eksamensdag: 2. juni 2015 Tidspunkter: 09.00 13.00 Oppgavesettet er på: 3 sider + 2 sider

Detaljer

Analyseøving 9. Løsningsforslag. TTT4265 Elektronisk systemdesign og -analyse II. Oppgave 1. Signalegenskaper (4p)

Analyseøving 9. Løsningsforslag. TTT4265 Elektronisk systemdesign og -analyse II. Oppgave 1. Signalegenskaper (4p) TTT6 Elektroisk systemdesig og -aalyse II Aalyseøvig 9 Løsigsforslag Oppgave. Sigalegeskaper (p) a) Sigalee er vist i figuree uder:.. x[ ]. x[+]... 7 6 6 7 7 6 6 7.. x[ ]. x[ +]... 7 6 6 7 7 6 6 7.. x[]u[

Detaljer

INF1010 Tråder II 6. april 2016

INF1010 Tråder II 6. april 2016 INF1010 Tråder II 6. april 2016 Stein Gjessing Universitetet i Oslo 1 Tråder i Java tråden minrunp class MinRun implements Runable { MinRun(... ) {... } public void run( ) {...... } } //end

Detaljer

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister Videre

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister Videre Dagens tema Lister og generiske klasser, del I Array-er og ArrayList (Big Java 6.1 & 6.8) Ulike lagringsformer (Collection) i Java (Big Java 15.1) Klasser med typeparametre («generiske klasser») (Big Java

Detaljer

INF2440 Uke 8, v2015 : Om Oblig 3, Ulike Threadpools, JIT-kompilering. Arne Maus PSE, Inst. for informatikk

INF2440 Uke 8, v2015 : Om Oblig 3, Ulike Threadpools, JIT-kompilering. Arne Maus PSE, Inst. for informatikk INF2440 Uke 8, v2015 : Om Oblig 3, Ulike Threadpools, JIT-kompilering Arne Maus PSE, Inst. for informatikk 1 Hva har vi sett på i uke 7 1. Mer om matrisemultiplikasjon 1. Radvis (ikke kolonnevis) beregning

Detaljer

Stabler, Køer og Lister. ADT er

Stabler, Køer og Lister. ADT er Stabler, er og Lister I. STEL OG QUEUE DT I.1 DT I.2 rray implemetasjo I.3 Liket-Liste implemetasjo II. DQUEUE DT III.IMPLEMENTSJON V EN DT MED EN NNEN DT Kap. 3 (kursorisk: 3.1.3, 3.2.3, 3.4; utatt: 3.2.4,

Detaljer

INF1010 våren 2017 Onsdag 25. januar. Litt om unntak i Java

INF1010 våren 2017 Onsdag 25. januar. Litt om unntak i Java INF1010 våren 2017 Onsdag 25. januar Litt om unntak i Java Stein Gjessing Nytt tema: Feilhåndtering (IO: Innlesing/Utskrift) n En metode som kan komme til å gjøre en IO-feil på fil må enten behandle denne

Detaljer

LØSNINGSFORSLAG TIL EKSAMEN I FAG TMA4245 STATISTIKK 6.august 2004

LØSNINGSFORSLAG TIL EKSAMEN I FAG TMA4245 STATISTIKK 6.august 2004 Norges tekisk aturviteskapelige uiversitet Istitutt for matematiske fag Side av 0 LØSNINGSFORSLAG TIL EKSAMEN I FAG TMA4245 STATISTIKK 6.august 2004 Oppgave Midtveiseksame a) X er e stokastisk variabel

Detaljer

INF2440 Uke 7, våren2015. Arne Maus PSE, Inst. for informatikk

INF2440 Uke 7, våren2015. Arne Maus PSE, Inst. for informatikk INF2440 Uke 7, våren2015 Arne Maus PSE, Inst. for informatikk 1 Hva så vi på i Uke (4,5 og) 6 1. Kommentarer til svar på ukeoppgaven om matrisemultiplikasjon 1. Hvorfor disse gode resultatene (speedup

Detaljer

INF2440 Uke 4, v2015 Om å samle parallelle svar, matrisemultiplikasjon og The Java Memory Model + evt bedre forklaring Radix

INF2440 Uke 4, v2015 Om å samle parallelle svar, matrisemultiplikasjon og The Java Memory Model + evt bedre forklaring Radix INF Uke, v Om å samle parallelle svar, matrisemultiplikasjon og The Java Memory Model + evt bedre forklaring Radix Arne Maus PSE, Inst. for informatikk Hva så vi på i uke. Presisering av hva som er pensum.

Detaljer

INF1010 våren 2019 Onsdag 30. januar. Mer om unntak i Java (med litt repetisjon av I/O først)

INF1010 våren 2019 Onsdag 30. januar. Mer om unntak i Java (med litt repetisjon av I/O først) INF1010 våren 2019 Onsdag 30. januar Mer om unntak i Java (med litt repetisjon av I/O først) Stein Gjessing Lesing fra terminal og fil navn: mininn Bruk Scanner: Scanner mininn = new Scanner(); Type:

Detaljer

INF2440 Uke 5, våren2015 Om oppdeling av et problem for parallellisering, mye om primtall + thread-safe. Arne Maus PSE, Inst.

INF2440 Uke 5, våren2015 Om oppdeling av et problem for parallellisering, mye om primtall + thread-safe. Arne Maus PSE, Inst. INF2440 Uke 5, våren2015 Om oppdeling av et problem for parallellisering, mye om primtall + thread-safe Arne Maus PSE, Inst. for informatikk 1 Oppsummering Uke1 Vi har gjennomgått hvorfor vi får flere-kjerne

Detaljer

INF2440 Uke 10, v2014 : Arne Maus OMS, Inst. for informatikk

INF2440 Uke 10, v2014 : Arne Maus OMS, Inst. for informatikk INF2440 Uke 10, v2014 : Arne Maus OMS, Inst. for informatikk 1 Hva så vi på i uke 9 Et sitat om tidsforbruk ved faktorisering En presisering av Oblig2. Om en feil i Java ved tidtaking (tid == 0??) Hvor

Detaljer

INF2440 Uke 5, våren2016. Arne Maus PSE, Inst. for informatikk

INF2440 Uke 5, våren2016. Arne Maus PSE, Inst. for informatikk INF2440 Uke 5, våren2016 Arne Maus PSE, Inst. for informatikk 1 Hva så vi på i Uke4 1. Kommentarer til svar på ukeoppgaven om matrisemultiplikasjon 1. Hvorfor disse gode resultatene (speedup > 40) 2. Hvordan

Detaljer

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr IN1010 Fra Python til Java En introduksjon til programmeringsspråkenes verden dag@ifi.uio.no Oversikt Introduksjon Python Java Noe er likt Noe bare ser anderledes ut Noe er helt forskjellig Et par eksempler

Detaljer

ARBEIDSHEFTE I MATEMATIKK

ARBEIDSHEFTE I MATEMATIKK ARBEIDSHEFTE I MATEMATIKK Temahefte r Hvorda du reger med poteser Detaljerte forklariger Av Matthias Loretze mattegriseforlag.com Opplsig: E potes er e forkortet skrivemåte for like faktorer. E potes består

Detaljer

Løsningsforsalg til første sett med obligatoriske oppgaver i STK1110 høsten 2018

Løsningsforsalg til første sett med obligatoriske oppgaver i STK1110 høsten 2018 Løsigsforsalg til første sett med obligatoriske oppgaver i STK1110 høste 2018 Oppgave 1 (a Et 100(1 α% kofidesitervall for forvetigsverdie µ er gitt ved formel (8.15 på side 403 i læreboka. For situasjoe

Detaljer

INF2440 Uke 8, v2017. Arne Maus PSE, Inst. for informatikk

INF2440 Uke 8, v2017. Arne Maus PSE, Inst. for informatikk INF2440 Uke 8, v2017 Arne Maus PSE, Inst. for informatikk 1 Hva har vi sett på i uke 7: 1. Svar på et oblig2-spørsmål 2. Hvilken orden O() har Eratosthenes Sil? 3. Hvordan parallellisere Oblig2 - alternativer

Detaljer

13.09.2012 LITT OM OPPLEGGET. INF1000 EKSTRATILBUD Stoff fra uke 1-3 12. September 2012 Siri Moe Jensen EKSEMPLER

13.09.2012 LITT OM OPPLEGGET. INF1000 EKSTRATILBUD Stoff fra uke 1-3 12. September 2012 Siri Moe Jensen EKSEMPLER .9.22 LITT OM OPPLEGGET INF EKSTRATILBUD Stoff fra uke - 2. September 22 Siri Moe Jensen Målgruppe: De som mangler forståelse for konseptene gjennomgått så langt. Trening får du ved å jobbe med oppgaver,

Detaljer

INF1010 Tråder J. Marit Nybakken Motivasjon. Å lage en tråd

INF1010 Tråder J. Marit Nybakken Motivasjon. Å lage en tråd J INF1010 Tråder J Marit Nybakken marnybak@ifi.uio.no Motivasjon Til nå har vi kun skrevet programmer der programmet bare var på ett sted i koden til enhver tid (bortsett fra når vi har drevet med GUI,

Detaljer

2 Om statiske variable/konstanter og statiske metoder.

2 Om statiske variable/konstanter og statiske metoder. Litt om datastrukturer i Java Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo 1 Innledning Dette notatet beskriver noe av det som foregår i primærlageret når et Javaprogram utføres.

Detaljer

Nyttige Linux-kommandoer. Hvordan du kan jobbe mer effektivt Dag Langmyhr

Nyttige Linux-kommandoer. Hvordan du kan jobbe mer effektivt Dag Langmyhr Nyttige Linux-kommandoer Hvordan du kan jobbe mer effektivt Dag Langmyhr Trenger vi kommandovinduer i dag? Svaret er nei for de fleste brukerne, men ikke for ekspertene. Ofte går det fortere å bruke kommandoer

Detaljer

Differensligninger Forelesningsnotat i Diskret matematikk Differensligninger

Differensligninger Forelesningsnotat i Diskret matematikk Differensligninger Differesligiger Forelesigsotat i Diskret matematikk 017 Differesligiger I kapittel lærte vi om følger og rekker. Vi studerte både aritmetiske og geometriske følger og rekker. Noe følger og rekker er imidlertid

Detaljer

Avsnitt 8.1 i læreboka Differensligninger

Avsnitt 8.1 i læreboka Differensligninger Diskret Matematikk Fredag 6. ovember 015 Avsitt 8.1 i læreboka Differesligiger I kapittel lærte vi om følger og rekker. Vi studerte både aritmetiske og geometriske følger og rekker. Noe følger og rekker

Detaljer

Kort om meg. INF1000 Uke 2. Oversikt. Repetisjon - Introduksjon

Kort om meg. INF1000 Uke 2. Oversikt. Repetisjon - Introduksjon Kort om meg INF1000 Uke 2 Variable, enkle datatyper og tilordning Fredrik Sørensen Kontor: Rom 4311-NR, Informatikkbygget Brukernavn/e-post: fredrso@ifi.uio.no Utdanning: Dataingeniør, 2000 Cand.Scient,

Detaljer

Dagens tema Kapittel 8: Objekter og klasser

Dagens tema Kapittel 8: Objekter og klasser Dagens tema Kapittel 8: Objekter og klasser Hva er objekter og klasser? Programmering med objekter Klassedeklarasjoner Generering av objekter Tilgang til elementer i objektene Objekt- og klassevariable

Detaljer

Hva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; }

Hva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; } Hva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; Hva skrives ut på skjermen når følgende kode utføres? int [] tallene =

Detaljer

INF2440 Uke 10, v2015 : Arne Maus PSE, Inst. for informatikk

INF2440 Uke 10, v2015 : Arne Maus PSE, Inst. for informatikk INF2440 Uke 10, v2015 : Arne Maus PSE, Inst. for informatikk 1 Hva så vi på i uke 9 Et sitat om tidsforbruk ved faktorisering Om en feil i Java 7 ved tidtaking Hvordan parallellisere rekursive algoritmer

Detaljer

Java PRP brukermanual

Java PRP brukermanual Java PRP brukermanual 1.1 Introduksjon 1.1.1 Hva er Java PRP Java PRP (Parallel Recursive Procedure) gir oss muligheten til automatisk parallellisering av programmer, som baserer seg på noen rekursive

Detaljer

2.1 Polynomdivisjon. Oppgave 2.10

2.1 Polynomdivisjon. Oppgave 2.10 . Polyomdivisjo Oppgave. ( 5 + ) : = + + ( + ):( ) 6 + 6 8 8 = + + c) ( + 5 ) : = + 6 6 d) + + + = + + = + + + 8+ ( ):( ) + + + Oppgave. ( + 5+ ):( ) 5 + + = + ( 5 ): 9 + + + = + + + 5 + 6 9 c) ( 8 66

Detaljer

Løsningsforslag ukeoppg. 6: 28. sep - 4. okt (INF1000 - Høst 2011)

Løsningsforslag ukeoppg. 6: 28. sep - 4. okt (INF1000 - Høst 2011) Løsningsforslag ukeoppg. 6: 28. sep - 4. okt (INF1000 - Høst 2011) Løsningsforslag til oppgave 7, 8, og 9 mangler Klasser og objekter (kap. 8.1-8.14 i "Rett på Java" 3. utg.) NB! Legg merke til at disse

Detaljer

Løsningsforslag til eksamen i STK desember 2010

Løsningsforslag til eksamen i STK desember 2010 Løsigsforslag til eksame i STK0 0. desember 200 Løsigsforslaget har med flere detaljer e det vil bli krevd til eksame. Oppgave a Det er tilpasset e multippel lieær regresjosmodell av forme β 0 + β x i

Detaljer

INF2440 Uke 12, v2014. Arne Maus OMS, Inst. for informatikk

INF2440 Uke 12, v2014. Arne Maus OMS, Inst. for informatikk INF2440 Uke 12, v2014 Arne Maus OMS, Inst. for informatikk 1 Fra hjemmesida til INF2440: To trykkfeil rettet i Oblig3 Rediger 1) Stegene i algoritmene ble i koden referert som a,b,c,c - skal selvsagt være:

Detaljer

Oppgave 1. INF1000 Uke 13. Oppgave 2. Oppgave 3. Er dette lovlige deklarasjoner (når de foretas inni en metode)? JA NEI

Oppgave 1. INF1000 Uke 13. Oppgave 2. Oppgave 3. Er dette lovlige deklarasjoner (når de foretas inni en metode)? JA NEI Oppgave 1 INF1000 Uke 13 Gjennomgang av prøveeksamen fra høsten 2004 Er dette lovlige deklarasjoner (når de foretas inni en metode)? JA NEI int i; int k = i; int i, j = 4; int k = j; double[] x = new double[1];

Detaljer

Forelesning inf Java 1

Forelesning inf Java 1 Forelesning inf1000 - Java 1 Tema: Javas historie Bestanddelene i et Java-program Programvariabler Ole Christian Lingjærde, 22. august 2012 Litt Java-historikk The Green Team I 1991 opprettet Sun Microsystems

Detaljer

Kapittel 10 fra læreboka Grafer

Kapittel 10 fra læreboka Grafer Forelesigsotat i Diskret matematikk torsdag 6. oktober 017 Kapittel 10 fra læreboka Grafer (utdrag) E graf er e samlig pukter (oder) og kater mellom puktee (eg. odes, vertex, edge). E graf kalles rettet

Detaljer

Oppgave 1. Oppgave 2. Oppgave 3. Prøveeksamen i INF1000. Ole Christian og Arne. 23. november 2004

Oppgave 1. Oppgave 2. Oppgave 3. Prøveeksamen i INF1000. Ole Christian og Arne. 23. november 2004 Oppgave 1 Prøveeksamen i INF1000 Ole Christian og Arne 23. november 2004 Er dette lovlige deklarasjoner (når de foretas inni en metode)? JA NEI int i; int k = i; int i, j = 4; int k = j; double[] x = new

Detaljer

TOD063 Datastrukturer og algoritmer

TOD063 Datastrukturer og algoritmer TOD063 Datastrukturer og algoritmer Øving : 3 Utlevert : Uke 7 Innleveringsfrist : 26. februar 2010 Klasse : 1 Data og 1 Informasjonsteknologi Gruppearbeid: 2-3 personer pr. gruppe. Oppgave 1 Vi skal lage

Detaljer

INF2440 Uke 5, våren2017. Arne Maus PSE, Inst. for informatikk

INF2440 Uke 5, våren2017. Arne Maus PSE, Inst. for informatikk INF2440 Uke 5, våren2017 Arne Maus PSE, Inst. for informatikk 1 Hva så vi på i Uke4 1. Kommentarer til svar på ukeoppgaven om matrisemultiplikasjon 1. Hvorfor disse gode resultatene (speedup > 40) 2. Hvordan

Detaljer

INF1000 (Uke 5) Mer om løkker, arrayer og metoder

INF1000 (Uke 5) Mer om løkker, arrayer og metoder INF1000 (Uke 5) Mer om løkker, arrayer og metoder Grunnkurs i programmering Institutt for Informatikk Universitetet i Oslo Anja Bråthen Kristoffersen og Are Magnus Bruaset Praktisk informasjon Når disse

Detaljer

Fra Python til Java, del 2

Fra Python til Java, del 2 Fra Python til Java, del 2 Hvordan kjøre Java? På Ifis maskiner På egen maskin Et eksempel Array-er For-setninger Lesing og skriving Metoder Biblioteket Hva trenger vi egentlig? Å kjøre Java For å kunne

Detaljer

Prøveeksamen i INF1000. Ole Christian og Arne. 23. november 2004

Prøveeksamen i INF1000. Ole Christian og Arne. 23. november 2004 Prøveeksamen i INF1000 Ole Christian og Arne 23. november 2004 Oppgave 1 Er dette lovlige deklarasjoner (når de foretas inni en metode)? JA NEI int i; int k = i; int i, j = 4; int k = j; double[] x = new

Detaljer

Prøveeksamen INF2440 v Arne Maus PSE, Inst. for informatikk

Prøveeksamen INF2440 v Arne Maus PSE, Inst. for informatikk Prøveeksamen INF2440 v 2016 Arne Maus PSE, Inst. for informatikk 1 Oppgave 1 (10 poeng) Forklar hva som skjer ved en synkronisering: a) Når to tråder synkroniserer på samme synkroniseringsobjekt (f.eks

Detaljer

Sortering med tråder - Quicksort

Sortering med tråder - Quicksort Sortering med tråder - Quicksort Skisser til to programmer INF1010 våren 2016 Stein Gjessing Institutt for informatikk Universitetet i Oslo Sortering som tema, slikt som valg av sorteringsmetode, hastigheten

Detaljer

INF1000 (Uke 15) Eksamen V 04

INF1000 (Uke 15) Eksamen V 04 INF1000 (Uke 15) Eksamen V 04 Grunnkurs i programmering Institutt for Informatikk Universitetet i Oslo Anja Bråthen Kristoffersen og Are Magnus Bruaset 22-05-2006 2 22-05-2006 3 22-05-2006 4 Oppgave 1a

Detaljer

INF1000 (Uke 15) Eksamen V 04

INF1000 (Uke 15) Eksamen V 04 INF1000 (Uke 15) Eksamen V 04 Grunnkurs i programmering Institutt for Informatikk Universitetet i Oslo Anja Bråthen Kristoffersen og Are Magnus Bruaset 22-05-2006 2 22-05-2006 3 22-05-2006 4 Oppgave 1a

Detaljer