Steigern der Ausführungseffizienz mit parallelen For-Schleifen-Iterationen
- Aktualisiert2025-08-27
- 3 Minute(n) Lesezeit
Wenn Sie die parallele Ausführung von For-Schleifen-Iterationen aktivieren, können Sie mithilfe des Anschlusses für parallele Instanzen (P) und des Blockgrößenanschlusses (C) die Ausführungseffizienz programmatisch verbessern. In den meisten Fällen wird bereits mit den Standardeinstellungen der Anschlüsse eine optimale Ausführung erzielt, daher ist eine programmatische Konfiguration selten erforderlich. Mithilfe des Anschlusses für parallele Instanzen und des Blockgrößenanschlusses können Sie jedoch auch von der Voreinstellung abweichen.
Steigern der Ausführungseffizienz mit parallelen Instanzen
Nach der Aktivierung paralleler For-Schleifen-Iterationen wird an der For-Schleife der Anschluss für parallele Instanzen angezeigt. Verbinden Sie einen numerischen Wert mit dem Anschluss für parallele Instanzen, um die Anzahl parallel ausgeführter Instanzen programmatisch zu konfigurieren. Während der Kompilierung erzeugt LabVIEW so viele parallele Instanzen, wie im Feld Anzahl der Instanzen paralleler Schleifen des Dialogfelds Parallele Ausführung von For-Schleifen-Iterationen und am Anschluss für parallele Instanzen angegeben ist (sind die Werte ungleich, wird der kleinere Wert gewählt). Prozessoren führen parallele Instanzen simultan aus, um die Ausführungsgeschwindigkeit zu steigern.
Wenn Sie den Anschluss für parallele Instanzen offen lassen, fragt LabVIEW automatisch die Anzahl der logishcen Prozessoren des Computers ab und verwendet diese Anzahl als Standardwert für die parallelen Instanzen. In den meisten Fällen wird eine optimale Ausführungsgeschwindigkeit erzielt, wenn die Anzahl parallel ausgeführter Instanzen mit der Prozessoranzahl des Computers übereinstimmt. Daher sollten Sie den Anschluss für parallele Instanzen üblicherweise offen lassen.
Wenn Code in einer For-Schleife einen anderen Vorgang abwartet, sollte die Anzahl der Schleifeninstanzen idealerweise größer als die Anzahl logischer Prozessoren sein ("Überbelegung" genannt), um die größte Ausführungsgeschwindigkeit zu erreichen. Wenn beispielsweise eine Instanz einer parallelen For-Schleife auf Daten eines externen Geräts wartet, kann der Prozessor durch die Überbelegung eine zweite parallele Schleifeninstanz ausführen, während er auf die erste wartet. Wenn eine Instanz einer parallelen For-Schleife gleichzeitig mit anderem rechenintensiven Programmcode ausgeführt wird, kann durch sogenannte Unterbelegung eine optimale Ausführungsgeschwindigkeit erzielt werden. Unterbelegung bedeutet, dass die Anzahl der Schleifeninstanzen geringer als die Anzahl logischer Prozessoren ist. Bei der simultanen Ausführung einer For-Schleife und eines SubVIs wird beispielsweise durch die Unterbelegung dafür gesorgt, dass die For-Schleife nicht alle Prozessorressourcen auslastet, so dass noch andere Vorgänge abgearbeitet werden können.
Angeben eines benutzerdefinierten Iterationszeitplans mithilfe des Blockgrößenanschlusses
LabVIEW ist in der Lage, eine gewisse Menge an Iterationen auf unterschiedliche Schleifen aufzuteilen. Wenn parallele Iterationen aktiviert sind, verarbeiten Prozessoren die Blöcke simultan, wodurch sich die Ausführungsgeschwindigkeit verbessert. Per Voreinstellung werden die Blöcke in absteigender Größe abgearbeitet. Wenn die Abarbeitung mit den größten Blöcken beginnt, verringert sich der zeitliche Planungsaufwand. Durch Abarbeiten der kleineren Blöcke am Schluss wird der Leerlauf des Prozessors gering gehalten. Die Größe der Blöcke sollte nur dann programmatisch konfiguriert werden, wenn sich dadurch Vorteile ergeben.
Nach dem Aktivieren von parallelen For-Schleifen-Iterationen wird die programmatische Abarbeitung von Blöcken folgendermaßen konfiguriert:
- Klicken Sie mit der rechten Maustaste auf die For-Schleife und wählen Sie Parallele Ausführung von Iterationen konfigurieren. Daraufhin wird das Dialogfeld Parallele Ausführung von For-Schleifen-Iterationen angezeigt.
- Klicken Sie unter Iterationszuweisung auf Aufteilung über den Anschluss für die Iterationsblöcke. Unter dem Anschluss für parallele Instanzen wird nun der Blockgrößenanschluss angezeigt.
- Verbinden Sie den Anschluss mit einem Zahlenwert oder einem Array aus Werten.
Wenn Sie einen Zahlenwert mit dem Blockgrößenanschluss verbinden, gibt dieser die Anzahl der Iterationen jedes Blocks an. Mit einem Array aus Werten können Sie noch größeren Einfluss auf das Iterations-Timing ausüben. Jeder Wert des Arrays entspricht der Iterationsanzahl in einem Block, wobei der erste Block am Index 0 beginnt.