Parallelisierte For-Schleife

Aufgrund des Datenflussprinzips eignet sich LabVIEW perfekt um Abläufe zu parallelisieren, um so die Ausführungszeit zu reduzieren. (z.b. höherer Durchsatz bei Tests) Eine sehr einfache Möglichkeit Teile eurer Algorithmen zu beschleunigen zeigen wir euch heute.

For-Schleifen arbeiten grundsätzlich den Code Iteration für Iteration sequenziell ab. Dies kann je nach Komplexität des Algorithmus nachteilig sein, da sich bei erhöhter Iterationsanzahl die Ausführungszeit mindestens Linear steigert. Je nach Algorithmus laufen die For-Schleifen meist nur auf einem CPU Kern.

Es wäre also ideal, wenn wir die For-Schleife auf mehrere Kerne aufteilen könnten. Wir könnten nun unseren Algorithmus manuell auf mehrere parallele For-Schleifen aufteilen um so die Performance zu erhöhen. Das wäre jedoch recht aufwendig. Es gibt dafür eine sehr elegante Lösung. Man kann in LabVIEW für jede For-Schleife eine Parallelisierung aktivieren. Die maximal sinnvolle Anzahl an parallelen For-Schleifen Instanzen ist CPU- und Systemlastabhängig.

Parallele Instanzen für For-Schleife aktivieren

Mit dieser Einstellung teilt nun LabVIEW automatisch den Code innerhalb der For-Schleife auf zb. 4 Threads auf, welcher nun im Idealfall parallel auf 4 Kernen ausgeführt wird. Man kann die parallelen Instanzen ja nach System auch zur Laufzeit definieren. Dazu setzt ihr den Wert des P Eingangs der For-Schleife.

Parallele Instanzen

Um zu überprüfen, ob euch diese Einstellung in eurem Fall tatsächlich eine Verbesserung der Ausführungszeit bringt, würden wir empfehlen den Code entsprechend zu benchmarken. Folgend ein Beispiel dazu.

In diesem Beispiel werden in einer For-Schleife 10 Millionen Zufallszahlen (double 64 Bit) erstellt und in einem Array aufgesammelt. Um die Zuverlässigkeit der Aussage zu erhöhen, wird der Code 100 mal ausgeführt. Die Start- und Endzeit wird subtrahiert, die Gesamtlaufzeit ermittelt sowie der Mittelwerte berechnet. Bei Verwendung einer “normalen” For-Schleife führt dies auf unserem Test System zu einer Ausführungszeit von 178ms.

Bei Aktivierung der parallelen Instanzen (indem Fall 8 Threads) verringert sich die Ausführungszeit auf 65ms. Dies entspricht einer Performance Verbesserung um ca. Faktor 2,7.

Diese und viele weitere Tricks lernt ihr in unseren Schulungen und Consultings. Link zu den Terminen

Link zum Beispielprojekt:
Die Programm Beispiele stellen nur einen Ausschnitt einer Gesamtapplikation dar. Verwendung der Code Beispiele auf eigene Gefahr.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert