최근 수정 시각 : 2026-05-14 15:00:36

OpenMP


<colcolor=#fff> 파일:openmp-header-logo-100h.png
<colbgcolor=#00737d> 관리 OpenMP ARB
최초 공개 1997년 10월 (Fortran), 1998년 10월 (C/C++)
최신 버전 6.0 (2024년 11월)
지원 언어 C, C++, Fortran
플랫폼 Windows, Linux, macOS
링크 파일:홈페이지 아이콘.svg 파일:GitHub 아이콘.svg

1. 개요2. 특징3. 역사4. 컴파일러 지원5. 관련 문서

1. 개요

OpenMP는 공유 메모리 환경에서의 병렬 프로그래밍을 위한 API 표준이다. 컴파일러 지시어(directive), 라이브러리 함수, 환경 변수로 구성되며, C, C++, Fortran을 지원한다.

기존 순차 코드에 omp 지시어를 삽입하는 것만으로 병렬화가 가능하여, 멀티스레드 프로그래밍의 진입 장벽을 크게 낮춘 것으로 평가받는다.

2. 특징

3. 역사

1990년대 중반, 각 하드웨어 제조사들이 자체적인 병렬화 문법을 사용하면서 코드의 이식성이 심각한 문제로 대두되었다. 이를 해결하기 위해 인텔, AMD, IBM, HP, Sun Microsystems 등 주요 하드웨어·소프트웨어 업체들이 모여 OpenMP Architecture Review Board(ARB)를 결성했다.

1997년 10월 Fortran용 1.0 표준이 최초로 발표되었고, 이듬해인 1998년 10월에 C/C++용 1.0 표준이 발표되었다.

4. 컴파일러 지원

OpenMP는 일반 라이브러리만으로 구현되는 기능이 아니라 컴파일러 지원이 필요하다. 컴파일러가 OpenMP 지시어를 해석해 병렬 실행 코드를 생성하고, 실행 시에는 각 컴파일러가 제공하는 OpenMP 런타임 라이브러리가 스레드 관리와 스케줄링을 담당한다.

대부분의 C/C++ 컴파일러에서는 별도 옵션을 주어 OpenMP를 활성화한다. GCCClang 계열에서는 주로 -fopenmp, MSVC에서는 /openmp, NVIDIA HPC SDK에서는 -mp 또는 GPU offload용 -mp=gpu 같은 옵션을 사용한다.
컴파일러 활성화 옵션 비고
GCC -fopenmp libgomp 런타임 사용.
LLVM/Clang -fopenmp libomp 런타임 사용.
Intel oneAPI DPC++/C++ Compiler -qopenmp
MSVC /openmp
NVIDIA HPC SDK -mp, -mp=gpu

5. 관련 문서