OCCA는 이기종 플랫폼에서의 병렬 프로그래밍을 위한 오픈 소스, 이식성 및 공급업체 중립적 프레임워크입니다. OCCA API는 장치, 메모리 또는 커널과 같은 이기종 프로그래밍 개념에 대한 통합 모델을 제공하는 반면 OKL(OCCA Kernel Language)은 C 언어에 대한 지시문 기반 확장을 사용하여 휴대용 장치 커널을 생성할 수 있습니다.
공공 및 민간 부문의 미션 크리티컬 컴퓨터 과학 및 엔지니어링 애플리케이션은 OCCA에 의존합니다. 주목할만한 사용자로는 미국 에너지부(Department of Energy)와 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 모듈 파일 <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
========+======================+=================================
도움이 필요하신가요? 저장소 위키를 확인하거나 Q&A 토론 카테고리에서 질문하세요.
피드백을 제공하려면 일반 또는 아이디어 토론 카테고리에서 대화를 시작하세요.
이 작업은 부분적으로 지원되었습니다.
OCCA는 MIT 라이센스에 따라 사용 가능