OCCA ist ein quelloffenes, portables und herstellerneutrales Framework für die parallele Programmierung auf heterogenen Plattformen. Die OCCA-API bietet einheitliche Modelle für heterogene Programmierkonzepte – wie ein Gerät, einen Speicher oder einen Kernel –, während die OCCA Kernel Language (OKL) die Erstellung tragbarer Gerätekerne mithilfe einer direktivenbasierten Erweiterung der C-Sprache ermöglicht.
Missionskritische computerwissenschaftliche und technische Anwendungen aus dem öffentlichen und privaten Sektor verlassen sich auf OCCA. Zu den bemerkenswerten Nutzern zählen das US-Energieministerium und Shell.
Hauptmerkmale
OCCA verwendet das CMake-Build-System. Schauen Sie sich die Installationsanleitung an, um einen umfassenden Überblick über alle Build-Einstellungen und Anweisungen zum Erstellen unter Windows oder Mac OS zu erhalten.
Der Einfachheit halber wurde das Shell-Skript configure-cmake.sh
bereitgestellt, um den CMake-Build zu steuern. Dort können Compiler, Flags und andere Build-Parameter angepasst werden. Standardmäßig verwendet dieses Skript ./build
und ./install
für die Build- und Installationsverzeichnisse.
Das Folgende zeigt eine typische Abfolge von Shell-Befehlen zum Erstellen, Testen und Installieren von occa:
$ ./configure-cmake.sh
$ cmake --build build --parallel < number-of-threads >
$ ctest --test-dir build --output-on-failure
$ cmake --install build --prefix install
Wenn Abhängigkeiten an einem nicht standardmäßigen Speicherort installiert werden, legen Sie die entsprechende Umgebungsvariable auf diesen Pfad fest.
Während der Installation wird die Env-Module-Datei <install-prefix>/modulefiles/occa
generiert. Wenn dieses Modul geladen wird, werden Pfade zu den installierten bin
, lib
und include
-Verzeichnissen an Umgebungsvariablen wie PATH
und LD_LIBRARY_PATH
angehängt.
Der Einfachheit halber stellt OCCA CMake-Paketdateien bereit, die während der Installation konfiguriert werden. Diese Paketdateien definieren ein importiertes Ziel, OCCA::libocca
, und suchen nach allen erforderlichen Abhängigkeiten.
Beispielsweise würde die CMakeLists.txt nachgelagerter Projekte, die OCCA verwenden, Folgendes enthalten:
find_package (OCCA REQUIRED)
add_executable (downstream-app ...)
target_link_libraries (downstream-app PRIVATE OCCA::libocca)
add_library (downstream-lib ...)
target_link_libraries (downstream-lib PUBLIC OCCA::libocca)
Die OCCA-Befehlszeilenschnittstelle finden Sie unter <install-prefix>/bin/occa
. Mit diesem Tool können Informationen zur Hardware und zur Konfiguration von OCCA auf einer bestimmten Plattform abgefragt werden.
Durch den Aufruf occa info
werden beispielsweise OCCA-Backends und zugehörige Hardwarespezifikationen verfügbar, während occa env
die Werte von OCCA-bezogenen Umgebungsvariablen anzeigt. Um die Liste aller verfügbaren Optionen anzuzeigen, rufen Sie occa --help
auf.
$ occa info
========+======================+=================================
CPU(s) | Processor Name | AMD EPYC 7532 32-Core Processor
| Memory | 251.6 GB
| Clock Frequency | 2.4 MHz
| SIMD Instruction Set | SSE2
| SIMD Width | 128 bits
| L1d Cache Size | 1 MB
| L1i Cache Size | 1 MB
| L2 Cache Size | 16 MB
| L3 Cache Size | 256 MB
========+======================+=================================
OpenCL | Platform 0 | NVIDIA CUDA
| ----------------------+---------------------------------
| Device 0 | NVIDIA A100-PCIE-40GB
| Device Type | gpu
| Compute Cores | 108
| Global Memory | 39.40 GB
========+======================+=================================
CUDA | Device Name | NVIDIA A100-PCIE-40GB
| Device ID | 0
| Memory | 39.40 GB
========+======================+=================================
Brauchen Sie Hilfe? Schauen Sie sich das Repository-Wiki an oder stellen Sie eine Frage in der Kategorie „Fragen und Antworten“.
Um Feedback zu geben, starten Sie eine Unterhaltung in den Kategorien „Allgemein“ oder „Ideendiskussion“.
Diese Arbeit wurde teilweise unterstützt von
OCCA ist unter einer MIT-Lizenz verfügbar