OCCA — это переносимая и нейтральная к поставщикам среда с открытым исходным кодом для параллельного программирования на гетерогенных платформах. API OCCA предоставляет унифицированные модели для гетерогенных концепций программирования, таких как устройство, память или ядро, а язык ядра OCCA (OKL) позволяет создавать ядра переносимых устройств с использованием расширения языка C на основе директив.
Критически важные вычислительные и инженерные приложения в государственном и частном секторах полагаются на OCCA. Известные пользователи включают Министерство энергетики США и Shell.
Ключевые особенности
OCCA использует систему сборки CMake. Ознакомьтесь с руководством по установке, чтобы получить полный обзор всех параметров сборки и инструкции по сборке в Windows или Mac OS.
Для удобства для управления сборкой CMake предусмотрен сценарий оболочки configure-cmake.sh
. Там можно настроить компиляторы, флаги и другие параметры сборки. По умолчанию этот сценарий использует ./build
и ./install
для каталогов сборки и установки.
Ниже демонстрируется типичная последовательность команд оболочки для сборки, тестирования и установки occa:
$ ./configure-cmake.sh
$ cmake --build build --parallel < number-of-threads >
$ ctest --test-dir build --output-on-failure
$ cmake --install build --prefix install
Если зависимости установлены в нестандартном месте, установите для соответствующей переменной среды этот путь.
Во время установки создается файл Env Modules <install-prefix>/modulefiles/occa
. Когда этот модуль загружается, пути к установленным каталогам bin
, lib
и include
добавляются к переменным среды, таким как PATH
и LD_LIBRARY_PATH
.
Для удобства OCCA предоставляет файлы пакетов CMake, которые настраиваются во время установки. Эти файлы пакетов определяют импортированную цель OCCA::libocca
и ищут все необходимые зависимости.
Например, CMakeLists.txt последующих проектов, использующих OCCA, будет включать
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)
Интерфейс командной строки OCCA можно найти в <install-prefix>/bin/occa
. Этот инструмент можно использовать для запроса информации об оборудовании и конфигурации OCCA на данной платформе.
Например, вызов occa info
позволит получить доступ к бэкэндам OCCA и соответствующим характеристикам оборудования, а occa env
отобразит значения переменных среды, связанных с OCCA. Чтобы просмотреть список всех доступных опций, вызовите 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
========+======================+=================================
Нужна помощь? Посетите вики-репозиторий или задайте вопрос в категории обсуждений вопросов и ответов.
Чтобы оставить отзыв, начните разговор в общих категориях или категориях обсуждения идей.
Эту работу частично поддержали
OCCA доступен по лицензии MIT.