alpaka-group/alpaka

Abstraction Library for Parallel Kernel Acceleration :llama:

해결하는 문제

개발자가 다양한 하드웨어 가속기에서 병렬 커널을 실행하기 위해 CUDA, HIP, SYCL과 같은 벤더별 코드를 별도로 작성할 필요가 없어집니다. 이로 인해 사용자 정의 커널을 한 번의 구현으로 다양한 CPU와 GPU 간에 성능을 희생하지 않고 이식 가능하게 실행할 수 있습니다.

작동 방식

Alpaka는 헤더만 포함하는 C++20 라이브러리로, 병렬화의 하위 수준을 추상화합니다. 가상 인덱스 도메인을 동일한 크기의 "프레임"으로 나누어 하드웨어에 의존하지 않고 데이터를 탐색합니다. 알고리즘은 이러한 프레임과 워커 스레드를 데이터에 매핑하여 병렬 커널(SIMT)로 계산을 실행하며, SIMD 유닛도 활용할 수 있습니다. CUDA, HIP, SYCL, OpenMP 등의 여러 백엔드를 지원하며, 하나의 애플리케이션 내에서 동시에 사용하여 다양한 하드웨어 벤더를 타겟팅할 수 있습니다.

대상 사용자

다양한 하드웨어 아키텍처(x86, ARM, RISC-V 등)와 다양한 GPU 벤더(NVIDIA, AMD, Intel 등)에서 효율적으로 작동해야 하는 고성능 애플리케이션을 개발하거나 연구하는 가속기 개발자 및 연구자에게 적합합니다.

주요 특징

  • 성능 이식성: CPU 및 GPU 아키텍처 모두에서 경쟁력 있는 메모리 대역폭 성능을 제공합니다.
  • 다중 벤더 지원: NVIDIA, AMD, Intel GPU뿐만 아니라 다양한 CPU 아키텍처와 호환됩니다.
  • 유연한 인덱싱: CUDA나 SYCL과 같은 네이티브 모델과 달리 3차원에 제한되지 않습니다.
  • 내장된 기본 기능: iota, transform, reduce, transform-reduce와 같은 헬퍼 함수를 제공하여 개발을 간소화합니다.
  • 메모리 관리: 데이터 작업을 위한 호스트, 디바이스, 매핑, 관리되는 다차원 뷰를 제공합니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트