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 |