Installation Site Country/Year Earth Simulator Center Japan/2002 Los Alamos National Laboratory USA/2002. Los Alamos National Laboratory USA/2002

Relevanta dokument
Prestanda och skalbarhet

Lastbalansering. Fördelningsprinciper. Fördelning. balans. MIMD-parallellt program Ett antal tasks som exekverar seriellt eller parallellt

Fördelning. Fördelningsprinciper. Lastbalansering

Sortering. Intern/ extern? Antaganden. Vad kan vi kräva? Rank sort. Rank sort. På en nod/ distribuerad? Jämförelsebaserad/ icke jämförelsebaserad?

Prov i DAT 312: Algoritmer och datastrukturer för systemvetare

Föreläsning 5: Grafer Del 1

Föreläsning Datastrukturer (DAT037)

Föreläsning Datastrukturer (DAT036)

Föreläsningsanteckningar F6

Föreläsning 10. Grafer, Dijkstra och Prim

Föreläsning 10. Grafer, Dijkstra och Prim

Lösningar Datastrukturer TDA

TENTAMEN: Algoritmer och datastrukturer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 6 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Datastrukturer, algoritmer och programkonstruktion (DVA104, VT 2015) Föreläsning 6

Föreläsning 1. Introduktion och sökning i graf. Vad är en algoritm?

Optimala koder. Övre gräns för optimala koder. Gränser. Övre gräns för optimala koder, forts.

Optimala koder. Det existerar förstås flera koder som har samma kodordsmedellängd. Enklaste fallet är att bara byta 0:or mot 1:or.

Dekomposition och dynamisk programmering

Föreläsning 10. Grafer, Dijkstra och Prim

Föreläsning Datastrukturer (DAT036)

OMTENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 08:15 13:15

Algoritmer, datastrukturer och komplexitet

Föreläsning 8 Datastrukturer (DAT037)

Föreläsning 4 Datastrukturer (DAT037)

Algoritmanalys. Inledning. Informationsteknologi Malin Källén, Tom Smedsaas 1 september 2016

Föreläsning 5: Giriga algoritmer. Kruskals och Prims algoritmer

OMTENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 14:15 19:15

Tentamen i Algoritmer & Datastrukturer i Java

Tentamen Datastrukturer, DAT037 (DAT036)

Tentamen Datastrukturer för D2 DAT 035

Algoritmer, datastrukturer och komplexitet

TDDI16 Datastrukturer och algoritmer. Algoritmanalys

ADT Prioritetskö. Föreläsning 13 Innehåll. Prioritetskö vs FIFO-kö. Prioritetskö Exempel på användning. Prioritetsköer och heapar

Föreläsning 5 Innehåll

Föreläsning 5: Giriga algoritmer. Kruskals och Prims algoritmer

Föreläsning Datastrukturer (DAT037)

Datastrukturer och algoritmer. Föreläsning 15 Inför tentamen

Föreläsning 9 Datastrukturer (DAT037)

Föreläsning 12+13: Approximationsalgoritmer

Lösningsförslag till tentamen Datastrukturer, DAT037 (DAT036), Tiden det tar att utföra en iteration av loopen är oberoende av värdet på

Trafiksimulering: Grafalgoritmer

Programmering II (ID1019) :00-11:00

Föreläsning 5 Innehåll. Val av algoritm och datastruktur. Analys av algoritmer. Tidsåtgång och problemets storlek

Föreläsning 10 Innehåll. Prioritetsköer och heapar. ADT Prioritetskö. Interface för Prioritetskö. Exempel på vad du ska kunna

TNK049 Optimeringslära

Strategier för att utnytja parallella system. Peter Kjellström NSC Upplysning

Föreläsning 13 Innehåll

Trädstrukturer och grafer

Algoritmer och datastrukturer, föreläsning 11

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Tentamen Programmeringsteknik II Inledning. Anmälningskod:

ETS052 Internet Routing. Jens A Andersson

Fredag 10 juni 2016 kl 8 12

Datastrukturer och algoritmer

Cacheprobe: programbibliotek för extrahering av cacheminnesparametrar

Tentamen Datastrukturer D DAT 036/INN960

Tentamen med lösningsförslag Datastrukturer för D2 DAT 035

Tentamen den 12 januari 2017 Datorarkitektur med operativsystem, EDT621

Tentamen, EDA501/EDAA20 Programmering M MD W BK L

Datastrukturer, algoritmer och programkonstruktion (DVA104, HT 2014) Föreläsning 5

Tentamen Datastrukturer (DAT037)

Föreläsning 1. Introduktion. Vad är en algoritm?

Tentamen Datastrukturer D DAT 035/INN960

Tommy Färnqvist, IDA, Linköpings universitet

I en matchning ligger varje hörn i högst en kant. I en stig ligger varje hörn i högst två kanter.

if (n==null) { return null; } else { return new Node(n.data, copy(n.next));

Föreläsning Datastrukturer (DAT036)

Tentamen Datastrukturer D DAT 036/INN960

Multi-ported cache En rapport om några lösningar till att få flera minnesaccesser simultant.

MATLAB. Python. Det finns flera andra program som liknar MATLAB. Sage, Octave, Maple och...

Föreläsning Datastrukturer (DAT036)

Tentamen Datastrukturer D DAT 035/INN960

Föreläsning 8 Datastrukturer (DAT037)

ADT Prioritetskö. Föreläsning 12 Innehåll. Prioritetskö. Interface för Prioritetskö. Prioritetsköer och heapar

Föreläsning 10 Datastrukturer (DAT037)

Tentamen: Programutveckling ht 2015

Grafer MST Top. sortering Starkt samm. komponenter Kortaste avstånd. Grafalgoritmer 1. Douglas Wikström KTH Stockholm

Föreläsning 7 Datastrukturer (DAT037)

ORDINARIE TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 08:15 13:15

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 9 Jonas Lindgren, Institutionen för Datavetenskap, LiU

ORDINARIE TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 08:15 13:15

Datastrukturer och Algoritmer D0041D

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 8 Erik Nilsson, Institutionen för Datavetenskap, LiU

Datastrukturer och algoritmer

Föreläsning 13 Innehåll

Dugga Datastrukturer (DAT036)

Datastrukturer. föreläsning 6. Maps 1

SVAR TILL TENTAMEN I DATORSYSTEM, HT2013

Föreläsning Datastrukturer (DAT036)

Algoritmer, datastrukturer och komplexitet

Linjära ekvationssystem

Jämförelse av skrivtekniker till cacheminne

Föreläsning 4 Datastrukturer (DAT037)

Föreläsning 8: Aritmetik och stora heltal

Algoritmer, datastrukturer och komplexitet

Tentamen den 14 januari 2016 Datorarkitektur med operativsystem, EDT621

Lösningsförslag för tentamen i Datastrukturer (DAT037) från

Transkript:

Uppgift (p) Vid en testkörning på en processor tog ett program sekunder för att lösa ett problem av storlek n. När ytterligare tre processorer lades till krävde samma program sekunder för samma problemstorlek. Hur lång tid tar det att lösa ett problem av storlek n på processorer med detta program, enligt Amdahls lag, och vad blir uppsnabbningen? Hur lång tid tar det att lösa ett problem av storlek n på processorer med detta program, enligt Gustavson- Barsis lag, och vad blir uppsnabbningen? processor: sekunder. 4 processorer: sekunder. s+p=, s+p/4= s=5/, p=4/ Amdahl: s+p/=8 sekunder, speedup=/8=5/ G-B: Seriellt, ggr större: s+*p=5. Parallellt, med processorer: s+*p/=, speedup=5/=5. Rank Manufacturer Computer/Procs NEC Earth-Simulator/ 5 Hewlett-Packard ASCI Q - AlphaServer SC ES45/.5 GHz/ 496 Hewlett-Packard ASCI Q - AlphaServer SC ES45/.5 GHz/ 496 4 IBM ASCI White, SP Power 75 MHz/ 89 5 Linux NetworX MCR Linux Cluster Xeon.4 GHz - Quadrics/ 4 R max R peak 586. 496. 777. 4. 777. 4. 76. 88. 5694. 6. Installation Site Country/Year Earth Simulator Center Japan/ Los Alamos National Laboratory USA/ Los Alamos National Laboratory USA/ Lawrence Livermore National Laboratory USA/ Lawrence Livermore National Laboratory USA/ Inst. type Installation Area Nmax Nhalf Research 75 664 Research 59 6 Research 59 6 Research Energy 5896 79 Research 45 9 Computer Family Computer Type NEC Vector SX6 Compaq AlphaServer Al.Se.-Cluster Compaq AlphaServer Al.Se.-Cluster IBM SP SP Power 75 MHz high node NOW - Intel NOW Cluster - Intel Uppgift (p) Ovanstående tabell visar de första 5 platserna i TOP5-listan för november. Utifrån den hör listan, vilka maskiner kan man vara hyfsat säker på klarar att komma upp i 5 Gflops/s på LINPACK-testet med matriser som är runt x stora? Motivera ditt svar. Här skulle man dels vara klurig, dels förstå Rmax, Nmax samt Nhalf, dels ha snappat upp lite från numeriska-algoritmer-föreläsningen. Generellt sätt kan man säga att en algoritm går snabbare på en parallelldator när datamängden är större. Detta gäller till en viss gräns, sedan, sedan blir problemet för stort för minnet. Bästa sättet att lösa den här uppgiften var en plot. Sedan handlar det om att binda datapunkter, men där har jag godkänt det mesta. I plotten nedan så klarar NEC:en det hela, medan HP:en är på gränsen. De andra ligger under.

9 8 7 Gflops/s 6 5 4 NEC HP IBM Linux Önskat resultat 4 5 6 Storlek Uppgift (p) Förklara begreppen cachekoherens och false sharing? Hur är de kopplade till varandra? Ge ett exempel på programsnutt som skulle kunna drabbas av false sharing. Cachekoherens är inget dåligt, det är något bra Förklara varför det är nödvändigt (cacheminnen ska hålla samma bild av minnet mm), och gärna hur cachekoherens upprätthålls. False sharing uppstår när två eller flera processorer använder olika minnesområden som har råkat hamna på samma cacheline. När då uppdateringar sker, måste alla andra processorer få del av denna (eller invalideras) för att cachekoherensen ska upprätthållas. De flesta har angett något liknande programsnutten nedan: Processor : Processor for (i = ; i < N; i += ) for (i = ; i < N; i += ) a[i] = a[i] * ; a[i] = a[i] * ; Observera att det krävs skrivningar för att man ska kunna observera false-sharingen. Nu är dock risken stor att den ena processorn skenar iväg och hinner före. Då kommer man inte riktigt att se ping-pong-effekten. Ett annat exempel som borde ha större chans (risk) att råka ut för false sharing: void *proc(void *a) { int i; for (i = ; i < ; i++) (int *) a = 6-*(int *) a; main() { int x =, y = ; /* Borde ligga på samma cache-line */ pthread_create(proc,..., &x,...); pthread_create(proc,..., &y,...);...

Uppgift 4 (6p) Antag att strukturen på en beräkning är ett binärt träd med n= d löv (avslutande arbetssteg) och +log n nivåer. Varje nod i trädet består av ett beräkningssteg t b. Kommunikationen mellan två (olika) processorer i beräkningsträdet antas vara konstant, t k. Vad blir den lägre gränsen för exekveringstiden om antal processorer är n? Vad blir den lägre gränsen för exekveringstiden om antal processorer är mindre än n? Här bör man till att börja med tänka på att det krävs bara en kommunikation i varje split, eftersom moderprocessorn tar med sig sitt data till nästa steg. Den som tar längst tid är den sista processorn (n-), där varje steg är kommunikation. Tiden för den blir (d+) t b.+ d t k. Om vi tar bort n/ processorer så måste de två sista stegen utföras av en processor. Dock försvinner ett kommunikationssteg: (d+) t b.+ (d-) t k. Allmänt, om vi har p= e processorer, får vi: (e+) t b.+ e t k.+ (n/p) t b Men om p inte är en jämn två-potens då? Då blir det lite knepigare. De flesta har angett samma tid som om man avrundade antal processorer nedåt till närmsta undre två-potens. Även om det har gett många poäng, så är det ju inte riktigt hela sanningen. Tänk om det bara saknas en processor. Då verkar det ju smartast att den väg som innehåller minst kommunikationssteg får ta extrajobbet, se bilden till höger. Just i det här fallet blir det alltså max((d+) t b, (d+) t b.+ d t k ). (Det är antingen grenen längst till vänster eller grenen längst till höger som tar längst tid.) En generell formel blir nog bökig att ta fram. Sedan var det en student som kom på att det smartaste är förstås dataduplicering i det här fallet. Ingen kommunikation

Uppgift 5 (6p) 5 7 Antag att fem (arbets-)processer (motsvarande nod 5) ska lösa shortest path för grafen till höger med Parallell implementation II (nedan) och Dijkstras termineringsalgoritm. Hur många, och vilka, meddelanden skickas? Rita upp en tidsaxel med kommunikationen. 4 5 Varje hörn är en process. Så fort ett hörn får en ny vikt (startnoden sig själv), skickar den nya avstånd till sina grannar. recv(newdist, PANY); if (newdist < dist) dist = newdist; /* start searching around vertex */ for (j = ; j < n; j++) /* get next edge */ if (w[j]!= infinity) { d = dist + w[j]; send(&d, Pj); /* send distance to proc j */ De som inte har fått full poäng har antingen inte ritat upp en kommunikationsaxel, inte insett att jobben körs parallellt, eller missförstått Dijkstras termineringsalgoritm (se lastbalanseringsföreläsningen). Uppgift 6 (5p) Ta fram en effektiv algoritm för alla-till-alla kommunikation på en hyperkub (pseudokod). Vad blir tidskomplexiteten? Alla-till-alla-kommunikation finns bland annat tydligt beskrivet i MPI-föreläsningen. Många har implementerat all-gather istället. alltoall(iam, d, list) /* d = antal dimensioner */ { n = d ; for (i = d- /* MSB */; i >= ; i--) { newlist = for (j = ; j < n; j++) { if ((iam bit_and ( i ) and not (j bit_and ( i ))) or (not (iam bit_and ( i )) and (j bit_and ( i ))) { /* vi är hög, skicka alla låga listelementnedåt, alternativt vi är låg, skicka höga listelement uppåt */ newlist = newlist + list[j] recv_nowait (newlist, iam xor ( i )) send (newlist, iam xor ( i )) wait_for_recv /* OK, nu har vi gjort utbyte, och fått en ny lista, newlist, som ska sättas in i list */ for (j = k = ; j < n; j++) { 4

if ((iam bit_and ( i ) and not (j bit_and ( i ))) or (not (iam bit_and ( i )) and (j bit_and ( i ))) { list[j] = newlist[k]; k++; I J K L M N O P I varje steg skickas halva listan, dvs: t start + (d-) l t byte Totalt alltså: d (t start + (d-) l t byte ) A B C D E F G H I M K O J N L P Där l är längden på varje element A E C G B F D H C G K O D H L P A E I M B F J N Uppgift 7 (8p) Beskriv Cannon s algoritm för matrismultiplikation och visa hur den kan implementeras med MPI. Vad blir tidskomplexiteten? Antag att alla matriser är n n och processornätet är p p, p n. Cannon finns beskriven på numeriska-algoritmer-föreläsningen. Distrubuera (skifta), och sedan multiplicera, skifta, multiplicera, skifta. Varje block är (n/p) (n/p). Först skiftning: ((n/p) t float + t start + (p-)t hopp ) (:an pga båda A och B-matris. t hopp är den extratid ett meddelande tar om det ska genom flera länkar. t float är tiden för att skicka ett flyttal. Sedan multiplikation: (n/p) t flop Och skift: ((n/p) t float + t start ) Totalt: ((n/p) t float + t start + (p-)t hopp + p ((n/p) t flop + (n/p) t float + t start )) = ((p+) t start + (p-)t hopp + (p+)(n/p) t float + p((n/p) t flop )) Om man ignorerar t start och t hopp får man: O(n /p t float + n /p t flop ) 5

Uppgift 8 (p) Sortera följande lista genom att använda bitonic sort:, 5, 6, 4,,, 8, Se boken. 6