Schedulingkomponente SEParAT: Das im Projekt entwickelte Softwarewerkzeug SEParAT (Scheduling Support Environment for Parallel Application Jask Graphs) stellt eine einheitliche Schnittstelle für Schedulingalgorithmen homogener und heterogener Zielplattformen zur Verfügung. Das Werkzeug kann über die Kommandozeile und eine integrierte grafische Benutzeroberfläche (GUI) gesteuert werden. Die GUI unterstützt den Anwender bei der Entwicklung von Schedulingalgorithmen, indem sie die während des Schedulingprozesses erzeugten Zwischenergebnisse visualisiert und den Leistungsvergleich von Schedulingalgorithmen anhand vorgegebener Metriken ermöglicht. In SEParAT wurden 18 Schedulingalgorithmen für homogene und 6 Algorithmen für heterogene Plattformen implementiert. Die einzelnen Algorithmenschritte sind als wiederverwendbare Codefragmente realisiert, die sich durch die GUI zu neuen Schedulingalgorithmen rekombinieren lassen. Zusätzlich sind verschiedene Optimierungen für den Schedulingprozess zuschaltbar. Mit Hilfe von SEParAT wurden die implementierten Algorithmen detailliert untersucht und es wurden Richtlinien erarbeitet, welcher Algorithmus in welcher Situation zu bevorzugen ist. Optimierung des schichtenbasierten Schedulings: Ein Ansatz für das Scheduling von M-Tasks mit Abhängigkeiten sind schichtenbasierte Algorithmen, die zunächst Schichten unabhängiger M-Tasks erzeugen und anschließend für jede Schicht getrennt einen Schedule bestimmen. Im Rahmen des Projekts wurde der Optimierungsalgorithmus Move-Blocks entwickelt, der die Schedules der einzelnen Schichten zusammensetzt und dabei eine geringe Überlappung erlaubt. Dadurch wird die ungenutzte Prozessorzeit verringert, was zu einer deutlichen Reduktion der Anwendungslaufzeiten bei nur geringfügig höherer Schedulingzeit führte. Die besondere Herausforderung war die korrektheitserhaltende Optimierung der M-Task-Schedules hinsichtlich der Daten- und Kontrollabhängigkeiten. Zur Unterstützung heterogener Cluster-of-Clusters-Zielplattformen wurden schichtenbasierte Schedulingalgorithmen um eine zusätzliche Phase erweitert, die für die Zuordnung der M-Tasks einer Schicht zu den einzelnen Teilclustern der Plattform verantwortlich ist. Experimente mit verschiedenen Anwendungen und synthetischen Schedulingproblemen haben gezeigt, dass dieser Ansatz in vielen Fällen bessere Schedules als bereits vorhandene Schedulingalgorithmen liefert. Semi-dynamisches Scheduling für heterogene Plattformen: Semi-dynamisches Scheduling, also die Kombination von statischem Scheduling und dynamischer Lastbalancierung, hat sich für heterogene Plattformen vor allem dann als sinnvoll herausgestellt, wenn keine exakten Laufzeitvorhersagen existieren. Die erfolgreiche Anwendung des semi-dynamischen Schedulings wurde für die Ausführung verschiedener Löser für Systeme gewöhnlicher Differentialgleichungen auf einem heterogenen Cluster demonstriert. Die dynamische Verteilung von Rechenlast wurde auch für eine Anwendung aus dem Bereich der Finite-Elemente-Methoden untersucht. Die heterogene Zielplattform war eine Multicore-Plattform mit einem zusätzlichen Grafikprozessor (GPU). Es wurde gezeigt, dass durch eine dynamische Zuweisung der Berechnungen an die verfügbaren Ausführungseinheiten (CPUs und GPU) die Anwendungslaufzeit deutlich verringert werden kann.