Moderne Rechensysteme verwenden zunehmend Parallelverarbeitung, indem sie mehrere parallelitätsfähige Bausteine (Mehrkernprozessoren, moderne Grafikkarten, etc.) zusammen verbinden. Die Softwareentwicklung für derartige Systeme, auch Parallelprogrammierung genannt, ist trotz verschiedener Entwicklungen und Standardisierungen (z.B. OpenMP oder MPI) immer noch sehr anspruchsvoll und fehleranfällig. Neben den Berechnungen hat der Entwickler auch die Kommunikation und Interaktion paralleler Programmteile zu spezifizieren. Algorithmische Skelette (kurz Skelette) beschreiben in abstrakter Weise allgemein benutzte Muster paralleler Berechnungen, Kommunikation und Interaktion. Sie verringern deutlich die Komplexität paralleler Programme; oftmals werden parallele Programme dadurch wie sequentielle Programme geschrieben. Skelette sind üblicherweise Funktionen höherer Ordnung, also Funktionen, die ihrerseits Funktionen als Parameter erhalten. Implementierungen verschiedener Skelette werden in sogenannten Skelettbibliotheken zusammengefasst, die neben den Skeletten oft auch Hilfsfunktionen und spezielle Datentypen bereitstellen, um die Erstellung paralleler Programme zu vereinfachen. Obwohl alle Skelettbibliotheken ähnliche Funktionen bieten, unterscheiden sie sich teilweise erheblich bezüglich der enthaltenen Skelette, der Flexibilität, oder der Implementierungssprache und dem zugrunde liegenden parallelen Programmiermodell. In diesem Seminar werden ausgewählte parallele Skelettbibliotheken vorgestellt. Die Teilnehmer sollen einen Überblick über die wichtigsten algorithmischen Skelette sowie deren Implementierung in verschiedenen Bibliotheken gewinnen. Geplant ist die Vorstellung folgender Skelettbibliotheken: · Calcium und Skandium · Muesli (Münster Skeleton Library) · SkeTo (Skeletons in Tokyo) · Muskel · Threading Building Blocks · Fastflow |