오픈 ACC

OpenACC
오픈 ACC
안정된 릴리스
2.7 / 2018년 11월, 3년 전(2018-11)
기입처C, C++Fortran
운영 체제크로스 플랫폼
플랫폼크로스 플랫폼
유형API
웹 사이트www.openacc.org

OpenACC(오픈 액셀러레이터용)는 Cray, CAPS, Nvidia 및 PGI개발한 병렬 컴퓨팅용 프로그래밍 표준입니다.이 표준은 이기종 CPU/[1]GPU 시스템의 병렬 프로그래밍을 단순화하기 위해 설계되었습니다.

OpenMP와 마찬가지로 프로그래머는 C, C++Fortran 소스 코드에 주석을 달아 컴파일러 명령 및 추가 [2]함수를 사용하여 가속해야 하는 영역을 식별할 수 있습니다.OpenMP 4.0 이후와 마찬가지로 OpenACC는 CPU 아키텍처와 GPU 아키텍처를 모두 대상으로 하여 컴퓨팅 코드를 실행할 수 있습니다.

OpenACC 멤버는 OpenMP 표준 그룹의 구성원으로서 OpenMP 사양에 병합하여 OpenMP를 확장하여 향후 [3][4]OpenMP 릴리즈에서 액셀러레이터를 지원하는 공통 사양을 작성했습니다.이러한 노력의 결과, 연례 슈퍼컴퓨팅 컨퍼런스(2012년 11월, 솔트레이크시티)가 포함되어 OpenMP에 [6]참여하는 하드웨어 벤더의 의견을 받아 Nvidia 이외의 액셀러레이터 지원에 대응하기 위한 코멘트 및 논의에 관한 기술 보고서가[5] 작성되었습니다.

ISC'12 오픈에서ACC는 성능 [7]데이터 없이 Nvidia, AMD 및 Intel 액셀러레이터에서 작동하는 것으로 입증되었습니다.

2012년 11월 12일 SC12 컨퍼런스에서 오픈 초안ACC 버전 2.0 사양이 [8]제시되었습니다.새롭게 제안된 기능에는 데이터 이동에 대한 새로운 제어(비구조화 데이터 처리의 향상, 비연속 메모리 지원의 향상 등), 명시적 함수 호출 및 개별 컴파일 지원(가속된 코드의 라이브러리 생성 및 재사용 가능) 등이 포함됩니다.OpenACC 2.0은 2013년 [9]6월에 공식 출시되었습니다.

버전 2.5는 2015년 [10]10월에 출시되었으며 버전 2.6은 [11]2017년 11월에 출시되었습니다.최신 사양 버전인 2.7은 2018년 [12]11월에 출시되었습니다.

컴파일러 지원

오픈 지원ACC는 PGI(버전 12.6 이후) 및 Cray([7][13]Cray 하드웨어 전용)의 상용 컴파일러에서 사용할 수 있습니다.

OpenUH는[14] Open64 기반의 오픈 소스입니다.휴스턴 대학의 HPCTools 그룹에 의해 개발된 C 및 FORTRAN을 지원하는 ACC 컴파일러.

OpenARC는 Oak Ridge National Laboratory에서 개발한 오픈소스 C 컴파일러로 Open의 모든 기능을 지원합니다.ACC 1.0 사양실험적인[16] 오픈 소스 컴파일러 accULL은 La Laguna 대학에서 개발되었습니다(C 언어만 해당).[17]

Omni[18][19] 컴파일러는 HPCS Laboratory에서 개발한 오픈 소스 컴파일러입니다.OpenACC, Xcalable을 지원하는 츠쿠바 대학RIKEN 컴퓨터 과학 센터의 프로그래밍 환경 연구 팀MP [ja]XcalableXcalable 조합한 ACC [jaMP 및 OpenACC.

IPMACC는[20] Victoria University of Victoria가 개발한 오픈소스 C 컴파일러로 Open을 번역합니다.CUDA, OpenCL 및 ISPC에 대한 ACC.현재 지원되는 디렉티브는 데이터, 커널, 루프 캐시뿐입니다.

Open에 대한 GCC 지원ACC가 늦게 왔어요.[21]2013년 9월에 삼성의 GPU 대상 구현이 발표되었으며, 이를 통해 OpenACC 1.1 주석 코드가 OpenCL[16]변환되었습니다.2개월 후, 이번에는 NVIDIA가 Open을 기반으로 한 「진짜」의 실장을 발표했습니다.ACC 2.[22]0이는 일부 논란을 불러일으켰는데, 이 구현은 오픈 소스 어셈블러나 런타임은 사용할 [23][24]수 없는 NVIDIA의 자체 PTX 어셈블리 언어만을 대상으로 하기 때문이다.OpenACC/PTX에 대한 실험 지원은 버전 5.1에서 GCC로 종료되었습니다.GCC6 및 GCC7 릴리즈 시리즈에는 Open 구현이 대폭 개선되었습니다.ACC 2.0a [25][26]사양GCC 9.1은 거의 완전한 오픈 제공ACC 2.5 [27]지원

사용.

동종 시스템의 OpenMP 3.x 또는 이전의 OpenHMPP와 유사한 방식으로 Open에서 프로그래밍하는 기본 모드ACC는 [28]지시사항입니다.사양에는 몇 가지 지원 함수를 정의하는 런타임 라이브러리도 포함되어 있습니다.이를 이용하려면 사용자가 "openacc"를 포함해야 합니다."h" 또는 "openacc_lib"를 지정합니다.fortran의 [29]h"를 입력하고 acc_init() 함수를 호출합니다.

지시 사항

OpenACC는 다음과 같은 광범위한 플러그마(디렉티브)[30] 목록을 정의합니다.

#평행 액세스 # 커널 액세스 

둘 다 서로 다른[31][32] 의미론을 사용하여 가속기에서 실행할 병렬 계산 커널을 정의하는 데 사용됩니다.

# 데이터 액세스 

액셀러레이터 간에 데이터를 정의하고 복사하는 주요 지시사항입니다.

#subma acc 루프 

Parallel parallelism의 유형을 정의하기 위해 사용됩니다.parallel또는kernels지역.

#캐시 액세스 수 #syslogma acc 업데이트 #subma acc 선언 #잠시만 기다려 주세요 

런타임 API

또한 다음과 같은 런타임 API 함수가 정의되어 있습니다.acc_get_num_devices(),acc_set_device_type(),acc_get_device_type(),acc_set_device_num(),acc_get_device_num(),acc_async_test(),acc_async_test_all(),acc_async_wait(),acc_async_wait_all(),acc_init(),acc_shutdown(),acc_on_device(),acc_malloc(),acc_free().

OpenACC는 일반적으로 타깃 디바이스의 작업 조직을 관리하지만, 갱이나 종업원의 사용을 통해 이를 무시할 수 있습니다.갱은 작업자로 구성되며 OpenCL의 워크그룹과 마찬가지로 여러 처리 요소에 걸쳐 운영됩니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ "Nvidia, Cray, PGI, and CAPS launch 'OpenACC' programming standard for parallel computing". The Inquirer. 4 November 2011. Archived from the original on November 17, 2011.{{cite web}}: CS1 유지보수: 부적합한 URL(링크)
  2. ^ "OpenACC standard version 2.5" (PDF). OpenACC.org. Retrieved 2 June 2017.
  3. ^ "How does the OpenACC API relate to the OpenMP API?". OpenACC.org. Retrieved 14 January 2014.
  4. ^ "How did the OpenACC specifications originate?". OpenACC.org. Retrieved 14 January 2014.
  5. ^ "The OpenMP Consortium Releases First Technical Report". OpenMP.org. 5 November 2012. Retrieved 14 January 2014.
  6. ^ "OpenMP at SC12". OpenMP.org. 29 August 2012. Retrieved 14 January 2014.
  7. ^ a b "OpenACC Group Reports Expanding Support for Accelerator Programming Standard". HPCwire. 20 June 2012. Archived from the original on 23 June 2012. Retrieved 14 January 2014.
  8. ^ "OpenACC Version 2.0 Posted for Comment". OpenACC.org. 12 November 2012. Retrieved 14 January 2014.
  9. ^ "OpenACC 2.0 Spec www.openacc.org". www.openacc.org. Archived from the original on 2016-04-04. Retrieved 2016-03-23.
  10. ^ "OpenACC Standards Group Announces Release of the 2.5 Specification; Member Vendors Add Support for ARM & x86 as Parallel Devices www.openacc.org". www.openacc.org. Archived from the original on 2016-07-26. Retrieved 2016-03-22.
  11. ^ "What's new in OpenACC 2.6? OpenACC". www.openacc.org. Retrieved 2018-05-01.
  12. ^ "What's new in OpenACC 2.7! OpenACC". www.openacc.org. Retrieved 2019-01-07.
  13. ^ "OpenACC Standard to Help Developers to Take Advantage of GPU Compute Accelerators". Xbit laboratories. 16 November 2011. Archived from the original on 16 January 2014. Retrieved 14 January 2014.
  14. ^ "OpenUH Compiler". Archived from the original on 25 January 2014. Retrieved 4 March 2014.
  15. ^ "OpenARC Compiler". Retrieved 4 November 2014.
  16. ^ a b Larabel, Michael (30 September 2013). "GCC Support Published For OpenACC On The GPU". Phoronix.
  17. ^ "accULL The OpenACC research implementation". Retrieved 14 January 2014.
  18. ^ "Omni Compiler". omni-compiler.org. Retrieved 2019-11-18.
  19. ^ Omni Compiler for C and Fortran programs with XcalableMP and OpenACC directives: omni-compiler/omni-compiler, omni-compiler, 2019-10-17, retrieved 2019-11-17
  20. ^ "IPMACC Compiler". Retrieved 31 January 2017.
  21. ^ Larabel, Michael (4 December 2012). "OpenACC Still Not Loved By Open Compilers". Phoronix.
  22. ^ Larabel, Michael (14 November 2013). "OpenACC 2.0 With GPU Support Coming To GCC". Phoronix.
  23. ^ Larabel, Michael (15 November 2013). "NVIDIA, Mentor Graphics May Harm GCC". Phoronix.
  24. ^ Larabel, Michael (21 November 2013). "In-Fighting Continues Over OpenACC In GCC". Phoronix.
  25. ^ "OpenACC - GCC Wiki".
  26. ^ Schwinge, Thomas (15 January 2015). "Merge current set of OpenACC changes from gomp-4_0-branch". gcc (Mailing list). gcc.gnu.org. Retrieved 15 January 2015.
  27. ^ Jelinek, Jakub (3 May 2019). "GCC 9.1 Released". LWN.net.
  28. ^ "Easy GPU Parallelism with OpenACC". Dr.Dobb's. 11 June 2012. Retrieved 14 January 2014.
  29. ^ "OpenACC API QuickReference Card, version 1.0" (PDF). NVidia. November 2011. Retrieved 14 January 2014.
  30. ^ "OpenACC standard version 2.0" (PDF). OpenACC.org. Retrieved 14 January 2014.
  31. ^ "OpenACC Kernels and Parallel Constructs". PGI insider. August 2012. Retrieved 14 January 2014.
  32. ^ "OpenACC parallel section VS kernels". CAPS entreprise Knowledge Base. 3 January 2013. Archived from the original on 16 January 2014. Retrieved 14 January 2014.

외부 링크