Scientific computing

Scientific computing optimiert Performance.

Scientific Computing ist eine Verarbeitungs-Kette. Als Basis dient die performante Verarbeitung sehr großer Datenmengen und das Aufbauen und Navigieren in komplexen Datenstrukturen. Auf dieser Grundlage schafft Scientific computing vielfältige Möglichkeiten mit wissenschaftlichen Verfahren aus den gegebenen Roh-Daten Erkenntnisse zu gewinnen. Diese Erkenntnisse, wollen wiederum in geeigneten Datenstrukturen abgelegt, aggregiert, durchsucht werden, um schließlich visualisiert und präsentiert zu werden. So entsteht durch Scientific Computing eine Kette von Verarbeitungsschritten von den Roh-Daten bis zur Präsentation der Erkenntnis in Form von Grafiken in Publikationen oder auf Webseiten.

Scientific Computing ist individuell. Die Natur der Problemstellung und der Daten bestimmt welche Technologien, Datenformate, Algorithmen, Programmiersprachen und Programme in welcher Kombination angemessen sind, um mit möglichst geringem Ressource-Verbrauch einen reibungslosen Ablauf der Verarbeitungs-Kette zu gewährleisten. Ein tiefes technisches wie wissenschaftliches Verständnis der den Daten zu Grunde liegenden (Mess-)Prinzipien und Prozesse ist daher essentiell.

Scientific Computing ist ein Prozess. Oftmals endet die Verarbeitung nicht einfach mit dem Erkenntnis-Gewinn aus den Roh-Daten. Die gewonnenen Daten dienen erneut als Eingangsdaten oder Parameter für komplexe Berechnungen und Simulationen, welche andere Roh-Daten erzeugen, welche verarbeitet werden müssen. Hierbei ist es unerlässlich unterschiedliche Simulations-Techniken und numerischen Verfahren zu beherrschen. Der Prozess-Charakter des Scientific Computing erfordert eine geeignete automatisierte Steuerung der einzelnen Prozess-Schritte, welche sich nicht nur in der Verteilung der Prozesse auf unterschiedliche CPUs/Server erschöpft. Oftmals dienen Software-Pakete auf unterschiedlichen Betriebssystemen als Prozess-Schritte, welche durch die Prozess-Steuerung die Plattformen übergreifend orchestriert werden müssen.

Scientific Computing ist modular. Da es keine für alle Problemstellungen taugliche Gesamt-Lösung geben kann, bietet es sich an durch die Nutzung wiederverwendbarer Open-Source Software-Bausteine ein modulares System zu schaffen und zu pflegen. Dies reduziert die Entwicklungszeit und damit die Entwicklungskosten. Die Modularität unterstützt dabei synergetisch die Prozess-Steuerung. Auch zeigt die Erfahrung, dass ein modulares System eher an sich ändernden Anforderungen angepasst werden kann und noch dazu einfacher zu testen und zu debuggen ist.

Scientific Computing erfordert höchste Software-Qualität. Durch den Erkenntnis-Gewinn beim Scientific Computing sind sich ständige ändernde Anforderungen und tiefgreifende Veränderungen durch Performance-Probleme eher die Regel als die Ausnahme. Die Entwicklung von Software für Scientific Computing ist daher nur zu leisten, wenn diese selbst als ein Prozess begriffen wird. Die verwendeten Entwicklungs-Methoden, eingesetzten Programmier-Paradigmen und die Code-Qualität müssen so gut sein, dass sie eine jahrelange Weiterentwicklung der Software gewährleisten können.

Scientific computing optimiert Performance. Hierbei werden Programme, Computer-Systeme und -Netzwerke zum Gegenstand der wissenschaftlichen Analyse. Mit wissenschaftlicher Methodik, wie statistischen Verfahren und der Messung und Interpretation von Performance-Daten, werden Performance-Probleme identifiziert und überwunden. Dieser Zweig des Scientific Computings setzt umfassende Kenntnisse über die interne Arbeitsweise von Mikro-Controllern, Computern, Datenspeichern, Netzwerk-Komponenten, Protokollen, Betriebssystemen, numerischen Verfahren und Simulations-Techniken voraus.

Scientific computing reduziert Kosten. Es scheint, dass heute ohne den Einsatz von kostspieligen High Performance Clustern kaum eine wissenschaftliche Software auskommt.  Das stimmt so nicht, denn durch Perfomance-Optimierung können viele wissenschaftliche Projekte wieder auf den Boden der Tatsachen und in bezahlbare Regionen geholt werden.