FH Bielefeld
University of
Applied Sciences

Neue Paradigmen für wissenschaftliche Software-Entwicklung

Die rasante Entwicklung im Bereich der Computer-Hardware seit Erfindung des Transistors im Jahre 1948 hat dabei regelmäßig für Technologiesprünge gesorgt, so dass heutzutage Supercomputer zur Verfügung stehen, die höchst komplexe Simulationen innerhalb von Sekunden durchführen, wofür vor ein paar Jahren noch Wochen notwendig waren.

Während sich die Hardware unaufhaltsam in Richtung Parallelismus weiterentwickelt, ist es für Softwareentwickler schwierig, mit diesen Entwicklungen Schritt zu halten. Die Problematik liegt dabei darin, dass aktuelle Programmiermodelle weiterhin auf dem sogenannten "Assembler der parallelen Programmierung", das heißt auf Multithreading für Shared-Memory- sowie auf Message Passing für Distributed-Memory Architekturen basieren, was zu einer geringen Produktivität und einer hohen Fehleranfälligkeit führt. Hinzu kommt in neuerer Zeit die Unterstützung mit Hilfe spezieller Beschleunigerhardware (wie z.B. GPU und Co-Prozessoren), um in Form eines "computation offloading" den Haupt-Prozessor zu entlasten, was zusätzlich Programmiermodelle für heterogene Hardwarearchitekturen erfordert.

Bei der Softwareentwicklung all diese Aspekte zu berücksichtigen und gleichzeitig leistungsfähigen Code zu erzeugen, führt schnell zu einer Überforderung der meisten potentiellen Anwender dieser Rechner-Systeme mit der Folge, dass die Möglichkeiten der Effizienzsteigerung durch Parallelisierung nicht ausgeschöpft werden. Anwendern ist zwar häufig bekannt, dass sich ihr zu lösendes Problem parallelisieren bzw. verteilen lässt, sie haben aber weder die Zeit noch das Interesse, sich mit der komplizierten parallelen Programmierung auseinanderzusetzen. Um dies zu ändern, beschäftigt sich die AG CMSE mit neuen Programmiermodellen, -sprachen und -werkzeugen, die Parallelismus und Verteilbarkeit auf einer höheren Abstraktionsebene als bisherige Programmiermodelle behandeln, um Anwendern die Entwicklung paralleler und verteilter Software zu erleichtern.