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

Størrelse: px
Begynne med side:

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

Transkript

1 INF2440 Uke 6, våre 2018 Eric Jul PSE Ist. for iformatikk 1

2 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 og sekvesielle algoritmer. 3. Hvorda lage e parallell løsig ulike måter å sykroisere skrivig på felles variable 4. Vraglås - et problem vi lett ka få (og lett ugå) Gemt til uke 6: 1. Ulike strategier for å dele opp et problem for parallelliserig 2. Litt om Oblig 3 J 3. Hvorfor lage e avkryssigstabell over alle oddetall for å fie alle primtall (Eratosthees sil) steg 1 i Oblig 3 2

3 Å 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 vil parallellisere med k tråder, og hver slikt steg vil få hver si parallelliserig med e CyclickBarrier-sykroiserig mellom hver av disse delee + e sykroisert avslutig (joi(),..). Eks: fimax hadde ett slikt steg: for (it i = 0-1) -løkke MatriseMult hadde ett slikt steg med trippel-løkke 3

4 Å dele opp data del 2 For å plalegge parallelliserig av ett slikt steg må vi fie: Hvilke data i problemet er lokale i hver tråd? Hvilke data i problemet er felles/delt mellom trådee? Viktig for effektiv parallell kode. Hvorda deler vi opp felles data (om mulig) Ka hver tråd berege hver si ege, disjukte del av data Færrest mulig sykroiseriger (de tar mye tid) 4

5 5 ) Om primtall og om Eratosthees sil (oblig 3) Et primtall er : Et heltall som bare lar seg dividere med 1 og seg selv. 1 er ikke et heltall (det mete mage på 1700-tallet, og oe meer det fortsatt) Ethvert tall N > 1 lar seg faktorisere som et produkt av primtall: N = p 1* p 2* p 3* * p k Dee faktorige er etydig; dvs. de eeste faktoriserige av N (utage rekkefølge etydig hvis sortert!) Hvis det bare er ett tall i dee faktoriserige, er N selv et primtall. 5

6 Litt mer om Eratosthees Eratosthees, matematikker, laget også et estimat på jordas radius som var < 15% feil, grula geografi som fag, fat opp skuddårsdage og at ha var sjef for Biblioteket i Alexadria (de tids største forskigsistitusjo). 6

7 2 måter å lage primtallee op til N Lage e tabell over alle de primtallee vi treger Eratosthee sil Dividere alle tall < N med alle oddetall < Divisjosmetode! 7

8 Hvorda lage og lagre primtall A) Med Eratosthees sil: Z:\INF2440Para\Primtall>java PrimtallESil max primtall m: Geererte alle primtall <= paa millisek med Eratosthees sil og det største primtallet er: Med gjetatte divisjoer Z:\INF2440Para\Primtall>java PrimtallDiv Geererte alle primtall <= paa millisek med divisjo, og det største primtallet er: Å lage primtallee p og fie dem ved divisjo (del på alle oddetall < SQRT(p) p = 2,3,4,..) er ca. 100 gager lagsommere e Eratosthees avkryssigs-tabell (kalt Eratosthees sil). 8

9 Å lage og lagre primtall (Erotosthees sil) Som e bit-tabell (1- betyr primtall, 0-betyr ikke-primtall) Påfuet i jeraldere av Eratosthees (ca. 200 f.kr) Ma skal fie alle primtall < M Ma fier da de første primtallee og krysser av alle multipla av disse (N.B. dette forbedres/edres seere): Eks: 3 er et primtall, da krysses 6, 9,12,15,.. Av fordi de alle er ett-eller-aet-tall (1,2,3,4,5,..) gager 3 og følgelig selv ikke er et primtall. 6=2*3, 9 = 3*3, 12 =2*2*3, 15 = 5*3,..osv De tallee som ikke blir krysset av, år vi har krysset av for alle primtallee vi har, er primtallee Vi fier 5 som et primtall fordi, etter at vi har krysset av for 3, fier første ikke-avkryssete tall: 5, som da er et primtall (og som vi så krysser av for, fier så 7 osv) 9

10 Litt mer om Eratothees sil Vi represeterer ikke partallee på de tallija som det krysses av på fordi vi vet at 2 er et primtall (det første ) og at alle adre partall er ikke-primtall. Har vi fuet et ytt primtall p, for eksempel. 5, starter vi avkryssige for dette primtallet først for tallet p*p (i eksempelet: 25), me etter det krysses det av for p*p+2p, p*p+4p,.. (i eksempelet 35,45,55, osv.). Grue til at vi ka starte på p*p er at alle adre tall t < p*p slik det krysses av i for eksempel Wikipedia-artikkele har allerede blitt krysset av adre primtall < p. Det betyr at for å krysse av og fie alle primtall < N, behøver vi bare å krysse av på dee måte for alle primtall p sqrt(n). Dette sparer svært mye tid. 10

11 Vise at vi treger bare primtallee <10 for å fie alle primtall < 100, avkryssig for 3 (3*3, 9+2*3,9+4*3,.)

12 Avkryssig for 5 (starter med 25, så 25+2*5, 25+4,5,..):

13 Avkryssig for 7 (starter med 49, så 49+2*7,49+4*7,.): Er å ferdig fordi este primtall vi fier: 11, så er 11*11=121 utefor tabelle 13

14 1) Hvorda bruke 8 eller 7 bit i e byte-array for å represetere primtallee E byte = 8 bit heltall: Fortegs-bit (0 = positiv, 1=egativ) 7 bit data (0-127) Vi represeter alle oddetallee (1,3,5,,,) som ett bit (0= ikkeprimtall, 1 = primtall) Bruke alle 8 bit : Fordel: mer kompakt lagrig og litt raskere(?) adresserig Ulempe: Ka da ikke bruke verdie i byte direkte (f.eks som e ideks til e array), heller ikke +,-,* eller /-operasjoee på verdie Bruke 7 bit: Fordel: ige av ulempee med 8 bit Ulempe: Tar litt større plass og litt lagsommere(?) adresserig 14

15 1) Hvorda represetere 8 (eller 7) bit i e byte-array byte = et 8 bit heltall Fortegs-bit (0 = positiv, 1=egativ) 7 bit data (0-127) Bruker alle 8 bitee til oddetallee: Ata at vi vil sjekke om tallet k er et primtall, sjekk først om k er 2, da ja, hvis det er et partall (me ikke 2) da ei ellers sjekk så tallets bit i byte-arraye Byte ummeret til k i arraye er da: Ete: k /16, eller: k >>>4 (shift 4 høyreover ute kopi av fortegs-bitet er det samme som å dele med 16) Bit-ummeret er i dee byte er da ete (k %16)/2 eller (k &15)>>1 Hvorfor dele på 16 år det er 8 bit fordi vi fjeret alle partallee egetlig 16 tall represetert i første byte, for byte 0: tallee 0-15 Om så å fie bitverdie se este lysark. 15

16 Bruke 7 bit i hver byte i arraye Ata at vi vil sjekke om tallet k er et primtall sjekk først om k er 2, da ja, ellers hvis det er et partall (me ikke 2) da ei ellers: Sjekk da tallets bit i byte-arraye Byte ummeret til k i arraye er da: k /14 Bit-ummeret er i dee byte er da: (k %14)/2 Nå har vi byte ummeret og bit-ummeret i de byte. Vi ka da ta AND (&) med det riktige elemetet i e av de to arryee som er oppgitt i skjelett-kode og teste om svaret er 0 eller ikke. Hvorda sette alle 7 eller 8 bit == 1 i alle byter ) 7 bit: hver byte settes = 127 (me bitet for 1 settes =0) 8 bit: hver byte settes = -1 (me bit for 1 settes = 0) Koklusjo: bruk 8 eller 7 bit i hver byte (valgfritt) i Oblig3 16

17 2) Faktoriserig av et tall M i sie primtallsfaktorer Vi har laget og lagret ved hjelp av Erotosthaes sil alle (utatt 2) primtall < N i e bit-array over alle odde-tallee. 1 = primtall, 0=ikke-primtall Vi har krysset ut de som ikke er primtall Hvorda skal vi så bruke dette til å faktorisere et tall M < N*N? Svar: Divider M med alle primtall p i <! (p i =2,3,5,..), og hver gag e slik divisjo M%p i ==0, så er p i e av faktoree til M. Vi forsetter så med å faktorisere ett midre tall M =M/p i. Faktoriserige av M = p i *..* p k er da produktet av alle de primtall som dividerer M ute rest. HUSK at e p i ka forekommer flere gager i svaret. eks: 20= 2*2*5, 81 = 3*3*3*3, osv Fier vi ige faktoriserig av M, dvs. ige p i! som dividerer M med rest == 0, så er M selv et primtall. 17

18 Hvorda parallellisere faktoriserig? 1. Gjeomgås este uke - dee uka viktig å få på plass e effektiv sekvesiell løsig med om lag disse kjøretidee for N = 2 mill: M:\INF2440Para\Primtall>java PrimtallESil max primtall m: Geererte primtall <= paa millisek med Eratosthees sil ( millisek/primtall) = 2*2*3*5*103* = 37* = 2*271*457*1931* = 3*19*47* = 2*2*2*2*2*7*313*1033* = 5*13*59951* = 2*3*3*31*71* = 1163*1879* = 2*2*11*11*17*23*293* faktoriseriger bereget paa: ms - dvs: ms. per faktoriserig 18

19 Faktoriserig av store tall med desimale sifre Uke5>java PrimtallESil max primtall m: bitarr.legth: Geererte primtall <= paa millisek med Eratosthees sil ( millisec/primtall) atall primtall < er: , dvs: 4.89%, og det største primtallet er: = 2*2*3*5*5*967*3673*19421* = = 2* = 3*31* * = 2*2*2*2*2*19*71* = 5*7* = 11* = 2*121081* = 3*17*19* * faktoriseriger bereget paa: ms dvs: ms. per faktoriserig largestlogfactorizedsafe: = *

20 Hva har vi sett på i uke 5 ae forelesig 1. Ulike strategier for å dele opp et problem for parallelliserig: 2. Hvorfor lage e avkryssigstabell over alle oddetall for å fie alle primtall (Eratosthees sil) steg 1 i Oblig 2 20

21 Dette skal vi se på i uke 6 1. Hva er raskest: Modell2 eller Modell3 kode? 2. Kort om oe mulige måter å parallellisere Eratosthees Sil og faktoriserige i Oblig2 (mer este uke). 3. Cocurrecy: Tre måter å programmere moitorer i Java eksemplifisert med tre løsiger av problemet: Kokker og Kelere (eller geerelt: produseter og kosumeter) 1. med sleep()og aktiv pollig. 2. med sychroized methods, wait>() og otify(),.. 3. med Lock og flere køer (Coditio-køer) 21

22 2) Kortfattet om parallellisere Eratosthees Sil (mer este uke) Vi har M store tall som skal faktoriseres og skal å lage =! primtall Del opp oe: a. Tall-lije (oddetallee) vi skal krysse av med dvs. tallee mellom 3 og! i k deler (like store?) kryss av hver del med alle primtallee vi har a. Me vi starter jo med bare to primtall :2 og 3 - alle? b. Dele opp primtallee vi skal krysse av med f.eks a. Hver tråd tar este primtall vi har fuet (3,5,..) b. Vi deler opp de første primtallee til tråd0, este til tråd1,.. Last-ballaserig? Like mye arbeid til hver tråd gir god speedup Er alle disse alterativee riktige? (to skriver samtidig?) Skal oe kopieres lokalt og så samles år trådee er ferdige? 22

23 Modell TEST AV i++ med sychroized oppdaterig som eksempel (8 kjerer, og 8 traader, Media av:11 iterasjoer) sekv.tid(ms) para.tid(ms) Speedup Modell2 Samme test : Koklusjo: Lage og starte tråder hver gag (Modell3) tar ca 0.40 ms mer tid e å starte de e gag for alle og ha 2 CyclicBarrier for start/stop (Modell2) sekv.tid(ms) para.tid(ms) Speedup

24 3 ) Flere (sykroiserigs-) metoder i klasse Thread. getname() Gir avet på tråde (default: Thread-0, Thread-1,..) joi(): Du veter på at e tråd termierer hvis du kaller på des joi() metode. sleep(t): De å kjørede tråde sover i mist t millisek. yield(): De å kjørede tråde pauser midlertidig og overlater til e ae tråd å kjøre på de kjere som de første tråde ble kjørt på.. otify(): (arvet fra klasse Object, som alle er subklasse av). De vekker opp é av trådee som veter på låse i ieværede objekt. Dee prøver da e gag til å få det de vetet på. otifyall(): (arvet fra klasse Object). De vekker opp alle de trådee som veter på låse i ieværede objekt. De prøver da alle e gag til å få det de vetet på. wait(): (arvet fra klasse Object). Får åværede tråd til å vete til de ete blir vekket med otify() eller otifyall() for dette objektet. 24

25 Et program som tester joi(),yield() og getame() : import java.util.arraylist; public class YieldTest { public static void mai(strig args[]){ ArrayList<YieldThread> list = ew ArrayList<YieldThread>(); for (it i=0;i<20;i++){ YieldThread et = ew YieldThread(i+5); list.add(et); et.start(); } for (YieldThread et:list){ try { et.joi(); } catch (IterruptedExceptio ex) { } }}} // ed class YielsTest class YieldThread exteds Thread{ it stopcout; public YieldThread(it cout){ stopcout = cout; } public void ru(){ for (it i=0;i<30;i++){ if (i%stopcout == 0){ System.out.pritl(«Stopper thread: "+getname()); yield(); } 25 }}} // ed class YieldThread

26 M:\INF2440Para\Yield>java YieldTest Stopper thread: Thread-0 Stopper thread: Thread-0 Stopper thread: Thread-5 Stopper thread: Thread-5 Stopper thread: Thread-9 Stopper thread: Thread-9 Stopper thread: Thread-12 Stopper thread: Thread-4 Stopper thread: Thread-3 Stopper thread: Thread-3 Stopper thread: Thread-2 Stopper thread: Thread-2 Stopper thread: Thread-2 Stopper thread: Thread-1 Stopper thread: Thread-1 Stopper thread: Thread-1 Stopper thread: Thread-3 Stopper thread: Thread-19 Stopper thread: Thread-18 Stopper thread: Thread-18 Stopper thread: Thread-17 Stopper thread: Thread-16 Stopper thread: Thread-16 Vi ser at de 20 trådee gir fra seg kotrolle et ulike atall gager > 0 Stopper thread: Thread-4 Stopper thread: Thread-4 Stopper thread: Thread-15 Stopper thread: Thread-12 Stopper thread: Thread-14 Stopper thread: Thread-14 Stopper thread: Thread-13 Stopper thread: Thread-13 Stopper thread: Thread-11 Stopper thread: Thread-11 Stopper thread: Thread-10 Stopper thread: Thread-8 Stopper thread: Thread-7 Stopper thread: Thread-6 Stopper thread: Thread-0 Stopper thread: Thread-6 Stopper thread: Thread-10 Stopper thread: Thread-15 Stopper thread: Thread-17 Stopper thread: Thread-19 Stopper thread: Thread-7 Stopper thread: Thread-8 26

27 Problemet vi å skal løse: E restaurat med kokker og kelere og med et varmebord hvor mate står Vi har c Kokker som lager mat og w Kelere som server mate (tallerkeretter) Mat som kokkee lager blir satt fra seg på et varmebord (med TABLE_SIZE atall plasser til tallerkeer) Kokkee ka ikke lage flere tallerkeer hvis varmebordet er fullt Kelere ka ikke servere flere tallerkeer hvis varmebordet er tomt Det skal lages og serveres NUM_TO_BE_MADE atall tallerkeer 27

28 Restaurat versjo 1: varmelampe Lager tallerkeretter TABLE_SIZE Serverer tallerke umotable c Kokker (produseter) w Kelere (kosumeter) 2/21/18 28

29 3) Om moitorer og køer (tre eksempler på cocurret programmig). Vi løser sykroiserig mellom to ulike klasser. Først e aktivt pollede (masede) løsig med sykroiserte metoder (Restaurat1.java). Aktiv vetig i e løkke i hver Kokk og Keler + at de er i køe på å slippe i i e sykroisert metode Så e løsig med bruk av moitor slik det var tekt fra starte av i Java (Restaurat2.java). Kokker og Kelere veter i samme wait()-køe + i køe på å slippe i i e sykroisert metode. Til siste e løsig med moitor med Lock og Coditio-køer (flere køer e per vetetilstad (Restaurat9.java) Kelere og Kokker veter i hver si kø + i e køe på å slippe i i de to metoder beskyttet av e Lock. 29

30 Felles for de tre løsigee import java.util.cocurret.locks.*; class Restaurat { Restaurat(Strig[] args) { <Leser i atall Kokker, Kelere og atall retter> <Oppretter Kokkee og Kelere og starter dem> } public static void mai(strig[] args) { ew Restaurat(args); } } // ed mai } // ed class Restaurat class HeatigTable{ // MONITOR it umotable = 0, umproduced = 0, umserved=0; fial it MAX_ON_TABLE =3; fial it NUM_TO_BE_MADE; // Ivariater: // 0 <= umotable <= MAX_ON_TABLE // umproduced <= NUM_TO_BE_MADE // umserved <= NUM_TO_BE_MADE < + ulike data i de tre eksemplee> public xxx boolea putplate(kokk c) <Legge tallerke til på bordet (true) ellers (false) Kokk må vete) } // ed put public xxx boolea getplate(keler w) { <Hvis bordet tomt (false) Keler veter ellers (true) - Keler tar da e tallerke og serverer de> } // ed get } // ed class HeatigTable class Kokk exteds Thread { HeatigTable tab; it id; public void ru() { while/if (tab.putplate(..)) < Ulik logikk i eksemplee> } } // ed class Kokk class Keler exteds Thread { HeatigTable tab; it id; public void ru() { while/if (tab.getplate())){ <ulik logikk i eksemplee> } } // ed class Keler 30

31 Ivariatee på felles variable Ivariatee må alltid holde (være sae) utefor moitor-metodee. Hva er de felles variable her: MAX_ON_THE_TABLE NUM_TO_BE_MADE umotable umproduced umserved = umproduced umotable Ivariater: 1. 0 umotable TABLE_SIZE 2. umproduced NUM_TO_BE_MADE 3. umserved umproduced 2/21/18 31

32 Ivariatee viser 4 tilstader vi må ta skrive kode for Ivariater: 0 <= umotable <= MAX_ON_TABLE umserved <= umproduced <= NUM_TO_BE_MADE 1. umotable == MAX_ON_TABLE Kokker veter 2. 0 == umotable Kelere veter 3. umproduced == NUM_TO_BE_MADE Kokkee ferdige 4. umserved == NUM_TO_BE_MADE Keleree ferdige 32

33 Først e aktivt pollede (masede) løsig med sykroiserte metoder (Restaurat1.java). Dette er e løsig med e kø, de som alle tråder kommer i hvis e ae tråd er ie i e sykroisert metode i samme objekt. Termierig ordes i hver kokk og keler (i deres ru-metode) De køe som yttes er e felles kø av alle aktive objekter som evt. samtidig prøver å kalle e av de to sykroiserte metodee get og put. Alle objekter har e slik kø. HeatigTable Kø av objekter som veter på å utføre e av de sykroiserte metodee. sychroized boolea getplate(..) sychroized boolea putplate(..) 33

34 class Kokk exteds Thread {. public void ru() { try { while (tab.umproduced < tab.num_to_be_made) { if (tab.putplate(this) ) { // lag este tallerke } sleep((log) (1000 * Math.radom())); } } catch (IterruptedExceptio e) {} System.out.pritl("Kokk "+id+" ferdig: " ); } } // ed Kokk class Keler exteds Thread {. public void ru() { try { while ( tab.umserved< tab.num_to_be_made) { if ( tab.getplate(this)) { // server tallerke } sleep((log) (1000 * Math.radom())); } } catch (IterruptedExceptio e) {} System.out.pritl("Keler " + id+" ferdig"); } } // ed Keler Restaurat løsig 1 sychroized boolea putplate(kokk c) { if (umotable == TABLE_SIZE) { retur false; } umproduced++; // 0 <= umotable < TABLE_SIZE umotable++; // 0 < umotable <= TABLE_SIZE System.out.pritl("Kokk o:"+c.id+", laget tallerke o:"+umproduced); retur true; } // ed putplate sychroized boolea getplate(keler w) { if (umotable == 0) retur false; // 0 < umotable <= TABLE_SIZE umserved++; umotable--; // 0 <= umotable < TABLE_SIZE System.out.pritl("Keler o:"+w.id+ ", serverte tallerke o:"+umserved); retur true; } 34

35 M:Restaurat1>java Restaurat Kokk o:8, laget tallerke o:1 Kokk o:4, laget tallerke o:2 Kokk o:6, laget tallerke o:3 Keler o:5, serverte tallerke o:1 Kokk o:3, laget tallerke o:4 Keler o:2, serverte tallerke o:2 Kokk o:1, laget tallerke o:5 Keler o:5, serverte tallerke o:3 Keler o:4, serverte tallerke o:4 Kokk o:7, laget tallerke o:6 Kokk o:2, laget tallerke o:7 Keler o:7, serverte tallerke o:5 Kokk o:4, laget tallerke o:8 Keler o:3, serverte tallerke o:6 Keler o:3, serverte tallerke o:7 Kokk o:1, laget tallerke o:9 Keler o:2, serverte tallerke o:8 Kokk o:6, laget tallerke o:10 Kokk o:3, laget tallerke o:11 Kokk 8 ferdig: Keler o:8, serverte tallerke o:9 Keler o:7, serverte tallerke o:10 Keler o:6, serverte tallerke o:11 Kokk 3 ferdig: Kokk 5 ferdig: Keler 1 ferdig Kokk 1 ferdig: Kokk 4 ferdig: Keler 5 ferdig Kokk 7 ferdig: Keler 2 ferdig Kokk 2 ferdig: Keler 4 ferdig Keler 3 ferdig Keler 7 ferdig Keler 6 ferdig Kokk 6 ferdig: Keler 8 ferdig 35

36 Problemer med dee løsige er aktiv pollig Alle Kokke- og Keler-trådee går aktivt rudt å spør: Er der mer arbeid til meg? Hviler litt, ca.1 sec. og spør igje. Kaster bort mye tid/maskiistruksjoer. Spesielt belastede hvis e av trådtypee (Produset eller Kosumet) er klart raskere e de adre, Eks. setter opp 18 raske Kokker som sover bare 1 millisek mot 2 lagsomme Kelere som sover 1000 ms. I det tilfellet tok dee aktive vetige/masige 58% av CPU-kapasitete til 8 kjerer Selv etter at vi har testet i ru-metode at vi ka greie e tallerke til, må vi likevel teste på om det går OK E ae tråd ka ha vært ie og edret variable Utskrifte må være i get- og put-metodee. Hvorfor? 36

37 Løsig1 med 18 raske Kokker (veter 1 ms) og 2 lagsomme Kelere (veter 1000 ms). Kokkee stresser maskie med stadige mislykte spørsmål hvert ms. om det å er plass til e tallerke på varmebordet. CPU-bruk = 58%. 37

38 Løsig 2: Javas origiale opplegg med moitorer og to køer. De origiale Java løsige med sykroiserte metoder og e rekke adre metoder og følgede iebygde metoder: sleep(t): De å kjørede tråde sover i t millisek. otify(): (arvet fra klasse Object som alle er subklasse av). De vekker opp e av trådee som veter på låse i ieværede objekt. Dee prøver da e gag til å få det de vetet på. otifyall(): (arvet fra klasse Object). De vekker opp alle de trådee som veter på låse i ieværede objekt. De prøver da alle e gag til å få det de vetet på. wait(): (arvet fra klasse Object). Får åværede tråd til å vete til de ete blir vekket med otify() eller otifyall() for dette objektet. 38

39 Å lage parallelle løsiger med e Java moitor E Java-moitor er et objekt av e vilkårlig klasse med sychroized metoder Det er to køer på et slikt objekt: E kø for de som veter på å komme i/fortsette i e sykroisert metode E kø for de som her sagt wait() (og som veter på at oe ae tråd vekker dem opp med å si otify() eller otifyall() på dem) wait() sier e tråd ie i e sychroized metode. otify() eller otifyall() sies også ie i e sychroized metode. Moitor-idee er sterkt ispirert av Toy Hoare (mae bak Quicksort) 39

40 otify() 40

41 Pass på å ugå vraglås 41

42 Restaurate (2): MAX_ON_THE_TABLE umproduced NOS_TO_BE_MADE umotable umserved = = umproduced - umotable w Kelere (cosumers) c Kokker (producers). E kø: Kokker og Kelere veter samme wait-køe 2/21/18 42

43 Løsig 2, All vetig er ie i sykroiserte metoder i e to køer. All vetig ie i to sykroiserte metoder Kokker ad Kelere veter på este tallerke i wait-køe Vi må vekke opp alle i wait-køe for å sikre oss at vi fier e av de type vi treger (Kokk eller Keler) som ka drive programmet videre Ige testig på ivariatee i ru-metodee 2/21/18 43

44 Begge løsiger 2) og 3): ru-metodee prøver e gag til hvis siste operasjo lykkes: Kokker: public void ru() { try { while (tab.putplate(this)) { sleep((log) (1000 * Math.radom())); } } catch (IterruptedExceptio e) {} // Dee Kokke er ferdig } Kelere: public void ru() { try { while (tab.getplate(this) ){ sleep((log) (1000 * Math.radom())); } } catch (IterruptedExceptio e) {} // Dee Kelere er ferdig } 44

45 public sychroized boolea putplate (Kokk c) { Løsig2 while (umotable == TABLE_SIZE && umproduced < NUM_TO_BE_MADE) { try { // The while test holds here meaig that a Kokk should // but ca ot make a dish, because the table is full wait(); } catch (IterruptedExceptio e) { // Isert code to hadle iterrupt } } // oe or both of the loop coditios are ow false if (umproduced < NUM_TO_BE_MADE) { // umotable < TABLE_SIZE // Hece OK to icrease umotable umotable++; // umproduced < NUM_TO_BE MADE // Hece OK to icrease umproduced: umproduced++; if (umproduced if == == // umotable > 0, Wake up a waitig NUM_TO_BE_MADE) { { // waiter, or all if retur retur false; false; //umproduced ==NUM_TO_BE_MADE } else{ } else{ retur retur true; true; } } otifyall(); // Wake up all waitig } else } else { { // umproduced // == == //NUM_TO_BE_MADE retur retur false;} false;} } // 45 } ed // ed putplate putplate

46 Løsig2 public sychroized boolea getplate (Keler w) { while (umotable == 0 && umproduced < NUM_TO_BE_MADE ) { try { // The while test holds here the meaig that the table // is empty ad there is more to serve wait(); } catch (IterruptedExceptio e) { // Isert code to hadle iterrupt } } //oe or both of the loop coditios are ow false if (umotable > 0) { // 0 < umotable <= TABLE_SIZE // Hece OK to decrease umotable: umotable--; // umotable < TABLE_SIZE // Must wake up a sleepig Kokker: otifyall(); // wake up all queued Kelere ad Kokker if (umproduced == NUM_TO_BE_MADE && umotable == 0) { retur false; }else{ retur true;} } else { // umotable == 0 && umproduced == NUM_TO_BE_MADE retur false;} } // ed getplate 46

47 Løsig2 med 18 raske Kokker (veter 1 ms) og 2 lagsomme Kelere (veter 1000 ms). Kokkee stresser ikke maskie med stadige mislykte spørsmål, me veter i kø til det er plass til e tallerke til på varmebordet. CPU-bruk = 3%. 47

48 Ed of secod lecture, uke 6 2/21/18 48

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

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

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, v2017. Arne Maus PSE, Inst. for informatikk

INF2440 Uke 6, v2017. Arne Maus PSE, Inst. for informatikk INF2440 Uke 6, v2017 Arne Maus PSE, Inst. for informatikk 1 Hva så vi på i uke 5 1. Enda bedre Matrise-multiplisering 2. Modell2-kode for sammenligning av kjøretider på (enkle) parallelle og sekvensielle

Detaljer

INF2440 Uke 6, v2015 om faktorisering av primtall + tre løsninger på et produsent/konsumentproblem. Arne Maus PSE, Inst.

INF2440 Uke 6, v2015 om faktorisering av primtall + tre løsninger på et produsent/konsumentproblem. Arne Maus PSE, Inst. INF2440 Uke 6, v2015 om faktorisering av primtall + tre løsninger på et produsent/konsumentproblem Arne Maus PSE, Inst. for informatikk 1 Hva så vi på i Uke5 1. Mer om ulike strategier for å dele opp et

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

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

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 6, v2016 om faktorisering av primtall + tre løsninger på et produsent/konsumentproblem. Arne Maus PSE, Inst.

INF2440 Uke 6, v2016 om faktorisering av primtall + tre løsninger på et produsent/konsumentproblem. Arne Maus PSE, Inst. INF2440 Uke 6, v2016 om faktorisering av primtall + tre løsninger på et produsent/konsumentproblem Arne Maus PSE, Inst. for informatikk 1 Hva så vi på i uke 5 1. Mer om matrisemultiplikasjon 1. Radvis

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

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 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

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

INF2440 Effektiv Parallellprogrammering Uke 2 våren tidtaking. Eric Jul PSE Inst. for informatikk INF2440 Effektiv Parallellprogrammerig Uke 2 våre 2018 - tidtakig Eric Jul PSE Ist. for iformatikk 1 Oppsummerig Uke1 Vi har gjeomgått hvorfor vi får flere-kjere CPUer Tråder er måte som et Javaprogram

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

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

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

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

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

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

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

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

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 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

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

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

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

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

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

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

Løsning eksamen R1 våren 2010

Løsning eksamen R1 våren 2010 Løsig eksame R våre 00 Oppgave a) ) f ( ) l f ( ) ' l l l l f ( ) (l ) ) g( ) 4e g( ) 4 e ( ) 4 e ( ) g( ) 4( ) e b) ( ) 4 4 6 P ) P() 4 4 6 8 6 8 6 0 Divisjo med ( ) går opp. 4 4 6 : ( ) 8 4 4 8 6 8 6

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

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

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

Fagdag 2-3mx 24.09.07

Fagdag 2-3mx 24.09.07 Fagdag 2-3mx 24.09.07 Jeg beklager at jeg ikke har fuet oe ye morsomme spill vi ka studere, til gjegjeld skal dere slippe prøve/test dee gage. Istruks: Vi arbeider som valig med 3 persoer på hver gruppe.

Detaljer

Løsningsforslag: Deloppgave om heuristiske søkemetoder

Løsningsforslag: Deloppgave om heuristiske søkemetoder Løsigsforslag: Deloppgave om heuristiske søkemetoder 6. mai 00 Iledig Vi skal betrakte det såkalte grafdeligsproblemet (graph partitioig problem). Problemet ka ekelt formuleres som følger: Gitt e graf

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 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

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

Gir vi de resterende 2 oppgavene til én prosess vil alle sitte å vente på de to potensielt tidskrevende prosessene.

Gir vi de resterende 2 oppgavene til én prosess vil alle sitte å vente på de to potensielt tidskrevende prosessene. Figure over viser 5 arbeidsoppgaver som hver tar 0 miutter å utføre av e arbeider. (E oppgave ka ku utføres av é arbeider.) Hver pil i figure betyr at oppgave som blir pekt på ikke ka starte før oppgave

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

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

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

7) Radix-sortering sekvensielt kode og effekten av cache

7) Radix-sortering sekvensielt kode og effekten av cache ) Radix-sortering sekvensielt kode og effekten av cache Dels er denne gjennomgangen av vanlig Radix-sortering viktig for å forstå en senere parallell versjon. Dels viser den effekten vi akkurat så tilfeldig

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

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

FØLGER, REKKER OG GJENNOMSNITT

FØLGER, REKKER OG GJENNOMSNITT FØLGER, REKKER OG GJENNOMSNITT Espe B. Lagelad realfagshjoret.wordpress.com espebl@hotmail.com 9.mars 06 Iledig E tallfølge er e serie med tall som kommer etter hveradre i e bestemt rekkefølge. Kvadrattallee

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

Velkommen til oversiktsforelesninger i Matematikk 1. med Jørgen Endal

Velkommen til oversiktsforelesninger i Matematikk 1. med Jørgen Endal Velkomme til oversiktsforelesiger i Matematikk 1 med Jørge Edal Følger, rekker, og potesrekker (kap. 9.1 9.7) Forelesig 2 (kap. 9.3 9.4) Dages økkelbegrep: Sammeligigsteste Gresesammeligigsteste Forholdsteste

Detaljer

Faglærer går normalt én runde gjennom lokalet. Ha evt. spørsmål klare!

Faglærer går normalt én runde gjennom lokalet. Ha evt. spørsmål klare! Side 1 av 6 Noe viktige pukter: (i) (ii) (iii) (iv) Les hele eksamessettet øye før du begyer! Faglærer går ormalt é rude gjeom lokalet. Ha evt. spørsmål klare! Skriv svaree die i svarrutee og levér i oppgavearket.

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

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

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

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

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

La oss begynne med en repetisjon av hva som skjer når du kjører Javaprogrammet

La oss begynne med en repetisjon av hva som skjer når du kjører Javaprogrammet K A P I T T E L 18 Tråder N år et program kjøres, utføres programsetningene i en bestemt rekkefølge. En tråd er det samme som denne programflyten, og i dette kapitlet skal vi se på hvordan vi starter og

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 Sortering. Marit Nybakken 1. mars 2004

INF1010 Sortering. Marit Nybakken 1. mars 2004 INF1010 Sortering Marit Nybakken marnybak@ifi.uio.no 1. mars 2004 Dette dokumentet skal tas med en klype salt og forfatter sier fra seg alt ansvar. Dere bør ikke bruke definisjonene i dette dokumentet

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

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

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

MA1101 Grunnkurs Analyse I Høst 2017

MA1101 Grunnkurs Analyse I Høst 2017 Norges tekisk aturviteskapelige uiversitet Istitutt for matematiske fag MA0 Grukurs Aalyse I Høst 07 Løsigsforslag Øvig..b) Vi skriver om 7 = 4 4 7 Korollar.. gir at 7 4 er irrasjoal (side vi vet 7 4 er

Detaljer

Matematikk for IT. Oblig 7 løsningsforslag. 16. oktober

Matematikk for IT. Oblig 7 løsningsforslag. 16. oktober Matematikk for IT Oblig 7 løsigsforslag. oktober 7..8 a) Vi skal dae kodeord som består av sifree,,,, 7. odeordet er gldig dersom det ieholder et like atall (partall) -ere. Dee løses på samme måte som..:

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

MAT1030 Diskret matematikk

MAT1030 Diskret matematikk MAT1030 Diskret matematikk Plenumsregning 2: Ukeoppgaver fra kapittel 1 & 2 Roger Antonsen Matematisk Institutt, Universitetet i Oslo 24. januar 2008 Oppgave 1.1 Modifiser algoritmen fra 1.2.1 slik at

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO BOKMÅL Det matematisk-naturvitenskapelige fakultet Eksamen i : Eksamensdag : Torsdag 2. desember 2004 Tid for eksamen : 09.00 12.00 Oppgavesettet er på : Vedlegg : Tillatte hjelpemidler

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

Ma Analyse II Øving 5

Ma Analyse II Øving 5 Ma0 - Aalyse II Øvig 5 Øistei Søvik.0.0 Oppgaver 9. Determie whether the give sequece is (a) bouded (above or below), (b) positive or egative (ultimately), (c) icreasig, decreasig, or alteratig, ad (d)

Detaljer

AVDELING FOR INGENIØRUTDANNING EKSAMENSOPPGAVE

AVDELING FOR INGENIØRUTDANNING EKSAMENSOPPGAVE AVDELING FOR INGENIØRUTDANNING EKSAMENSOPPGAVE Eme: Diskret matematikk Gruppe(r): Eksamesoppgave består av: Atall sider (ikl forside): 5 Emekode: FO 9A Dato: 57 Atall oppgaver: Fagasvarlig: Ulf Uttersrud

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

INF1010, 22. mai Prøveeksamen (Eksamen 12. juni 2012) Stein Gjessing Inst. for Informatikk Universitetet i Oslo

INF1010, 22. mai Prøveeksamen (Eksamen 12. juni 2012) Stein Gjessing Inst. for Informatikk Universitetet i Oslo INF, 22. mai 23 Prøveeksamen 23 (Eksamen 2. juni 22) Stein Gjessing Inst. for Informatikk Universitetet i Oslo Oppgave a Tegn klassehierarkiet for de 9 produkttypene som er beskrevet over. Inkluder også

Detaljer

Steg 1: Rest etter divisjon

Steg 1: Rest etter divisjon Primtall og effektivitet Skrevet av: Martin Strand Kurs: Python Tema: Tekstbasert, Kryptografi Fag: Matematikk, Programmering Klassetrinn: 8.-10. klasse, Videregående skole Introduksjon I matematikktimene

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

Faglærer går normalt én runde gjennom lokalet. Ha evt. spørsmål klare!

Faglærer går normalt én runde gjennom lokalet. Ha evt. spørsmål klare! Side 1 av 7 Noe viktige pukter: (i) (ii) (iii) (iv) Les hele eksamessettet øye før du begyer! Faglærer går ormalt é rude gjeom lokalet. Ha evt. spørsmål klare! Skriv svaree die i svarrutee og levér i oppgavearket.

Detaljer

OPPGAVE 1 OBLIGATORISKE OPPGAVER (OBLIG 1) (1) Uten å selv implementere og kjøre koden under, hva skriver koden ut til konsollen?

OPPGAVE 1 OBLIGATORISKE OPPGAVER (OBLIG 1) (1) Uten å selv implementere og kjøre koden under, hva skriver koden ut til konsollen? OPPGAVESETT 4 PROSEDYRER Oppgavesett 4 i Programmering: prosedyrer. I dette oppgavesettet blir du introdusert til programmering av prosedyrer i Java. Prosedyrer er også kjent som funksjoner eller subrutiner.

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

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

Øvingsforelesning 1 Python (TDT4110)

Øvingsforelesning 1 Python (TDT4110) Øvingsforelesning 1 Python (TDT4110) Introduksjon, Kalkulasjoner Ole-Magnus Pedersen Oversikt Praktisk Info Repetisjon fra sist Oppgaver for øving 2 2 Praktisk Info Last opp øvinger på Blackboard før godkjenning

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

S2 kapittel 1 Rekker Løsninger til innlæringsoppgavene

S2 kapittel 1 Rekker Løsninger til innlæringsoppgavene Løsiger til ilærigsoppgavee kapittel Rekker Løsiger til ilærigsoppgavee a Vi ser at differase mellom hvert ledd er 4, så vi får det este leddet ved å legge til 4 Det este leddet blir altså 6 + 4 = 0 b

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

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

INF2440 Uke 9, v2014 : Arne Maus OMS, Inst. for informatikk INF2440 Uke 9, v2014 : Arne Maus OMS, Inst. for informatikk 1 Hva har vi sett på i uke 8: 1. En effektiv Threadpool? Executors.newFixedThreadPool 2. Mer om effektivitet og JIT-kompilering! 3. Om et problem

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

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

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

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

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

Rekursjon. Binærsøk. Hanois tårn.

Rekursjon. Binærsøk. Hanois tårn. Rekursjon Binærsøk. Hanois tårn. Hvorfor sortering (og søking) er viktig i programmering «orden» i dataene vi blir fort lei av å lete poleksempel internett «alt» er søking og sortering alternativer til

Detaljer

MAT1030 Diskret matematikk

MAT1030 Diskret matematikk Oppgave 1.1 MAT1030 Diskret matematikk Plenumsregning 2: Ukeoppgaver fra kapittel 1 & 2 Roger Antonsen Matematisk Institutt, Universitetet i Oslo 24. januar 2008 Modifiser algoritmen fra 1.2.1 slik at

Detaljer

OPPGAVE 4 LØSNINGSFORSLAG OPPGAVE 5 LØSNINGSFORSLAG UTVIKLING AV REKURSIV FORMEL FOR FIGURTALL SOM GIR ANDREGRADSFUNKSJONER

OPPGAVE 4 LØSNINGSFORSLAG OPPGAVE 5 LØSNINGSFORSLAG UTVIKLING AV REKURSIV FORMEL FOR FIGURTALL SOM GIR ANDREGRADSFUNKSJONER OPPGAVE 4 LØSNINGSFORSLAG Tallfølge i f) rektageltallee. Her er de eksplisitte formele R = ( +1) eller R = +. Dette er e adregradsfuksjo. I figurtallsammeheg forutsetter vi at de legste side er (øyaktig)

Detaljer

Python: Løkker. TDT4110 IT Grunnkurs Professor Guttorm Sindre

Python: Løkker. TDT4110 IT Grunnkurs Professor Guttorm Sindre Python: Løkker TDT4110 IT Grunnkurs Professor Guttorm Sindre Denne uka Vi trenger å Støttes av Hente data fra bruker Vise data til bruker Lagre data i minnet for bruk videre i programmet Fra tastatur:

Detaljer

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

Fra Python til Java. En introduksjon til programmeringsspråkenes verden. Dag Langmyhr 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 eksempel Klasser

Detaljer

Programmering Høst 2017

Programmering Høst 2017 Programmering Høst 2017 Tommy Abelsen Ingeniørfag - Data Innledning Dette er et dokument med litt informasjon og eksempler om kontrollstrukturer, samt oppgaver til forskjellige kontrollstrukturer. Spør

Detaljer

MAT-INF 1100: Obligatorisk oppgave 1

MAT-INF 1100: Obligatorisk oppgave 1 3. september, 2004 MAT-INF 1100: Obligatorisk oppgave 1 Innleveringsfrist: 17/9-2004, kl. 14:30 Informasjon Den skriftlige besvarelsen skal leveres på ekspedisjonskontoret i 7. etg. i Niels Henrik Abels

Detaljer

EKSAMEN Løsningsforslag

EKSAMEN Løsningsforslag 7. jauar 7 EKSAMEN Løsigsforslag Emekode: ITF75 Dato: 4. desember 6 Hjelpemidler: - To A4-ark med valgfritt ihold på begge sider. Emeav: Matematikk for IT Eksamestid: 9. 3. Faglærer: Christia F Heide Kalkulator

Detaljer