OCCA es un marco de código abierto, portátil y neutral para proveedores para programación paralela en plataformas heterogéneas. La API de OCCA proporciona modelos unificados para conceptos de programación heterogéneos, como un dispositivo, memoria o kernel, mientras que el lenguaje de kernel de OCCA (OKL) permite la creación de kernels de dispositivos portátiles utilizando una extensión del lenguaje C basada en directivas.
Las aplicaciones de ingeniería y ciencia computacional de misión crítica de los sectores público y privado dependen de OCCA. Los usuarios notables incluyen el Departamento de Energía de EE. UU. y Shell.
Características clave
OCCA utiliza el sistema de compilación CMake. Consulte la guía de instalación para obtener una descripción general completa de todas las configuraciones de compilación e instrucciones para compilar en Windows o Mac OS.
Para mayor comodidad, se ha proporcionado el script de shell configure-cmake.sh
para controlar la compilación de CMake. Allí se pueden ajustar compiladores, indicadores y otros parámetros de compilación. De forma predeterminada, este script utiliza ./build
y ./install
para los directorios de compilación e instalación.
A continuación se muestra una secuencia típica de comandos de shell para compilar, probar e instalar occa:
$ ./configure-cmake.sh
$ cmake --build build --parallel < number-of-threads >
$ ctest --test-dir build --output-on-failure
$ cmake --install build --prefix install
Si las dependencias están instaladas en una ubicación no estándar, establezca la variable de entorno correspondiente en esta ruta.
Durante la instalación, se genera el archivo Env Modules <install-prefix>/modulefiles/occa
. Cuando se carga este módulo, las rutas a los directorios bin
, lib
e include
instalados se agregan a variables de entorno como PATH
y LD_LIBRARY_PATH
.
Para mayor comodidad, OCCA proporciona archivos de paquetes CMake que se configuran durante la instalación. Estos archivos de paquete definen un destino importado, OCCA::libocca
, y buscan todas las dependencias necesarias.
Por ejemplo, el CMakeLists.txt de proyectos posteriores que utilizan OCCA incluiría
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)
La interfaz de línea de comandos de OCCA se puede encontrar en <install-prefix>/bin/occa
. Esta herramienta se puede utilizar para consultar información sobre el hardware y la configuración de OCCA en una plataforma determinada.
Por ejemplo, al llamar occa info
estarán disponibles los backends de OCCA y las especificaciones de hardware relacionadas, mientras que occa env
muestra los valores de las variables de entorno relacionadas con OCCA. Para ver la lista de todas las opciones disponibles, llame 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
========+======================+=================================
¿Necesitar ayuda? Consulte la wiki del repositorio o haga una pregunta en la categoría de debates de preguntas y respuestas.
Para proporcionar comentarios, inicie una conversación en las categorías de discusión general o de ideas.
Este trabajo fue apoyado en parte por
OCCA está disponible bajo una licencia MIT