IPMACC: OpenACC 코드를 CUDA·OpenCL 로 자동 변환하는 오픈소스 프레임워크

IPMACC: OpenACC 코드를 CUDA·OpenCL 로 자동 변환하는 오픈소스 프레임워크
안내: 본 포스트의 한글 요약 및 분석 리포트는 AI 기술을 통해 자동 생성되었습니다. 정보의 정확성을 위해 하단의 [원본 논문 뷰어] 또는 ArXiv 원문을 반드시 참조하시기 바랍니다.

초록

IPMACC는 OpenACC 지시자를 포함한 C/C++ 코드를 분석·변환하여 CUDA 또는 OpenCL 소스와 실행 파일을 자동 생성하는 컴파일러 프론트엔드이다. 4단계 파이프라인(전처리, 중간 XML 변환, 목표 코드 생성, 최종 바이너리 컴파일)으로 구성되며, OpenACC 데이터·연산 지시문의 의미를 파악해 메모리 관리와 커널 호출 코드를 삽입한다. Rodinia와 CUDA SDK 벤치마크를 이용해 정확성을 검증했으며, CUDA 최적화 버전과 비교해 메모리 전송은 비슷하지만 커널 실행·런치 오버헤드에서 차이가 발생함을 보고한다.

상세 분석

IPMACC는 OpenACC를 지원하는 기존 컴파일러가 부족한 점을 보완하기 위해 설계된 오픈소스 변환 프레임워크이다. 입력 소스는 먼저 uncrustify 와 자체 스캐너를 이용해 문법을 정규화하고 OpenACC 지시문의 유효성을 검사한다(1단계). 이후 XML 기반 중간 표현으로 변환하는데, 이 단계에서는 C 코드, OpenACC pragma, for‑loop 세 종류의 태그만 남겨 두어 호스트와 디바이스 영역을 명확히 구분한다(2단계). 3단계에서는 XML을 순차적으로 9개의 서브스텝으로 처리한다. 핵심은 OpenACC 영역을 ‘dummy 함수’로 대체하고, 원본 코드의 AST를 분석해 변수 타입·배열 크기·외부 함수 선언을 추출하는 것이다. 이를 통해 커널 본문을 자동 생성하고, 데이터 복사·할당·해제 코드를 삽입한다. 특히 reduction clause는 기존 연구


댓글 및 학술 토론

Loading comments...

의견 남기기