Vorheriger Beitrag: Workshop: parallel Programmieren mit OpenMP
Concurrency Checker: Wie parallel ist parallel?
Anfang Februar habe ich schon mal darüber berichtet: Mit dem kostenlosen Intel-Tool Concurrency Checker kann man ohne größere Mühen herausfinden, ob und in welchem Umfang eine parallelisierte Anwendung skaliert. Hierfür beherrscht das Tool einige wichtige Dinge:
- Es stellt die Anzahl der vorhandenen CPU-Ressourcen fest, also Prozessoren und Prozessorkerne (und sogar virtuelle CPUs).
- Es stellt fest, wie viele Threads jeweils parallel ausgeführt werden und wie lange dies insgesamt dauert.
- Es berechnet den prozentualen Anteil des parallelisierten Quellcodes.
Der Concurrency Checker kann aber noch mehr: So stellt er fest, ob die Multithread-Anwendung anhand der vorhandenen Prozessorkerne skaliert, diese also vollständig ausnutzt. Dies geschieht übrigens zur Laufzeit der Software. Schön an dem Tool ist aber auch die Tatsache, dass es nicht erst aufwendig installiert werden muss und damit sofort zur Verfügung steht. Und zwar mittels einer grafischen Bedieneroberfläche oder im simplen Zeileneditormodus.
Das Werkzeug kann aber auch auch zu Vergleichszwecken eingesetzt werden: Zunächst lässt man sein serielles Programm einmal mit dem Tool durchlaufen, um so die benötigte Laufzeit herauszufinden. Nach der Parallelisierung geschieht das Ganze noch einmal, womit man einen guten Indikator dafür erhält, wie gut das Multithreaden der Anwendung geklappt hat.
Was der Concurrency Checker allerdings nicht kann ist zweierlei: Es gibt keine Hinweise darauf, welche Stellen der sequenziell programmierten Anwendung das höchste Parallelisierungspotenzial aufweisen. Und zum anderen lassen sich Hotspots und andere Probleme der parallelisierten Software mit dem Tool nicht herausfinden. Wie gut aber, dass es hierfür Werkzeuge wie den VTune Performance Analyzer und den Thread Checker gibt.
Ach ja: Den Concurrency Checker bekommt ihr auf dieser Webseite, und das gratis!



Kommentare
Keine Kommentare vorhanden.