alpaka-group/alpaka

Abstraction Library for Parallel Kernel Acceleration :llama:

해결하는 문제

Alpaka는 다양한 하드웨어 가속기 간의 성능 포터블성을 제공하는 헤더 전용 C++20 추상화 라이브러리입니다. 개발자는 CUDA, HIP, SYCL, OpenMP 등의 벤더 고유 API용 별도의 코드를 작성하지 않고도, 단일 병렬 커널 구현을 작성할 수 있습니다.

작동 방식

Alpaka는 CUDA의 그리드-블록-스레드 모델과 유사한 도메인 분할 전략을 사용합니다. 알고리즘은 병렬 스레드에서 실행되는 균일한 작업 항목(커널)의 다차원 그리드로 나뉩니다. 이러한 스레드는 블록으로 조직되며, 블록 내 스레드는 빠른 공유 메모리와 저수준 동기화를 통해 상호작용할 수 있습니다. 블록은 독립적으로 실행되므로 라이브러리는 런타임에 사용 가능한 하드웨어에 맞게 실행을 적응시킬 수 있습니다.

대상 사용자

x86, ARM, RISC-V, Power 8+ 등의 CPU와 NVIDIA, AMD, Intel의 GPU를 포함한 다양한 하드웨어에서 고성능 병렬 코드를 실행해야 하는 가속기 개발자 및 과학자에게 적합합니다.

주요 특징

  • 다중 백엔드 지원: CUDA, HIP, SYCL, OpenMP, std::thread, TBB를 지원합니다.
  • 성능 포터블성: 여러 플랫폼에서 동일한 커널 구현을 사용할 수 있습니다.
  • 런타임 선택: 어떤 가속기 백엔드가 커널을 실행할지를 런타임에 결정할 수 있습니다.
  • 헤더 전용: 라이브러리 자체를 빌드할 필요 없이 헤더 전용 설계입니다.
  • 플랫폼 독립성: Linux, Windows, macOS에서 모두 작동합니다.

관련

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