Innovationsportal

« Forschungslandschaft: Projekte

Moderne Programmier-Paradigmen in heterogenen HPC-Umgebungen

Projektbearbeiter:
Ruben Felgenhauer
Finanzierung:
Haushalt;
Im modernen wissenschaftlichen Rechnen werden große numerische Probleme in der Regel auf Cluster-Rechnern gelöst, also großen Sammlungen miteinander verbundener Rechenknoten, die durch Nachrichtenübermittlung zusammenarbeiten können. Im Hochleistungsrechnen (HPC) ist ein zunehmender Trend zu heterogenen Clustern erkennbar, in denen neben herkömmlichen CPUs auch Beschleuniger wie GPUs oder FPGAs zum Einsatz kommen. Diese Entwicklung erhöht zwar die theoretische Spitzenleistung dieser Systeme, doch ihre wachsende Komplexität macht auch die Programmierung und Leistungsoptimierung anspruchsvoller. Infolgedessen werden die verfügbaren Rechenressourcen von Cluster-Computern oft nicht voll ausgeschöpft. Um den Herausforderungen der Programmierung heterogener Systeme zu begegnen, führte Intel 2018 das oneAPI-Framework ein, das sich später zu einem offenen Standard entwickelte. Zusätzlich zu einer Reihe wissenschaftlicher Bibliotheken bietet oneAPI Unterstützung für Single-Source-Programmierung durch SYCL, eine C++-basierte Abstraktionsschicht für das Rechnen auf heterogenen Systemen. Allerdings haben Programmiersprachen wie C/C++ und Fortran, die traditionell im HPC weit verbreitet sind, gegenüber moderneren Sprachen wie Rust erhebliche Nachteile, insbesondere in Bezug auf Speichersicherheit und allgemeine Benutzerfreundlichkeit. Andererseits, obwohl Rust in der Entwickler-Community sehr beliebt ist aufgrund seines modernen Designs und der erheblichen Sicherheitsgarantien, die der Rust-Compiler zur Kompilierungszeit bieten kann, nimmt es im Bereich des Hochleistungsrechnens nur eine Nischenrolle ein. Gründe dafür könnten sein, dass Rust in HPC-Kurrikula wenig unterrichtet wird und dass Bibliotheken wie Rayon, die parallele Programmierung für gemeinsamen Speicher erheblich vereinfachen, nicht auf heterogenen Umgebungen eingesetzt werden können.

In diesem Projekt evaluieren wir die Verwendung von Rust für die Single-Source-Programmierung, die auf verschiedene Recheneinheiten (CPUs, GPUs, etc.) abzielt. Eine zentrale Forschungsfrage ist, welche Sicherheitsgarantien von Rust innerhalb eines solchen Programmiermodells beibehalten werden können. Unser Ziel ist es, ein umfassend ausgestattettes HPC-Framework auf Basis von oneAPI zu entwickeln, das Single-Source-Programmierung in Rust mit hohem Abstraktionsgrad ermöglicht und für Entwickler einen ähnlich hohen Komfort bietet wie bestehende Lösungen wie Rayon oder SYCL. Wir untersuchen auch, ob ein solches Framework HPC-Programmierern helfen kann, sichereren Code in heterogenen Umgebungen zu schreiben. Darüber hinaus untersuchen wir die Machbarkeit der automatischen Auswahl einer geeigneten Recheneinheit für parallele Programmkomponenten zur Laufzeit. Hierfür können Modelle aus dem Maschinellen Lernen zum Einsatz kommen, die auf den Ergebnissen von Benchmarks und statischer Code-Analyse numerischer Anwendungen trainiert wurden, um die am besten geeignete Recheneinheit für bestimmte Rechenmuster vorherzusagen. Dies könnte dazu beitragen, die Ressourcennutzung von Cluster-Computern in Zukunft zu verbessern.

Kontakt

weitere Projekte

Die Daten werden geladen ...