Hardware- and Performance-aware Codegeneration for Computational Science and Engineering

Software

Software der Projektpartner

HPC²SE baut auf verschiedene Softwareprojekte auf, die wir hier kurz auflisten möchten.

Dune

Dune (“Distributed and Unified Numerics Environment”) ist ein modularer Werkzeugkasten zum lösen partieller Differentialgleichungen (PDEs) mit Gitter-basierten Methoden. Es unterstützt die einfache Implementierung von Methoden wie Finiten Elementen (FE) und Finiten Volumen (FV).

Die zugrundeliegene Idee ist dünne Schnittstellen bereitzustellen, die es erlauben existierende und/oder neue Bibliotheken anzubinden. Moderne C++-Programmiertechniken erlauben sehr unterschiedliche Implementierungen des selben Konzepts (z.B. Gitter, Löser, …) unter einer einheitlichen Schnittstelle bei sehr geringen Zusatzkosten. So stellt Dune Effizienz bei wissenschaftlichen Rechnungen sicher und unterstützt Anwendungen aus dem Bereich des Hochleistungesrechnens.

Dune-PDELab

PDELab ist ein Diskretisierungsmodul das auf Dune aufbaut und von den Projektpartnern in Heidelberg und Münster hauptsächlich verwendet wird. Dementsprechend wird es auch für die Dune-basierten Diskretisierungen im HPC²SE-Projekt verwendet.

waLBerla

PACXX

PACXX (“Programming Accelerators with C++”) integriert heterogene Programmierung von Beschleunigern wie Grafikprozessoren (GPUs) in C++. Durch sein Design als single-source Programmiermodel und seine Integration in Clang/LLVM ist es möglich sowohl C++11, C++14 als auch zukünftige Standards wie C++17/2a zur Programmierung von Beschleunigern zu nutzen.

Portabilität und Performance stehen im Vordergrund und werden durch ein zweistufiges Kompilierungsverfahren sichergestellt. Die PACXX Laufzeitumgebung optimiert, unter Berücksichtigung der verfügbaren Hardware, zur Laufzeit den Maschinencode und unterstützt sowohl Grafikprozessoren verschiedener Hersteller als auch gängige Multi-Core CPUs bis hin zu Intels Knights Landing.

Externe Software

Die folgenden Softwareprojekte werden in HPC²SE verwendet, werden aber nicht (oder nicht hauptsächlich) von den Projektpartnern betreut:

UFL

UFL (“Unified Form Language”) ist eine Domänenspezifische Sprache, die wir in HPC²SE verwenden. Sie wurde ursprünglich für Fenics entwickelt.

Loo.py

Loo.py ist eine Bibliothek die es erlaubt, aus UFL generierten Code programmatisch umzuformen. So können wir z.B. Schleifen umsortieren, entrollen, zusammenfassen oder für die Vektorisierung vorbereiten.

Clang und LLVM

LLVM ist eine Sammlung von Bibliotheken und anderen Komponenten zum Bau vom Compilern und anderen Programmen zum bearbeiten, übersetzen und optimieren von Program-Quellcode. Clang ist der C/C++-Compiler von LLVM. In HPC²SE dienen Clang und LLVM als die Basis für PACXX.

Impressum | Datenschutzerklärung | Powered by Hugo v0.55.6 & Bootstrap | Updated: 2019-07-31 13:15