Vorheriger Beitrag: dotnet Cologne 2010 #3: Noch mehr Infos und Präsentationen
Fünf Tipps für das Parallelisieren von Anwendungen
Gerade habe ich bei den Kollegen des SoftTalk-Blogs eine interessante Top-10-Liste gefunden. Die geht der Frage nach, wie aus seriell programmierten Apps parallel ablaufende Anwendungen werden, die im Zeitalter von Multicore-Systemen möglichst gut skalieren und sämtliche vorhandenen Prozessorkerne für die Ausführung der Software optimal nutzen. Daher folgen jetzt meine fünf Lieblingstipps mit entsprechenden Kommentaren und Verweisen.
Tipp 1: Mithilfe bestimmter Compiler-Einstellungen lassen sich mit ganz wenig Aufwand Programme nahezu doppelt so schnell ausführen. So sorgt beispielsweise der Switch /Qopenmp dafür, dass vorher eingefügte OpenMP-Pragmas vor allem Schleifen parallelisieren. Ok, hierzu ist naürlich schon ein wenig Handarbeit notwendig. Aber es lohnt sich!
Tipp 2: Die registernahe Parallelprogrammierung mithilfe von SSE-Operationen bietet ebenfalls eine ganze Menge an Beschleunigungspotenzial. So lassen sich mit wenigen zusätzlichen Programmcodezeilen beispielsweise Bildverarbeitungsalgorithmen erheblich beschleunigen. Also ohne größeren Aufwand.
Tipp 3: Beim Einsatz entsprechender Optimierungstools wie Intel VTune Analyzer sollte man tunlichst darauf achten, die zu parallelisierende Software nicht vollständig analysieren zu wollen, da VTune beispielsweise einige tausend Events erstellt. Dabei geht es doch meist nur um wenige Flaschenhälse, deren Beseitigung die Anwendung spürbar beschleunigt. Das sind beispielsweise nicht vollständig ausgeführte Funktionen, mangelhafter Datenaustausch zwischen CPU und Speicher, ungewollte Leerläufe und Cache Misses.
Tipp 4: Beim Parallelisieren sollte man auf die wirklich kritischen Bereiche der Anwendung achten. Das sind vor allem die rechenintensiven, zeitraubenden Funktionen und Module, auf die es gilt sich beim Parallelisieren zu konzentrieren. Tools wie der Parallel Amplifier können dabei helfen, genau diese Programmbereiche aufzustöbern. Dabei ist natürlich auch ein wenig Kenntnis bezüglich der verwendeten Algorithmen und ihres Ressourcen-Hungers hilfreich.
Tipp 5: Oberste Priorität sollte sein, dass die parallelisierte Anwendung keine Laufzeitfehler produziert (Stichworte: Race Conditions, Dead Locks, etc.). Auch hierfür empfiehlt sich der Einsatz geeigneter Software-Tools wie des Intel Parallel Inspector, der mögliche Verklemmungen aufspürt, indem das Programm ausgeführt wird und sich so die eventuellen Ergebnisse ermitteln lassen, die zu Laufzeitfehlern führen können.
Keine ähnlichen Artikel.


Kommentare
Keine Kommentare vorhanden.