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.
bei mir ist meine parallele Implementierung von columnSum und prefixesParallel eine ecke langsamer als die sequentielle Implementierung. Geht das noch jemanden so?
a) ist die testgröße groß genug?
b) wird so wenig wie nötig synchronisiert, v.a. nicht in irgendwelchen inneren schleifen?
c) ist die lastverteilung ausgeglichen?
bei mir auch
Könnte aber daran liegen, dass b) nicht so recht klappen will(jeder Prozess muss auf den Vorgänger Warten in columnSum und jeder Prozess muss nach jeder Spalte auf alle Warten bei prefixesParallel)
oder geht das auch mit weniger Warten?
Verstehe ich dich richtig und dein Programm läuft dann quasi sequentiell mit Warteschlangen und Threads, die immer auf alle anderen warten. Dann geht das definitiv mit weniger warten. Denn in der column-sum sind die Spalten unabhängig von einander. Du musst halt in deinem Fließband auf die Pakete warten, aber das Fließband sollte nur durch die einzelnen Zeilen laufen.
Ich denke was er meinte ist, dass in columnSum nur der erste Thread nie warte muss, die anderen aber sehr wohl bis das Ergebnis des vorherigen Threads da ist. Da man das Ergebnis der Threads ja über die Queues weitergibt, muss man (in der Queue) sehr viel synchronisieren. Ich glaube schlichtweg, dass die Berechnung (Summe bilden) zu kurz ist, damit das Pipeline-Pattern seine Vorteile ausspielen kann. Wenn die Berechnung eines Paketes länger dauern würde, sollte die parallele Lösung wohl schneller werden als die sequentielle.