Vier Schritte zum optimierten Multicore-Quellcode

veröffentlicht von Michael Hülskötter am 11. Dezember 2008

Wir haben uns hier ja schon mit den Regeln der parallelen Programmierung beschäftigt und sind auch der Frage nachgegangen, welche Tools hierfür zur Verfügung stehen. Heute geht es um die vier wesentlichen Schritte, die zur Erstellung des optimalen Multicore-Codes notwendig sind.

1. Untersuche! Und zwar den gesamt Quellcode auf potenzielle Parallelisierung hin. Hierfür eignen sich vor allem Schleifenkonstrukte, die beispielsweise eine große Menge an Daten berechnet, was oft simultan geschehen kann. Es geht aber auch um “Hotspots”, die es in jedem Programm gibt und die die Leistungsfähigkeit der Anwendung negativ beeinträchtigen können. Um diese Untersuchungen möglichst effizient durchzuführen, gibt es spezielle Tools wie den VTune Performance Analyzer, der genau für diese Aufgaben geschaffen worden ist.

2. Kodiere! Und zwar parallel. Nachdem die passenden Programmstellen identifiziert worden sind, beginnt die eigentliche Arbeit, nämlich die des Kodierens. Packen Sie also all den parallelen Code in Ihr Programm, von dem Sie glauben, dass er Ihre Anwendung schneller macht, da sie von den vorhandenen Prozessorkernen profitiert. Und Sie können es sich dabei ein wenig leichter machen, indem Sie auf Tools zurückgreifen, die Ihnen mithilfe vorgefertigter Routinen und Bibliotheken dabei helfen. Dies können einfache Anweisungen paralleler Schleifenkonstrukte sein, aber auch komplexe Funktionen für Multimedia- oder Wissenschaftsanwendungen.

3. Debugge! Nachdem der Quellcode Ihrer Anwendung möglichst gut für die parallele Ausführung optimiert worden ist, steht noch eine Menge Debug-Arbeit auf dem Plan. Auch hierfür gibt es die passenden Tools, denn nur schwer auffindbare Fehler wie Dead Locks oder unvorhersehbare Race Conditions lassen sich mit einfachen Testmethoden gar nicht oder nur sehr aufwendig identifizieren. Ziehen Sie hierzu am besten die passenden Tools zu Rate wie den Thread Checker, der genannte Fehlerquellen aufdeckt und Ihnen genau sagt, welche Quelltextstellen kritisch bzw. fehleranfällig sind.

4. Optimiere! Jetzt haben Sie es fast geschafft, aber noch können Sie sich nicht sicher sein, dass Ihre Multicore-Anwendung auch wirklich optimal läuft. Denn noch können einzelne Codeteile den gesamten Programmablauf ausbremsen, da beispielsweise die Speicherverwaltung nicht effizient erfolgt oder die Anwendung nicht richtig skaliert. Das bedeutet im schlimmsten Fall, dass Ihre Software zwar auf einem Dualcore-Rechner perfekt läuft, es auf einer Quadcore-Maschine aber permanent zu Wartezeiten kommt, da mehr Threads zur Laufzeit erzeugt werden als Prozessorkerne vorhanden sind. Auch für diese Zwecke gibt es die entsprechenden Tools: den schon erwähnte VTune Analyzer, aber auch den Intel Thread Profiler, der die Effizienz des parallelisierten Code grafisch darstellt und Ihnen so hilft, Schwachstellen schneller und leichter zu lokalisieren.


Share/Bookmark
Kategorien : Multicore Tags : , ,

Kommentare

Keine Kommentare vorhanden.


Beitrag kommentieren.

Sie müssen angemeldet sein um diesen Beitrag zu kommentieren. [Login | Registrieren]

(erforderlich)

(erforderlich)