OCCA est un framework open source, portable et indépendant du fournisseur pour la programmation parallèle sur des plates-formes hétérogènes. L'API OCCA fournit des modèles unifiés pour des concepts de programmation hétérogènes, tels qu'un périphérique, une mémoire ou un noyau, tandis que le langage de noyau OCCA (OKL) permet la création de noyaux de périphériques portables à l'aide d'une extension du langage C basée sur des directives.
Les applications critiques en matière de science informatique et d'ingénierie des secteurs public et privé s'appuient sur OCCA. Les utilisateurs notables incluent le ministère américain de l’Énergie et Shell.
Principales fonctionnalités
OCCA utilise le système de build CMake. Consultez le guide d'installation pour un aperçu complet de tous les paramètres de construction et des instructions pour la construction sous Windows ou Mac OS.
Pour plus de commodité, le script shell configure-cmake.sh
a été fourni pour piloter la version CMake. Les compilateurs, indicateurs et autres paramètres de construction peuvent y être ajustés. Par défaut, ce script utilise ./build
et ./install
pour les répertoires build et install.
Ce qui suit montre une séquence typique de commandes shell pour créer, tester et installer occa :
$ ./configure-cmake.sh
$ cmake --build build --parallel < number-of-threads >
$ ctest --test-dir build --output-on-failure
$ cmake --install build --prefix install
Si les dépendances sont installées dans un emplacement non standard, définissez la variable d'environnement correspondante sur ce chemin.
Lors de l'installation, le fichier Env Modules <install-prefix>/modulefiles/occa
est généré. Lorsque ce module est chargé, les chemins d'accès aux répertoires bin
, lib
et include
installés sont ajoutés aux variables d'environnement telles que PATH
et LD_LIBRARY_PATH
.
Pour plus de commodité, OCCA fournit des fichiers de package CMake qui sont configurés lors de l'installation. Ces fichiers de package définissent une cible importée, OCCA::libocca
, et recherchent toutes les dépendances requises.
Par exemple, le fichier CMakeLists.txt des projets en aval utilisant OCCA inclurait
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)
L'interface de ligne de commande OCCA se trouve dans <install-prefix>/bin/occa
. Cet outil peut être utilisé pour interroger des informations sur le matériel et la configuration d'OCCA sur une plateforme donnée.
Par exemple, l'appel occa info
rendra disponibles les backends OCCA et les spécifications matérielles associées, tandis occa env
affichera les valeurs des variables d'environnement liées à OCCA. Pour voir la liste de toutes les options disponibles, appelez occa --help
.
$ 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
========+======================+=================================
Besoin d'aide ? Consultez le wiki du référentiel ou posez une question dans la catégorie Discussions questions-réponses.
Pour fournir des commentaires, démarrez une conversation dans les catégories de discussion générale ou d’idées.
Ce travail a été soutenu en partie par
OCCA est disponible sous licence MIT