OpenACC 모듈 OPENACC
OpenACC 모듈 OPENACC
OpenACC 애플리케이션 프로그래밍 인터페이스의 Fortran 런타임 루틴을 쓸 수 있게 해 주는 OPENACC 모듈을 소개해요. 이 모듈에서 미리 정의해 둔 이름 상수들을 보면 어떤 버전의 API를 대상으로 하고 있는지도 함께 확인할 수 있어요.
본문
OpenACC Fortran 런타임 라이브러리 루틴은 OPENACC라는 이름의 Fortran 90 모듈 형태와, openacc_lib.h라는 이름의 Fortran include 파일 형태, 두 가지로 제공돼요. OPENACC가 제공하는 프로시저 목록은 GNU Offloading and Multi Processing Runtime Library 매뉴얼의 소개(Introduction) 부분에서 찾을 수 있고, 모듈에 정의된 이름 상수들은 아래에 정리되어 있어요.
자세한 내용은 실제 OpenACC Application Programming Interface v2.6 문서를 참고하면 돼요.
OPENACC는 스칼라 디폴트-정수형(정수형입니다) 이름 상수 openacc_version을 제공하는데, 그 값은 yyyymm 형태예요. 여기서 yyyy는 연도, mm은 월을 나타내고, OpenACC v2.6에 대해서는 값이 201711이에요.
이 모듈을 이해하려면 OpenACC가 어떤 역할을 하는지 아는 게 도움이 돼요. OpenACC는 GPU 같은 가속기에서 병렬 처리를 하기 위한 지시어(directive) 기반 프로그래밍 모델로, !$acc 접두어로 시작하는 지시어를 소스에 삽입해 사용하는 API예요. OPENACC 모듈은 그런 지시어가 아니라, 런타임에서 직접 호출할 수 있는 루틴과 상수를 제공하는 역할을 해요.
openacc_version 상수는 특히 유용한데요. OpenACC 사양이 업데이트될 때마다 이 값이 함께 바뀌기 때문에, 컴파일 타임에 이 상수를 검사하면 "지금 컴파일러가 어느 버전의 API를 지원하는지"를 조건부로 확인할 수 있어요. 예를 들어 코드를 작성하는 시점에 따라 지원 범위를 다르게 하고 싶다면 이 상수를 기준으로 분기할 수 있죠.
또 하나 알아 둘 점은 이 모듈이 제공하는 루틴이 GNU의 libgomp(오프로딩 및 다중 처리 런타임) 문서에서 상세히 다뤄진다는 거예요. 그러니까 이 페이지는 모듈의 존재와 버전 상수를 확인하는 용도로 보고, 실제 루틴의 동작은 libgomp 매뉴얼에서 찾는 흐름이 자연스러워요.
더 알아보기
- Intrinsic Modules — gfortran이 제공하는 내장 모듈 전체 목록
- OpenACC Application Programming Interface v2.6 — OpenACC 공식 사양 문서
- GNU Offloading and Multi Processing Runtime Library (libgomp) — OpenACC/OpenMP 런타임 루틴 매뉴얼