24.07.2019, 13:36
Hallo,
mir ist eher zufällig aufgefallen, dass in bestimmten Fällen die parallele Ausführung einer for-Schleife deutlich langsamer sein kann als die nicht-parallele. Aufgefallen ist mir dies bei der Auswertung eines sehr großen Datensatzes (einige 100.000 Werte). Die parallele Ausführung benötigte einige 100s. Eine nicht-parallele Ausführung benötigte nur etwa 1s, war also wesentlich schneller. Im angehangen Beispiel habe ich eine ähnliche Routine mit Zufallsdaten erstellt. Hier ist die nicht-parallele Schleife etwa 4mal schneller. Das Beispiel ist natürlich sinnlos, aber mir geht es um den Effekt. Real musste ich aus bestimmten Proben einige herausfiltern (am Probennamen (String) erkennbar). Mein PC (Win 7 / 64Bit) läuft mit einem i5-4590 (4 Kerne). Habe LabVIEW 2016 32Bit und LabVIEW 2016 64 Bit installiert.
Meine eigentlichen Fragen lauten: Ist dieses Problem bekannt? Wenn ja, gibt es irgendwelche Regeln bzw. ist es irgendwie erkennbar, ob die parallele Ausführung einer Schleife zu tatsächlich schnelleren Laufzeiten führt oder muss jedesmal getestet werden? Kann es sich um ein lokales Problem handeln?
Vielen Dank!
stsc
mir ist eher zufällig aufgefallen, dass in bestimmten Fällen die parallele Ausführung einer for-Schleife deutlich langsamer sein kann als die nicht-parallele. Aufgefallen ist mir dies bei der Auswertung eines sehr großen Datensatzes (einige 100.000 Werte). Die parallele Ausführung benötigte einige 100s. Eine nicht-parallele Ausführung benötigte nur etwa 1s, war also wesentlich schneller. Im angehangen Beispiel habe ich eine ähnliche Routine mit Zufallsdaten erstellt. Hier ist die nicht-parallele Schleife etwa 4mal schneller. Das Beispiel ist natürlich sinnlos, aber mir geht es um den Effekt. Real musste ich aus bestimmten Proben einige herausfiltern (am Probennamen (String) erkennbar). Mein PC (Win 7 / 64Bit) läuft mit einem i5-4590 (4 Kerne). Habe LabVIEW 2016 32Bit und LabVIEW 2016 64 Bit installiert.
Meine eigentlichen Fragen lauten: Ist dieses Problem bekannt? Wenn ja, gibt es irgendwelche Regeln bzw. ist es irgendwie erkennbar, ob die parallele Ausführung einer Schleife zu tatsächlich schnelleren Laufzeiten führt oder muss jedesmal getestet werden? Kann es sich um ein lokales Problem handeln?
Vielen Dank!
stsc