Raja ist eine Bibliothek mit C ++ -Softwareabstraktionen, die hauptsächlich am Lawrence Livermore National Laboratory (LLNL) entwickelt wurde und die die Portabilität der Architektur und Programmiermodell für HPC -Anwendungen ermöglicht. Raja hat zwei Hauptziele:
Raja bietet eine tragbare Ausführung paralleler Schleife, indem sie Bausteine bereitstellt, die die allgemein anerkannte Parallele für die Idiom erweitern. Raja stützt sich auf Standard -C ++ 14 -Funktionen.
Das Design von Raja basiert in jahrzehntelangen Erfahrung in der Arbeit in der Produktion von Mesh-basierten Multiphysik-Anwendungen. Basierend auf der Vielfalt der in solchen Anwendungen verwendeten Algorithmen und Software -Ingenieurstile kann RAJA die Anwendungentwickler ermöglichen, Raja -Konzepte anzupassen und sie für verschiedene Code -Implementierungsmuster und C ++ -Nutzungen spezialisiert zu haben.
Raja teilt Ziele und Konzepte, die in anderen C ++ - Tragbarkeitsabstraktionsansätzen wie Kokkos und Thrust gefunden wurden. Es umfasst jedoch Konzepte und Fähigkeiten, die in anderen Modellen fehlen, die für Anwendungen von grundlegender Bedeutung sind.
Es ist wichtig zu beachten, dass Raja zwar in einer Vielfalt von Produktionsanwendungen verwendet wird, es jedoch eine Arbeit ist. Die Gemeinschaft der Forscher und Anwendungsentwickler von LLNL, die aktiv dazu beitragen, wächst. Versionen, die als Github-Veröffentlichungen verfügbar sind, enthalten hauptsächlich verwendete und gut getestete Funktionen. Unsere Kernschnittstellen sind ziemlich stabil, während zugrunde liegende Implementierungen verfeinert werden. Zusätzliche Funktionen werden in zukünftigen Veröffentlichungen erscheinen.
Der Raja -Code lebt in einem Github -Repository. Um das Repo zu klonen, verwenden Sie den Befehl:
git clone --recursive https://github.com/llnl/raja.git
Anschließend können Sie Raja wie jedes andere CMake -Projekt erstellen, vorausgesetzt, Sie haben einen C ++ - Compiler, der den C ++ - 14 -Standard unterstützt. Der einfachste Weg, um den Code mit dem Standardkompiler des Systems zu erstellen, besteht darin, die folgende Folge von Befehlen im Raja-Verzeichnis der obersten Ebene auszuführen (In-Source-Builds sind nicht zulässig!):
mkdir build
cd build
cmake ../
make
Weitere Details zu Raja -Konfigurationsoptionen finden Sie im Raja -Benutzerhandbuch (unten verknüpft).
Wir führen auch ein Raja -Vorlagenprojekt bei, das zeigt, wie Raja in einem CMake -Projekt verwendet wird, entweder als GIT -Submodul oder als installierte Bibliothek.
Der Raja -Benutzerhandbuch ist der beste Ort, um über Raja zu lernen und wie man ihn benutzt.
Die neueste Version des Benutzerhandbuch
Zu Zugang zu Dokumenten für andere veröffentlichte Versionen von Raja: https://readthedocs.org/projects/raja/
Wir führen ein Repository für das Tutorial-Material der Raja Portaility Suite: https://github.com/llnl/raja-suite-tutorial
Um Raja zu zitieren, verwenden Sie bitte die folgenden Referenzen:
Raja Performance Portability Layer. https://github.com/llnl/raja
Da Beckingsale, J. Burmark, R. Horung, H. Jones, W. Killian, AJ Kunen, O. Pearce, P. Robinson, BS Ryujin, TRW Scogland, "Raja: Tragbare Leistung für große wissenschaftliche Anwendungen", 2019 IEEE/ACM International Workshop über Leistung, Portabilität und Produktivität bei HPC (P3HPC). Laden Sie hier herunter
Die Raja Performance Suite enthält eine Sammlung von Loop-Kerneln, die in mehreren Raja- und Nicht-Raja-Varianten implementiert sind. Wir verwenden es, um die Raja -Leistung auf verschiedenen Plattformen mit einer Vielzahl von Compilern zu überwachen und zu bewerten. Viele wichtige Compiler -Anbieter nutzen die Suite, um ihre Unterstützung von Abstraktionen wie Raja zu verbessern. Die Raja Performance Suite ist eine hervorragende Quelle für Beispiele für die Nutzung von Raja, bei denen Sie Raja- und Nicht-Raja-Varianten einer Vielzahl verschiedener Kerne und Raja-Backends vergleichen können.
Das Raja -Proxies -Repository enthält Raja -Versionen mehrerer wichtiger HPC -Proxy -Anwendungen.
Chai bietet eine verwaltete Array -Abstraktion an, die mit Raja zusammenarbeitet, um die in Raja -Kernel verwendeten Daten automatisch in den entsprechenden Raum für die Ausführung zu kopieren. Es wurde als Ergänzung zu Raja entwickelt.
Der effektivste Weg , um mit dem Core-Raja-Entwicklungsteam zu kommunizieren
Sie sind auch herzlich eingeladen, sich unserer Raja -Google -Gruppe anzuschließen.
Wenn Sie Fragen haben, einen Fehler finden oder Ideen zur Erweiterung der Funktionalität oder Anwendbarkeit von Raja haben und zu seiner Entwicklung beizutragen möchten, zögern Sie bitte nicht, uns zu kontaktieren. Wir sind sehr daran interessiert, Raja zu verbessern und neue Wege zu erforschen, um es zu nutzen.
Das Raja -Team folgt dem Gitflow -Entwicklungsmodell. Leute, die zu Raja beitragen möchten, sollten ihre Arbeiten in einer Feature -Zweigstelle einbeziehen, die aus der Raja develop
Branch erstellt wurde. Dieser Zweig enthält die neuesten Arbeiten in Raja. Erstellen Sie dann eine Pull -Anfrage mit dem develop
als Ziel. In regelmäßigen Abständen verschmelzen wir den Entwicklungszweig in den main
und markieren eine neue Version.
In der Seite von Raja -Mitwirkenden finden Sie die vollständige Liste der Mitwirkenden des Projekts.
Raja ist unter der BSD 3-Clause-Lizenz lizenziert.
Urheberrechte und Patente im Raja -Projekt werden von Mitwirkenden beibehalten. Es ist keine Urheberrechtszuweisung erforderlich, um einen Beitrag zu Raja zu leisten.
Unbegrenzte Open Source-BSD 3-Klauselverteilung LLNL-CODE-689114
OCEC-16-063
Weitere Informationen und Beschränkungen für Veröffentlichungen finden Sie in den Informationen im Folgenden:
Einzelne Dateien enthalten SPDX -Tags anstelle des vollständigen Lizenztextes. Dies ermöglicht die Maschinenverarbeitung von Lizenzinformationen auf der Grundlage der hier verfügbaren SPDX -Lizenzkennungen: https://spdx.org/licenses/
Dateien, die als BSD 3-Klausel lizenziert sind, enthalten den folgenden Text im Lizenzkopf:
SPDX-License-Identifier: (BSD-3-Clause)
Raja bündelt seine externen Abhängigkeiten als Submodul im Git -Repository. Diese Pakete sind durch verschiedene zulässige Lizenzen abgedeckt. Eine zusammenfassende Auflistung folgt. In der in jedem Paket enthaltenen Lizenz finden Sie alle Details.
Packagename: BLT
PackageHomePage: https://github.com/llnl/blt
Packagelicensedeclared: BSD-3-Klausel
Packagename: Camp
PackageHomePage: https://github.com/llnl/camp
Packagelicensedeclared: BSD-3-Klausel
Packagename: Cub
PackageHomePage: https://github.com/nvlabs/cub
Packagelicensedeclared: BSD-3-Klausel
Packagename: Rocprim
PackageHomePage: https://github.com/rocmsoftwareplatform/rocprim.git
PackagelicensedEclared: MIT -Lizenz