OpenMP 병렬성을 포함한 C 언어의 형식 의미론 (확장 버전)
요약
본 논문은 OpenMP 프라그마를 사용하는 C 언어 코드의 논리적 오류와 레이스 컨디션을 방지하기 위한 형식 의미론을 제시합니다. CompCert의 C 의미론을 동시성 모델로 확장하여, OpenMP 지시어와 변수 상태 간의 상호작용을 정밀하게 정의합니다.
핵심 포인트
- OpenMP 지시어로 인한 논리적 오류 및 레이스 컨디션 문제 해결
- CompCert 컴파일러 기반의 C 언어 동시성 의미론 확장
- OpenMP 지시어와 변수 상태 간의 미묘한 상호작용 포착
- 성공적인 실행 시 데이터 레이스가 없음을 보장하는 기반 마련
OpenMP는 사용자가 몇 가지 간단한 주석(annotations)을 통해 순차적 코드(sequential code)를 병렬 코드(parallel code)로 변환할 수 있게 해주는 대중적인 병렬화 프레임워크(parallelization framework)입니다. 불행히도, 기존에 올바르게 작동하던 프로그램에 OpenMP 프라그마(pragmas)를 추가함으로써 논리적 오류(logic errors)와 레이스 컨디션(race conditions)을 포함한 오류를 의도치 않게 유발하기 쉽습니다. 본 논문에서는 검증된 컴파일러인 CompCert의 C 의미론(semantics)과 이를 동시성(concurrency)으로 확장한 연구를 바탕으로, OpenMP 지시어(directives)가 포함된 C 코드에 대한 형식 의미론(formal semantics)을 제시합니다. 우리의 의미론은 이전의 OpenMP 의미론에서는 모호했던 OpenMP 지시어와 변수 상태(variable state) 사이의 미묘한 상호작용을 포착하며, 잘못된 주석으로 인해 발생하는 원치 않는 동작을 탐지할 수 있는 기반을 제공합니다. 특히, 모든 성공적인 실행은 데이터 레이스(data races)가 없음을 보장합니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 arXiv cs.PL (Programming Languages)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기