seppmedlogo
cubes

Multi-Core

An der Verwendung von Multi-Core-Prozessoren geht schon bald kein Weg mehr vorbei. Hier ist nach wie vor das 1965 von Gordon E. Moore formulierte Gesetz treibenden Kraft. Moore postulierte, dass sich die Anzahl der Transistoren alle 24 Monate verdoppeln werde. Damit verband sich die allgemeine Erwartung, dass sich die Performance von Computern alle 24 Monate verdoppelt.

Heute stößt die Entwicklung jedoch an eine neue Schranke. Tatsächlich ist der Leistung einzelner Prozessoren durch die sogenannte „Power Wall“ Grenzen gesetzt. Sie stellt eine physikalische Grenze der möglichen Energieentsorgung (sprich: Kühlung) für Transistoren dar. Bei steigender Dichte der Transistoren auf einem Chip entsteht so viel Hitze, dass eine Drosselung der Taktfrequenz erforderlich wird. Aufgrund dieser Limitierung dürfte eine weitere, nennenswerte Performancesteigerung nur durch Parallelisierung zu erreichen sein. Dies hat tief greifende Auswirkungen auf die Softwareentwicklung: Hier ist eine weitere Performancesteigerung ebenfalls nur durch „echte“ Parallelisierung von Aufgaben möglich.

Zu den entscheidenden Architektur-Aufgaben gehört es, die Skalierbarkeit der Software sicherzustellen. Abhängig von der Anzahl der Prozessoren muss sich die Software optimal auf die Kapazitäten verteilen. Die kritischen Pfade müssen bestimmt und möglichst limitiert werden, da diese zwingend seriell sind und somit nicht skalieren. Im Gegenzug eröffnen sich neue Freiheiten im System- und Softwaredesign. Ein Paradigmenwechsel bahnt sich an, denn die gewohnte serielle Denkweise muss einer echten Parallelisierung weichen – eine Herausforderung an jeden Entwickler (Architekten, Designer)!

Performance:

  • gleiches Problem, geringerer Zeitanspuch

 

 

  • größeres Problem, gleicher Zeitanspruch

 

Power Consumption:

  • gleiches Problem, gleicher Zeitanspruch jedoch geringerer Energieverbrauch (geringere Frequenz = geringere Taktrate)

 

Hier finden Sie Beispiele für unsere Erfahrungen in diesem Bereich.

Algorithmenbibliothek: Entwicklung, Optimierung, Wartung

TBS_Med_CT: Algorithmenbibliothek - Entwicklung, Optimierung, Wartung

Im Rahmen der Umstellung der Produktplattform wurde sepp.med vom Kunden beauftragt, die von der Vorentwicklung zugelieferten Berechnungsalgorithmen für die Bildauswertung eines medizindiagnostischen Geräts um- bzw. neu zu schreiben. Ziel war es, die Performance der Algorithmen zu steigern. sepp.med realisierte dies durch Parallelisierung der Abläufe. Durch konsequentes „Performance Engineering“ ließ sich die Software so gestalten, dass sie auf Multi-Core-Prozessoren optimal ausbalanciert läuft. Besondere Aufmerksamkeit galt der Skalierbarkeit der Algorithmen, um die Unabhängigkeit von der Anzahl der Cores zu sichern.

Darüber hinaus war die Abwärtskompatibilität zur „alten Technologie“ gefordert. Mit anderen Worten: Der Quellcode muss so implementiert sein, dass er auf verschiedenen Plattformen und in Entwicklungsumgebungen mit unterschiedlichen Compilern zu identischen Ergebnissen führt – unter größtmöglicher Vermeidung von Redundanzen im Quellcode (wegen des Wartungsaufwands).

Software-Entwicklung zur Applikationsoptimierung

TBS_Med_MR: Software-Entwicklung zur Applikationsoptimierung

sepp.med unterstützt den Kunden bei Neu- und Weiterentwicklungen im Bereich der Bildrekonstruktion aus den Rohdaten der bildgebenden Systeme.

Unter anderem gehören folgenden Tätigkeiten dazu:

  • Analyse und Optimierung von Bildberechnungsprogrammen
  • Performance- und Speicheroptimierung im Rahmen des Bildberechnungs-Frameworks
  • Erarbeitung und Implementierung der Parallelisierung von Berechnungsalgorithmen
  • Konzepterstellung und Prototyping für die Integration eines neuen Algorithmus
  • Wartung bestehender Funktionen

Im Zusammenhang mit den Entwicklungs-Arbeitspaketen wird die Dokumentation aktualisiert und verbessert. Die Entwickler spezifizieren Unittests und führen sie durch. Dazu gehören auch Performance-Analysen für neue Hardware. sepp.med betreut die Wartung der Analysetools und installiert regelmäßige Updates.