Academic Über NI Veranstaltungen NI Developer Zone Support Lösungen Online Store Kontakt MyNI

Dokumententyp: Tutorium
Von NI unterstützt: Ja
Veröffentlichungsdatum: 29.11.2007


Feedback


Ja Nein

Thematisch verwandte Links - Developer Zone

Thematisch verwandte Links - Products and Services

Programmierstrategien für Multicore-Prozessoren: Task-Parallelität

0 Bewertung(en) | 0.00 von 5
Drucken | PDF

Übersicht

Dieses Whitepaper ist Bestandteil der Serie „Grundlagen der Multicore-Programmierung“
Multicore Programming Fundamentals Whitepaper Series

Bis vor kurzem haben Fortschritte bei der Rechnerhardware für deutliche Steigerungen bei der Ausführungsgeschwindigkeit der Software gesorgt, ohne dass Softwareentwickler viel dazu beitragen mussten. Steigerungen bei der Prozessorleistung brachten einen sprunghaften Anstieg der Softwaregeschwindigkeit. Da sich Prozessorgeschwindigkeiten jedoch ihrer maximalen Obergrenze nähern und Prozessorhersteller neue Techniken nutzen, um die Verarbeitungsleistung zu erhöhen, hat in diesem Bereich ein Umbruch begonnen. Die Einführung von Multicore-Prozessoren stellt Softwareentwickler vor eine neue Herausforderung: Sie müssen nun die Programmiertechniken entwickeln, die eine optimale Ausnutzung des Verarbeitungspotenzials von Multicore-Rechnern ermöglichen. Eine dieser Programmiertechniken ist die Umsetzung von Task-Parallelität.

Task-Parallelität

Task-Parallelität erreicht die simultane Ausführung voneinander unabhängiger Aufgaben in Software. Als Beispiel soll ein Single-Core-Prozessor dienen, der gleichzeitig einen Web-Browser und ein Textverarbeitungsprogramm ausführt. Obwohl diese Anwendungen auf separaten Threads laufen, teilen sie sich letztendlich dennoch denselben Prozessor. Eine zweite Möglichkeit wäre, dieselben Programme auf einem Dual-Core-Prozessor auszuführen. Auf dem Rechner mit zwei Kernen können diese zwei Anwendungen im wesentlichen unabhängig voneinander laufen. Wenn auch die Dual-Core-Rechner einige Ressourcen gemeinsam nutzen, so dass sie nicht völlig voneinander unabhängig sind, können sie dennoch diese zwei Aufgaben effizienter abarbeiten.

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.

Task-Parallelität in LabVIEW

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


[+] Enlarge Image

Abb. 2: Wenn ein Task von den Daten eines anderen abhängt, können die zwei Tasks nicht unabhängig ausgeführt werden.

In diesem Programm teilen sich die zwei Tasks Daten: Der digitale Tasks muss warten, bis der analoge Tasks begonnen hat. Obwohl dieser Programmcode parallel zu sein scheint, ist er dies in Wahrheit nicht, da sich die Tasks Daten teilen. Das muss unbedingt berücksichtigt werden, wenn Anwendungen mithilfe von Task-Parallelität programmiert werden.

Task-Parallelität in einer Anwendung

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.

Weitere Informationen zur Multicore-Programmierung finden Sie unter:

Grundlagen der Multicore-Technologie

Informationen zur Multicore-Programmierung

Programmierstrategien für Multicore-Prozessoren: Datenparallelität

Programmierstrategien für Multicore-Prozessoren: Pipelining

Mehr über NI LabVIEW

0 Bewertung(en) | 0.00 von 5
Drucken | PDF

AGB
Dieses Tutorium ("Tutorium") wurde von National Instruments ("NI") entwickelt. Auch wenn National Instruments dieses Tutorium technisch unterstützt, ist es jedoch möglich, dass dieses Tutorium nicht umfassend getestet und überprüft wurde. NI übernimmt weder Garantien bezüglich der Qualität des Tutoriums noch bezüglich der weiteren technischen Unterstützung neuer Versionen ähnlicher Produkte und Treiber. DIESES TUTORIUM WIRD IM "IST-ZUSTAND" ZUR VERFÜGUNG GESTELLT UND NI ÜBERNIMMT KEINERLEI GARANTIEN. AUSFÜHRLICHERE ERLÄUTERUNGEN ZU ANDEREN EINSCHRÄNKUNGEN ENTNEHMEN SIE BITTE DEN NUTZUNGSBEDINGUNGEN AUF NI.COM (http://ni.com/legal/termsofuse/unitedstates/us/).