OCCA 是一個開源、可移植且供應商中立的框架,用於異質平台上的平行程式設計。 OCCA API 為異質程式設計概念(例如裝置、記憶體或核心)提供統一模型,而 OCCA 核心語言 (OKL) 允許使用基於指令的 C 語言擴充功能來建立便攜式裝置核心。
公共和私營部門的關鍵任務計算科學和工程應用程式都依賴 OCCA。著名用戶包括美國能源部和殼牌公司。
主要特點
OCCA 使用 CMake 建置系統。請查看安裝指南,全面了解所有建置設定以及在 Windows 或 Mac OS 上建置的說明。
為了方便起見,提供了 shell 腳本configure-cmake.sh
來驅動 CMake 建置。可以在那裡調整編譯器、標誌和其他建置參數。預設情況下,此腳本使用./build
和./install
作為建置和安裝目錄。
下面示範了建置、測試和安裝 occa 的典型 shell 命令序列:
$ ./configure-cmake.sh
$ cmake --build build --parallel < number-of-threads >
$ ctest --test-dir build --output-on-failure
$ cmake --install build --prefix install
如果依賴安裝在非標準位置,請將對應的環境變數設定為此路徑。
安裝期間,會產生 Env 模組檔案<install-prefix>/modulefiles/occa
。載入此模組時,已安裝的bin
、 lib
和include
目錄的路徑將附加到環境變數(例如PATH
和LD_LIBRARY_PATH
中。
為了方便起見,OCCA 提供了在安裝過程中配置的 CMake 套件檔案。這些套件檔案定義匯入的目標OCCA::libocca
,並尋找所有必要的依賴項。
例如,使用 OCCA 的下游項目的 CMakeLists.txt 將包括
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
========+======================+=================================
需要幫助嗎?查看儲存庫 wiki 或在問答討論類別中提出問題。
要提供回饋,請在一般或想法討論類別中開始對話。
這項工作得到了部分支持
OCCA 可在 MIT 許可下使用