본문으로 건너뛰기

© 2026 Molayo

arXiv논문2026. 05. 27. 13:41

OpenMP 병렬성을 포함한 C 언어의 형식적 의미론 (A Formal Semantics of C with OpenMP Parallelism)

요약

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 의미론 (C semantics)과 이를 동시성 (concurrency)으로 확장한 연구를 바탕으로, OpenMP 지시어 (directives)가 포함된 C 코드에 대한 형식적 의미론 (formal semantics)을 제시합니다. 우리의 의미론은 이전의 OpenMP 의미론에서 모호하게 처리되었던 OpenMP 지시어와 변수 상태 (variable state) 사이의 미묘한 상호작용을 포착하며, 잘못된 어노테이션으로 인해 발생하는 원치 않는 동작을 탐지할 수 있는 기반을 제공합니다. 특히, 모든 성공적인 실행은 데이터 레이스 (data races)가 없음을 보장합니다.

AI 자동 생성 콘텐츠

본 콘텐츠는 arXiv cs.PL (Programming Languages)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0