Speedup Berechnen

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Speedup Berechnen
Hallo :slight_smile: ,

wie berechnet man den Speedup bei einem Fliessbandverarbeitung .

Klausur 23.2.2010 Wissensfragen Teil d :

Ein paralleles Programm , das mit einem 5-stufigen idealen Fliessband arbeitet , hat beim Verarbeiten vom 6 Arbeitspaketen einen Speedup und eine parallele Effizienz von : …

wie kann ich diese Aufgabe am besten bearbeiten ?
es stand ähnliche Frage in Übung 7 , aber habe sie leider nicht , wenn jemand das posten kann , wäre ganz nett .

vielen Dank .


Laufzeit, wie lange das Fließband für n Arbeitspaketen bei k Stufen benötigt: k + (n - 1)
Das erste Paket braucht k Stufen, danach purzeln n - 1 Pakete sofort (im Idealfall) heraus.

Laufzeit, wie lange es sequentiell bräuchte: k * n

SpeedUp folglich: S(n) = T_seq(n)/T_par(n) = k * n / (k + (n - 1) ) = k / (k/n + 1 - 1/n) → k für n → Unendlich.
Effizienz bei k gleichzeitigen Aktivitätssträngen: E(n) = S(n) / p = S(n) / k = k / (k/n + 1 - 1/n) / k = 1 / (k/n + 1 - 1/n) → 1 für n → Unendlich. (Intuitiv: ich kann beim Fließband im eingeschwungenen Zustand k Tasks [pro Takt] parallel verarbeiten. Bei k Prozessorkernen nutze ich diese also voll aus → Effizienz von 1.)

Edit:
Es war gar nicht nach dem asymptotischen Speedup und Effizienz gefragt.
In dem Fall setzt du einfach die konkreten Zahlenwerte ein:

S(n) = T_seq(n) / T_par(n) = 5 * 6 / (5 + 6 - 1) = 30 / 10 = 3
E(n) = S(n) / 5 = 3/5 (unter der Annahme von k=5 gleichzeitigen Aktivitätssträngen)