Vorheriger Beitrag: Mac OS X 10.5 (Leopard) fährt voll auf Multicore ab
Beliebte Fehler bei der Parallelprogrammierung
Parallelprogrammierung ist keine einfache Disziplin und birgt eine Menge Fehlerquellen. Das beginnt beim grundsätzlichen Design der Anwendung und endet bei falsch gesetzten “Locks”. Daher folgen an dieser Stelle die beliebtesten Fehler der Multicore-Programmierung. Und was man dagegen tun kann, erfahren Sie hier auch.
Zunächst einmal helfen unsere fünf Multicore-Regeln, die wir Ende letzten Monats aufgestellt haben. Die wichtigste davon lautet beim Software-Design: Denke parallel! Denn nur so hält man am Schluss eine Anwendung in den Händen, die sich mithilfe der passenden Tools bestmöglich parallelisieren lässt.
Eine beliebte Fehlerquelle ist ein Überangebot an Threads, vor allem dann, wenn Sie diese “manuell” programmieren, so wie im Falle von Pthreads. Daher sollte man durchaus sparsam mit dem Erstellen von Threads umgehen, denn nur eine ausgewogene Balance von parallelem und seriellem Quellcode bringt die erwünschten Leistungsschübe. Oder man bedient sich nützlicher Tools wie Intel TBB, die Threads automatisch generieren.
Ebenfalls sehr wichtig ist die optimale Granularität der zum Einsatz kommenden Locks und Unlocks, denn jedes Sperren und Entsperren von parallelem Programmcode erfordert einen hohen Verwaltungsaufwand. Werden Locks zu lange ausgeführt, können sie andere Threads unnötig blockieren, was die Anwendung insgesamt ausbremst. Und auch die gemeinsam genutzten Speicherressourcen müssen bestmöglich aufeinander abgestimmt sein, denn ein übertriebener Synchronisierungsaufwand macht sich negativ bemerkbar.
Ein weiterer Hemmschuh parallel programmierter Software ist die schlechte Verteilung der notwendigen Tasks auf die vorhandenen Prozessorkerne beziehungsweise Threads. Denn nur wenn Sie diese optimal ausnutzen, indem Sie Leerlaufzeiten einzelner Cores vermeiden, skaliert die Anwendung auf einem Multicore-System in entsprechender Weise.
All diese Fehler können Sie übrigens von Anfang an vermeiden, indem Sie Tools wie den VTune Performance Analyzer einsetzen, der Ihnen genau die Stellen zeigt, die man am besten parallelisieren kann. Aber auch das Laufzeitverhalten einer fertigen Anwendung kann mit VTune erforscht werden. Und wenn Sie dann mal ein parallel programmiertes Programm vorliegen haben, hilft der Thread Checker dabei, mögliche Fehler aufzuspüren. Hierbei sind Dead Locks und Race Conditions eine häufig auftretende Fehlerquelle, die sich mithilfe des Tools lokalisieren lassen.
Keine ähnlichen Artikel.

Trackbacks & Pingbacks