Parallelisierung

Bei der Erstellung von parallelen Programmen können verschiedene Programmierkonzepte verwendet werden.
 
Parallelrechner mit verteiltem Speicher werden heutzutage üblicherweise mit MPI (Message Passing Interface) parallelisiert. MPI ist standardisiert und unterstützt explizite Kommunikation zwischen voneinander unabhängigen Prozessen, die üblicherweise auf unterschiedlichen Prozessoren liegen, mit eigenem lokalen Speicher. Alle Hersteller von Parallelrechnern mit verteiltem Speicher bieten effiziente Implementierungen von MPI. Die Nutzung von MPI ist jedoch nicht auf Systeme mit verteiltem Speicher beschränkt, da die meisten Hersteller (IBM, HP, Sun, Cray, NEC, ...) auf ihren "shared memory" Maschinen MPI in optimierter Form anbieten. MPI wird am SCC auf allen Parallelrechnern unterstützt.
 
Bei OpenMP handelt es sich um eine direktivengebundene portable Parallelisierungsmethode für Systeme mit gemeinsamem Hauptspeicher. Die Spracherweiterung OpenMP ist für die Programmiersprachen Fortran, C und C++ verfügbar und heute im wissenschaftlichen Bereich als De-facto Standard die wichtigste Methode zur Programmierung von "shared memory" Systemen. Auch OpenMP wird am SCC auf allen Parallelrechnern unterstützt.
 
Parallelverarbeitung beruht auf Kommunikation und Synchronisation zwischen vielen Einzelprozessen und erzeugt damit neue Quellen für Fehlersituationen und Leistungsengpässe. Als Werkzeuge für die Entwicklung und Optimierung paralleler Programme stehen verschiedene Werkzeuge zur Verfügung, die auf der Webseite zur Softwareentwicklung aufgeführt sind.