It's the hardware, stupid!

Linuxtag 2009: Programmierer sollen sich mit Hardware beschäftigen

Linuxtag 2009: Programmierer sollen sich mit Hardware beschäftigen

Mathias Huber
26.06.2009 Ulrich Drepper, Maintainer der Glibc, brach in seiner Keynote auf dem Linuxtag eine Lanze für hardwarenahes Programmieren.

Jeder Programmierer solle sich mit Parallelisierung und den Details moderner Prozessoren beschäftigen, sagte der Red-Hat-Mitarbeiter. Die CPU-Hersteller vermittelten den Eindruck, die Prozessoren würden stets dramatisch schneller, begann Drepper seinen englischsprachigen Vortrag mit dem Titel "Of programmers and hardware: transcending the gap".

Doch die meisten Programme liefen lediglich auf einem Prozessorkern, nicht alle Probleme seien gut parallelisierbar. Betrachte man den einzelnen Prozessorkern, sei kaum noch wachsende Performance erkennbar. Bei der Entwicklung von Chips mit zahlreichen Kernen könnte der einzelne Kern sogar schwächer werden, erläuterte Drepper.

Wer von modernen Prozessoren profitieren wolle, müsse sich daher mit deren Topologie beschäftigen: Mancher vermeintliche Achtkern-Prozessor bestehe tatsächlich aus zwei Vierkern-CPUs, die keinen gemeinsamen Cache besitzen, wie der Referent an Diagrammen veranschaulichte. Programme sollten auf allen Topologien funktionieren, aber gleichzeitig die vorhandenen Stärken einer Systemarchitektur nutzen.

Eine weitere Herausforderung sei die Non Uniform Memory Architecture (NUMA), die auf modernen Multi-Socket-Systemen zum Einsatz kommt. Hier hat jede CPU besonders schnellen Zugriff auf eine bestimmte Portion RAM, aber eher langsamen auf den Rest. Den gesamten Arbeitsspeicherschicht als uniforme Einheit zu behandeln führe hier zu schlechter und vor allem unvorhersehbarer Performance, die jegliche vernünftige Optimierung unmöglich mache.

Informationen über die System-Topologie stellt beispielsweise der Linux-Kernel im "/sys"-Dateisystem zur Verfügung. Geschickte Entwickler wüssten diese zu nutzen. Daneben gibt es Dreppers Bibliothek LibNUMA, die solche Funktionen bereitstellt. Der Sprecher verwies dazu auf seinen Aufsatz "What Every Programmer Should Know About Memory" (PDF)

Noch aus Cray-Zeiten, berichtete Drepper, kenne er SIMD: Single-Instruction/Multiple Data, das nun auf den meisten Prozessoren verfügbar ist. Vergleichs-, Logik und Vektor-Operationen lassen sich mit der derzeitigen SSE-Technologie bis zu viermal so schnell verarbeiten, mit dem kommenden AVX bis zu achtmal. Drepper zeigte als Codebeispiel einen For-Loop, dessen Interna er mit "Cmp"- und "Blend"-Instruktionen geeignet umbaute.

Nur mit Kenntnissen über die System-Architektur und die Anforderungen seiner Anwendung könne ein Programmierer die richtigen Entscheidungen für die Speicherbehandlung und - auf Mehrprozessor-Systemen - die Core-Affinität treffen. Das müsse er aber auch tun, denn das Betriebssystem selbst verwende nur geeignete Standardwerte und schalte gegebenenfalls einen nicht benötigten Prozessor aus, um Energie zu sparen.

Für dieses Hardware-bewusste Programmieren eigneten sich allerdings nicht alle Programmiersprachen gleichermaßen, schloss Ulrich Drepper seinen Vortrag, "auch, wenn ich mir mit solchen Aussagen nicht unbedingt Freunde mache". Perl und Python böten wenig Kontrolle, C und C++ sowie Fortran viel Kontrolle, während Java in der Mitte liege.

Dreppers Tipp für Programmieranfänger: Skriptsprachen taugten für den Einstieg, man dürfe aber weder Performance noch Energieeffizienz erwarten. Später müsse sich der Entwickler aber mit den Details der Hardware auseinandersetzen. Performance-kritische Programmteile ließen sich in C oder C++ neu implementieren. Bei der Parallelisierung helfe beispielsweise OpenMP. Zum Schluss heiße es, immer weiter zu optimieren, bis das gesteckte Ziel erreicht sei. Das alles sei nicht nur für Cracks, sondern für jeden Programmierer machbar.

Ähnliche Artikel

Kommentare

Aktuelle Fragen

Fernwartung oder wartung im haus
heide marie voigt, 29.06.2015 10:37, 2 Antworten
gerne hätte ich jemanden in Bremen nord, der mir weiter hilft - angebote bitte mit preis HMVoigt
Druckeranschluss DCP-195C
heide marie voigt, 29.06.2015 10:35, 1 Antworten
installiert ist linux ubuntu 15.04 offenbar auch der treiber für den Drucker DCP-195C. Die Konta...
keine arbeitsleiste beim einloggen
heide marie voigt, 27.06.2015 13:31, 0 Antworten
seit der neu-installierung von linux ubuntu 15.04 erscheint die arbeitsleiste rechts oben erst na...
raid platte an linux mint 17.1
andreas schug, 23.06.2015 19:44, 1 Antworten
folgende thematik NAS Iomega Storage Center wird auf einmal nicht mehr im netzwerk erkannt .....
SUSE 13.2 - Probleme mit kmail
kris kelvin, 03.06.2015 13:26, 2 Antworten
Hallo, nach dem Umstieg auf 13.1 hatte ich das Problem, daß kmail extrem langsam reagierte. Nun...