INF2440 Uke 6, våren Eric Jul PSE Inst. for informatikk
|
|
- Siri Olafsen
- 5 år siden
- Visninger:
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å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
DetaljerINF3030 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
DetaljerIN3030 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.
DetaljerINF2440 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
DetaljerINF2440 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
DetaljerINF2440 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.
DetaljerIN3030 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
DetaljerINF2440, 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.
DetaljerINF2440 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
DetaljerTrå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
DetaljerINF2440 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
DetaljerINF2440 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
DetaljerINF2440 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
DetaljerINF2440 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
DetaljerINF2440 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
DetaljerIN1010 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
Detaljern / ($$ 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 ) ("?/& =
DetaljerUke 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
DetaljerEKSAMEN 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:
DetaljerOm 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
DetaljerDifferensligninger 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
DetaljerAvsnitt 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
DetaljerINF2440 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
DetaljerINF2440 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
DetaljerUNIVERSITETET 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
DetaljerINF2440 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
DetaljerINF1010 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
DetaljerKapittel 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
DetaljerINF2440 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
DetaljerINF1010 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
DetaljerLø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
DetaljerINF 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
DetaljerINF2440 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
DetaljerIN1010 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
DetaljerFagdag 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.
DetaljerLø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
DetaljerINF1010 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
DetaljerINF2440 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
DetaljerStabler, 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,
DetaljerGir 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
DetaljerUNIVERSITETET 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
DetaljerINF2440 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
DetaljerVi 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
Detaljer7) 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
DetaljerArne 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
DetaljerUNIVERSITETET 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
DetaljerFØ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
DetaljerINF1010 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,
DetaljerVelkommen 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
DetaljerFaglæ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.
DetaljerMer 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
DetaljerINF3030 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
DetaljerSortering 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
DetaljerHvordan 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)
DetaljerINF1010 - 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
DetaljerLa 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
DetaljerI 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
DetaljerINF1010 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
DetaljerUNIVERSITETET 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
DetaljerUNIVERSITETET 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
DetaljerIN1010. 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
DetaljerJentetreff 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
DetaljerMA1101 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
DetaljerMatematikk 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..:
DetaljerARBEIDSHEFTE 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
DetaljerMAT1030 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
DetaljerINF1000 (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
DetaljerINF1000 (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
DetaljerUNIVERSITETET 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
DetaljerLø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
DetaljerMa 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)
DetaljerAVDELING 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
DetaljerINF 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
DetaljerINF1010, 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å
DetaljerSteg 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
DetaljerEcon 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
DetaljerFaglæ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.
DetaljerOPPGAVE 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.
DetaljerArray&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
DetaljerINF2440 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) 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
Detaljer13.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,
DetaljerS2 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
DetaljerPrø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
DetaljerINF2440 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
DetaljerINF1010 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
DetaljerAnalyseø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[
DetaljerINF1000 (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
DetaljerINF2440, 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.
DetaljerArray&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
DetaljerRekursjon. 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
DetaljerMAT1030 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
DetaljerOPPGAVE 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)
DetaljerPython: 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:
DetaljerFra 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
DetaljerProgrammering 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
DetaljerMAT-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
DetaljerEKSAMEN 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