INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Extreme Laufzeitkosten durch Dynamic Dispatching?



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

08.02.2013, 12:27 (Dieser Beitrag wurde zuletzt bearbeitet: 08.02.2013 12:34 von Kiesch.)
Beitrag #8

Kiesch Offline
LVF-Stammgast
***


Beiträge: 401
Registriert seit: Mar 2009

2019, 2018, 2016
2009
DE

04519
Deutschland
RE: Extreme Laufzeitkosten durch Dynamic Dispatching?
Hab mal den Vorschlag ausprobiert in der For Schleife erst zufallszahlen zu erzeugen die ich addiere. Wie bereits vermutet wird dann die Laufzeit im wesentlichen durch die Erzeugung der Zufallszahlen bestimmt und nicht mehr durch die Addition (bei der Elementaren Addition). Für die "Number" Klasse wäre das natürlich noch Laufzeitintensiver (da die auch beim Initialisieren einer Nummer länger braucht als für das reine Zahlenauswürfeln).

P.S: Bin schon wieder auf ne Praktische Anwendung dafür gestoßen, neben der Tatsache, dass man da nette Sicherheitseinstellungen implementieren könnte (Überlaufcheck, Konservierung von Integers sofern möglich) - man könnte damit vernünftig und zu großen Aufwand die Rechenoperationen auf Vektoren und Matrizen erweitern.


Wie auch immer, das Hauptproblem steht also immer noch: Wie kriege ich den Rechner dazu mit sowas performant umzugehen? Ich komm aktuell an dem Rechner hier etwa auf ne Laufzeit von einer Sekunde für 100.000 Number Additionen. Das sind immerhin 10Mikrosekunden pro Addition. Der Rechner dürfte 3GHz haben - macht also ganz grob übern Daumen immerhin 30k Rechenzyklen pro Rechenoperation.

Das ist nicht wirklich befriedigend. Gerade da ich die Operationen nunmal so Elementar wie möglich definieren muss um das auch wirklich nützlich zu machen...

Frage daher auch: Kann das überhaupt schneller gehen?

Für mich stellt sich der Fall so dar:

Der reine Aufruf des VIs scheint enorm Zeit zu brauchen (und macht vermutlich letztlich die Laufzeit aus die ich sehe). Das wäre soweit nicht weiter schlimm, wenn ich beliebige viele davon erzeugen könnte und dann parralel arbeite (der Aufruf an sich dürfte ja nicht wirklich Rechenintensiv sein denke ich).
Simpel gesagt: Ne Laufzeit von 10Mikrosekunden wäre okay, wenn ich dafür 1000 Instanzen davon gleichzeit parrallel aufrufen kann (und somit Effektiv im Mittel alle 10ns eine Rechenoperation abschließe).

Nur wie kriege ich das dahin? Wie schon gesagt haben meine bisherigen Versuche der Parrallelisierung nichts signifikantes gebracht (mit gutem Willen vielleicht um nen Faktor 2 schneller).

Ich teste mal weiter.

*edit*
Anmerkung: Theoretisch würde ich vermuten, dass Ablaufinvariante Ausführung mit vorbelegter Kopie am schnellsten ist; allerdings steht mir das wegen dynamic dispatching nicht zur Verfügung.

Achja und laut NI:
Zitat:SubVI-Overhead
Wenn Sie ein SubVI aufrufen, ist damit ein bestimmter Overhead verbunden. Dieser Overhead ist ziemlich gering (im zweistelligen Mikrosekundenbereich), besonders im Vergleich zum I/O- und Anzeige-Overhead, der im zweistelligen Millisekundenbereich liegen kann. Trotzdem kann sich dieser Overhead in manchen Fällen summieren. Wenn Sie beispielsweise ein SubVI 10.000 Mal in einer Schleife aufrufen, kann der Overhead die Ausführungsgeschwindigkeit bedeutend beeinträchtigen. In diesem Fall ist es ratsam, die Schleife im SubVI einzubetten.

Das passt also grundsätzlich zu den Zeiten die ich messe. Heist für mich auch, dass die Lösung wirklich nur in parrallelisierung liegen kann.

Zitat:Märchen und Geschichten werden erzählt am Lagerfeuer, technischen Fakten werden mitgeteilt (oder so). (Genauso wie Software nicht auf einem Server "herumliegt", die ist dort installiert.)
*Zitat: IchSelbst*
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Nachrichten in diesem Thema
RE: Extreme Laufzeitkosten durch Dynamic Dispatching? - Kiesch - 08.02.2013 12:27

Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Dynamic Dispatch VI vor Zugriff schützen Kiesch 5 12.687 26.06.2012 08:31
Letzter Beitrag: BNT
  State Machine vs. Dynamic Dispatching Kiesch 4 11.633 12.03.2012 13:34
Letzter Beitrag: Kiesch

Gehe zu: