AdaptiveCpp/AdaptiveCpp

Compiler for multiple programming models (SYCL, C++ standard parallelism, HIP/CUDA) for CPUs and GPUs from all vendors: The independent, community-driven compiler for C++-based heterogeneous programming models. Lets applications adapt themselves to all the hardware in the system - even at runtime!

해결하는 문제

AdaptiveCpp는 C++ 기반의 이종 프로그래밍을 위한 통합 플랫폼을 제공하여, 개발자가 Intel, NVIDIA, AMD, Apple 등의 주요 벤더의 CPU 및 GPU에서 동작하는 코드를 작성할 수 있도록 합니다. 각각의 특정 하드웨어 타겟에 맞게 애플리케이션을 다시 작성할 필요 없이, 벤더 고유의 종속성에서 벗어날 수 있습니다. 단일 바이너리로 여러 하드웨어 유형을 동시에 타겟팅할 수 있습니다.

작동 방식

AdaptiveCpp는 유연한 SYCL 구현, C++ 표준 병렬성(오프로드 병렬 STL 알고리즘)에 대한 실험적 지원, 그리고 PCUDA(포터블 CUDA)를 구현합니다. PCUDA를 통해 CUDA/HIP 코드를 다양한 백엔드로 컴파일할 수 있습니다. 기본 흐름으로 강력한 LLVM JIT 컴파일러를 사용하며, 유일하게 호스트 및 디바이스 컴파일 모두에서 소스 코드를 한 번만 파싱하는 SYCL 컴파일러입니다.

대상 사용자

고성능 컴퓨팅(HPC) 및 이종 시스템에서 작업하는 개발자 및 연구자에게 적합합니다. 슈퍼컴퓨터를 포함한 다양한 하드웨어 환경에서 애플리케이션을 실행해야 하는 경우에 최적입니다.

주요 특징

  • 다양한 벤더 지원: Intel, NVIDIA, AMD, Apple의 CPU 및 GPU를 타겟팅합니다.
  • 단일 패스 컴파일: 호스트 및 디바이스 모두에서 소스 코드를 한 번만 파싱하는 고유한 SYCL 컴파일러를 제공합니다.
  • 크로스플랫폼 바이너리: 모든 지원되는 장치에 오프로드 가능한 단일 바이너리를 생성할 수 있습니다.
  • 벤더 도구 호환성: 기존 벤더 제공 프로파일러 및 디버거와 호환됩니다.
  • C++ 표준 병렬성: NVIDIA, AMD, Intel GPU에서 C++ 표준 병렬성의 성능을 모두 입증할 수 있는 유일한 솔루션입니다.

관련

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