GPU API 정리

규규·2024년 3월 7일
0

병렬 프로그래밍

목록 보기
8/11

oneAPI

  • CPU,GPU,FGPA 등 다양한 컴퓨팅 아키텍처에서 하나의 API 만을 사용하는 통합 프로그래밍 모델 제공 프로젝트. 2020.9 에 발표. OpenCL 과 호환성 유지.
  • Intel 이 주도
  • 다양한 언어와 라이브러리 (DPC++, MKL, DNN 등)를 포함하고 있음.
  • DPC++ : ISO C++, Khronos Group SYCL 표준에 근거한 oneAPI 프로그래밍 모델
  • C,C++,포트란,파이썬, MPI, OpenMP 코드와 상호 운용
  • 한계 : x86 CPU, Intel 내장형 GPU, Intel FPGA 를 지원. Intel 외에 다른 벤더의 HW 에 대한 지원이 부족함. (최근에는 Codeplay 플러그인을 통해 비 Intel GPU 아키텍처용 SYCL 코드를 이용 가능)

출처
https://www.oneapi.io/
https://www.e4ds.com/webinar_tech_dn.asp?idx=388
https://coolenjoy.net/bbs/38/3767199

CUDA

  • Compute Unified Device Architecture
  • NVIDIA 가 만든 GPGPU 플랫폼 API 모델
  • NVIDIA 의 GPU 에서만 사용 가능 (Geforce 8 이상)
  • 다른 GPGPU API 대비 성능이 좋고 호환성, 범용성이 뛰어남
  • 2006 년 출시
  • OpenAC, OpenCL 프레임워크도 지원

출처
https://namu.wiki/w/CUDA

OpenACC

  • open accelerators
  • Cray Inc. CAPS, Nvidia, PGI 가 개발한 병렬 컴퓨팅 프로그래밍 표준
  • CUDA 를 손쉽게 추상화
  • OpenMP 처럼 Compiler directive 를 통해 가속화를 손쉽게 가능.

    출처
    https://ko.wikipedia.org/wiki/OpenACC

OpenCL

  • Open Computing Language.
  • 이기종(Heterogeneous) 플랫폼에 존재하는 여러 프로세서 (CPU,GPU,DSP,FGPA) 및 여러 HW vendor 를 활용하여 병렬 연산 처리 할 수 있도록 만들어진 open standard. 2009년 등장.
  • 2008년 공식 발표. 애플이 최초로 개발. 크로노스 그룹이 관리. 인텔, AMD, ARM, IBM, NVIDIA 등이 지원. 최근에는 법인 지원을 잃음 (2024년 기준)

SYCL

  • SYstem-wide Compute Language
  • 다양한 플랫폼에서 동일한 API 를 활용하여 병렬 프로그래밍을 하는 프로그래밍 생산성 향상을 위한 크로스 플랫폼, 오픈소스 high level programming model. C++ 에 기반함. Khronos group 에 의해 관리. 2014년 발표됨.
  • CUDA, OPenCL 과 상호 운용성 지원
  • DPC++ compiler 사용 시 최적.

출처
https://en.wikipedia.org/wiki/SYCL
https://www.khronos.org/api/index_2017/sycl

크로노스 그룹

  • 2000년 설립된 비영리 산업체
  • 150 개 이상 하드웨어, 소프트웨어 기업이 모여 만든 컴소시엄 (애플, 인텔, AMD, 엔비디아 등)
  • 컴퓨터, 그래픽, 미디어 API 등 오픈 소스이면서 표준을 제작
  • 표준 : OpenGL, OpenCL, WebGL, WebCL, OpenVG, OpenVX, Vulkan, SYCL, OpenXR
    • OpenGL : 3차원 컴퓨터 그래픽스 산업계 개방형 표준
    • OpenAL : 컴퓨터 오디오 산업계 개방형 표준
    • OpenCL : 개방형 범용 병렬 컴퓨팅 프레임워크
    • WebGL : 2d,3d 그래픽 렌더링을 위한 low level Javascript API, OpenGL 을 활용
    • WebCL : 웹 브라우저만을 이용해 병렬 컴퓨팅을 이용하기 위한 OpenCL 을 활용한 Javascript 바인딩
    • OpenVG : 하드웨어 가속을 위한 2차원 벡터 그래픽스 API 표준
    • OpenVX : Computer Vision 분야의 가속기 활용을 위한 표준
    • SYCL : 다양한 가속기에서 병렬 프로그래밍의 high level 표준

업로드중..

출처
https://dreamlog.tistory.com/567

출처
https://www.e4ds.com/webinar_tech_dn.asp?idx=388

profile
복습용 저장소

0개의 댓글