Die inhärente Parallelität der Datenflussprogrammierung sorgt dafür, dass sich die grafische Entwicklungsumgebung NI LabVIEW als ideale Programmiersprache für die Nutzung von parallelen Programmiertechniken anbietet. Traditionelle textbasierte Sprachen haben eine sequenzielle Syntax und können daher schwer Parallelität abbilden. Dagegen ist die Erstellung einer multithreading-fähigen Anwendung in LabVIEW intuitiv und einfach.
Mithilfe der grafischen Programmierumgebung LabVIEW ist paralleles Programmieren ganz einfach, selbst für Anfänger. Zwei separate Tasks, die hinsichtlich der Daten nicht voneinander abhängen, werden parallel ausgeführt. Es ist keine weitere Programmierung erforderlich.
Abbildung 1 zeigt eine einfache Datenerfassungsroutine. Der obere Abschnitt des Programmcodes besteht aus einem Task für die Erfassung einer Spannung und der untere Code ist der Task für die Ausgabe von digitalen Daten.
Abb. 1: In LabVIEW werden zwei Abschnitte des Programmcodes ohne Datenabhängigkeit unabhängig voneinander parallel ausgeführt.
Diese zwei unabhängigen Tasks zur Datenerfassung müssen sich dieselbe Zentraleinheit auf einem Single-Core-Prozessor teilen. Auf einem Multicore-Prozessor kann jeder Thread auf einem eigenen Prozessor ausgeführt werden, was die Ausführungsgeschwindigkeit erheblich verbessert.
Ist Datenparallelität Teil einer Applikation, so muss unbedingt sichergestellt werden, dass die zwei Tasks keine gemeinsamen Ressourcen haben, durch die es zu einem Engpass kommen könnte (wie etwa beim Programmcode in Abbildung 2).
Bei der Eaton Corporation setzte eine Gruppe von Entwicklern – deren einzige Aufgabe darin besteht, die Mess- und Prüfsysteme zu verbessern, die in der Forschungs- und Entwicklungsabteilung für LKWs von Eaton eingesetzt werden – die Leistung der Multicore-Verarbeitung und der multithreading-fähigen Architektur von LabVIEW ein. Das Ziel war, die Anzahl an Kanälen, die durch Eatons Systeme verlaufen, auf das mehr als vierfache zu steigern und Echtzeitdeterminismus zu erzielen. Diese LabVIEW-Anwendung umfasst drei asynchrone Schleifen, welche die parallelen Aufgaben des Erfassens, der Teststeuerung und der Bedienung der Benutzeroberfläche umsetzen. Vor Einführung dieser Lösung konnte das Team die Prüfanforderungen nur erfüllen, indem entweder die Arbeitslast sequenziell aufgeteilt oder eine Reihe von Single-Core-Desktops zur Ausführung der Anwendung genutzt wurde. Mithilfe von kommerziellen Standarddesktopsystemen war das Team in der Lage, den Stromverbrauch, die Wärmeabgabe und die Prüfzeit zu verringern und so die Gesamtkosten zu reduzieren.
Durch Task-Parallelität und andere Programmiertechniken können Softwareentwickler die Leistung der Multicore-Verarbeitung voll ausnutzen. Entwickler, denen diese Techniken bekannt sind, können Applikationen für die Zukunft vorbereiten. Der parallele Charakter der grafischen Entwicklungsumgebung LabVIEW ermöglicht Entwicklern, die Anwendungen von morgen effektiv zu erstellen.