hvor T(n) er gjennomsnittstiden for å løse et problem på en n-prosessor maskin. T(n) er gitt ved:S = T(1) / T(n) .
hvor f(i) er sannsynligheten for at problemet løses ved å fordele arbeidet likt på i prosessorer, ogT(n) = sum(i = 1..n, f(i) x d(i))
er gjennomsnittlig arbeid pr. prosessor ved bruk av i prosessorer på denne måten.d(i) = 1 / i
Utfør beregningen når f(i) er:
I det første tilfellet er det jevn fordeling av arbeid på prosessorene. I det andre tilfellet er det antatt størst sannsynlighet for at oppgaven blir tilordnet et større antall prosessorer, mens det i det tredje tilfellet antas størst sannsynlighet for at oppgaven kjøres på et mindre antall prosessorer.f(i) = 1 / n og f(i) = i / sum(j = 1..n, j), i = 1..n og når den er f(i) = (n - i + 1) / sum(j = 1..n, j), i = 1..n
Plott estimatene for hastighetsøkningen.
Hint: Bruk gnuplot til å plotte disse kurvene. Programmet er enkelt å bruke. Det er lagt ut et hjelpe-eksempel på filen ~dam/45214/ovinger/gnuplot. Se også manualsidene på Sun og Info-sidene i Emacs for mer informasjon.
L1: DO 10 I = 1, 1024 L2: SUM(I) = 0 L3: DO 20 J = 1, I L4: 20 SUM(I) = SUM(I) + J L5: 10 CONTINUEAnta at setningene L2 og L4 tar to maskin-sykler hver. En maskin-sykel inkluderer både CPU-aktivitet og minne-aktivitet. Se bort i fra ``overhead'' p.g.a. løkkekontroll (setningene L1, L3 og L5) og andre faktorer, som f.eks. system ``overhead'' og ressurs-konflikter.
Hva er utførelsestiden og hastighetsøkningen sammenlignet med oppgaven i a)? (Merk at arbeidsmengden p.g.a. av J-løkken ikke er balansert på de forskjellige prosessorene).