LabVIEWForum.de - VI ausführen nicht Multithreading fähig?

LabVIEWForum.de

Normale Version: VI ausführen nicht Multithreading fähig?
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,
ich verwende in meinem VI fünf 3-D Graphen auf verschiedenen Register Karten. Da mein PC ab den Punkt wo er "einmal" alle Graphen (15 XY-Graphen) und die 3-D Graphen zeichnen soll extrem langsam wird, habe ich mal im Task-Manager nachgeschaut und festgestellt, das vorwiegend nur 1-Kern beansprucht wird.

Eckdaten:
Intel Core i7 @2,80GHz; 16GB Ram, Windows7

Meine Frage:
Wenn ich eine exe erstelle bzw. später eine Installationsdatei, werden dann alle Kerne genutzt oder ist das jetzt nur wegen der Umwicklungsumgebung, bzw. benötigt die Umwicklungsumgebung extra Rechen Leistung?
(01.09.2015 15:11 )xrzr schrieb: [ -> ]Meine Frage:
Wenn ich eine exe erstelle bzw. später eine Installationsdatei, werden dann alle Kerne genutzt oder ist das jetzt nur wegen der Umwicklungsumgebung, bzw. benötigt die Umwicklungsumgebung extra Rechen Leistung?
Hallo,

Es ist egal, ob du dein VI in der IDE oder später in der EXE ausführst. In neueren LV-Versionen gibt es die Möglichkeit, bestimmte Tasks bstimmten CPU-Kernen zuzuweisen (zeitgesteuerte Schleifen)

Außerdem musst du ein VI, das parallel mehrfach ausgeführt werden soll auf ablaufinvariant setzen. (STRG+I) --> Ausführung


Gruß, Marko
LabVIEW ist schon seit Jahr(zehnten) multi-threading und auch multi-core fähig. Allerdings musst du es auch so programmieren, ansonsten gilt "THINK DATAFLOW". Und einen User-Interface-Thread gibt es nur einen!

Gruß, Jens
"Außerdem musst du ein VI, das parallel mehrfach ausgeführt werden soll auf ablaufinvariant setzen. (STRG+I) --> Ausführung"


Es handelt sich um ein VI mit verschiedenen Registerkarten wo die ganzen Graphen drin verteilt sind. Kannst du das mit dem Ablaufvariant mal genauer erklären? (Warum und Wie)

Danke.
Wenn du in einem VI irgendwelche Berechnungen ausführst, und dieses VI 2 mal nebeneinander im übergeordneten VI platzierst, dann können diese beiden VIs (die ja eigentlich ein- und dasselbe VI sind) parallel ausgeführt werden, wenn es keine Datenabhängigkeit zwischen ihnen gibt. Dann muss aber dieses SubVI auf ablaufinvariant gesetzt werden, woraufhin LV den Code kopiert. Ansonsten kann LV dasselbe VI nur 2 mal nacheinander ausführen.

Wenn es aber darum geht, Graphen aufzueichnen, dann muss der eine UI Thread angesprochen werden, der die Graphen nur nacheinander aufzeichnen kann.
Dann hilft nur Datenreduktion - (prüfe Monitorpixel <-> Aufzeichnungspixel)


Gruß, Marko
Hallo xrzr,

Zitat:ich verwende in meinem VI fünf 3-D Graphen auf verschiedenen Register Karten. Da mein PC ab den Punkt wo er "einmal" alle Graphen (15 XY-Graphen) und die 3-D Graphen zeichnen soll extrem langsam wird
Ich frage mich, warum dein Programm alle 15 XY-Graphen und die 5 3D-Graphen gleichzeitig zeichnen soll, wenn diese sich doch auf 5 Registerkarten verteilen!?
Hälst du es wirklich für sinnvoll, Graphen zu zeichnen, die der User überhaupt nicht sehen kann?
Referenz-URLs