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

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: VI ausführen nicht Multithreading fähig? (/Thread-VI-ausfuehren-nicht-Multithreading-faehig)



VI ausführen nicht Multithreading fähig? - xrzr - 01.09.2015 15:11

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?


RE: VI ausführen nicht Multithreading fähig? - Trinitatis - 01.09.2015 15:17

(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


RE: VI ausführen nicht Multithreading fähig? - jg - 01.09.2015 15:23

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


RE: VI ausführen nicht Multithreading fähig? - xrzr - 01.09.2015 15:25

"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.


RE: VI ausführen nicht Multithreading fähig? - Trinitatis - 01.09.2015 15:34

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


RE: VI ausführen nicht Multithreading fähig? - GerdW - 01.09.2015 18:40

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?