컴퓨터

C++ 라이브러리 OpenMP

안데스초콜릿 2024. 10. 24. 01:56

OpenMP는 멀티코어 환경에서 효율적으로 프로그램 특히 단순 반복문을 여러 스레드로 나누어 병렬로 실행할 수 있게 도와주는 API다.

 

기존 코드의 반복문에 지시문 한줄만 추가해주면 되어 굉장히 간단하지만

스레드 간 동기화 및 공유 자원 관리에 주의해야 한다.

 

사용방법

1. 헤더

#include<omp.h>

 

2. 병렬화 지시

 for문이 있으면 그 앞에 다음 한 줄을 추가해주면 된다.

#pragma omp parallel for

parallel : 병렬 실행 명령

for : 반복문을 각 스레드에 나누어 할당

 

3. 추가 명령(예시)

병렬화된 반복문에서는 각 스레드가 독립적으로 작업을 수행한다.

하지만, 모든 스레드가 특정 변수에 작업을 시도하는 경우 충돌이 발생할 수 있다.

만약 각 스레드에서 독립적으로 수행한 작업을 sum 이라는 변수에 결과를 더한다고 치자(누적합), 이때 충돌을 막기 위하여

reduction(+:sum) 라는 명령어를 같은 줄에 추가해주면 된다.

+ : 더하기 연산

sum : 각 스레드가 개별적인 sum 변수를 가지고 연산한 뒤, 마지막에 합산

 

 

 

'컴퓨터' 카테고리의 다른 글

C++ 라이브러리 rapidcsv  (0) 2024.10.24
C++ 라이브러리 Armadillo  (1) 2024.10.22
C++ 표준 라이브러리 cmath  (0) 2024.10.22
C++ 라이브러리 추가 방법  (1) 2024.10.21
C++ 표준 라이브러리 자료구조 종류  (1) 2024.10.21