본문 바로가기
Programming/C | C++

OpenMP(2) - 입문자용 주요 사용법 간단한 설명/정리(omp single, master, task, taskwait, barrier)

by 썽하 2020. 7. 31.

 

저번 글에 이어서 몇 가지 더 사용법 정리.

 


 

사용법

1. omp single

#pragma omp single // 하나의 thread만 실행한다. 다른 thread는 기다린다.
#pragma omp single nowait // 하나의 thread만 실행한다. 다른 thread는 기다리지 않는다.

하나의 쓰레드만 동작하게 한다. 초기화나 출력부처럼 병렬 처리가 필요 없는 부분에서 용이하다.

 

2. omp master

#pragma omp master // master thread만 실행한다. 다른 thread는 기다리지 않고 넘어간다.

single과 매우 유사하지만 master thread 하나만 동작한다. 또한, 다른 쓰레드는 기다리지 않고 다음 부분을 실행한다.

3. omp task

#pragma omp task // thread 하나에 task를 넘겨주고 넘어간다.

다음에 오는 코드를 다른 하나의 thread에 넘겨주고 넘어간다.

 

4. omp taskwait

#pragma omp taskwait // 이전에 발생된 task가 모두 완료되고 난뒤 다음 행에 진입한다.

task들이 모두 완료될 때까지 동기화가 필요할 때가 있다. 그럴 때 taskwait를 써서 완료되지 않은 thread를 기다려 줄 수 있다.

 

5. omp barrier

#pragma omp barrier // 모든 thread가 barrier에 도착한 후 이후 라인을 실행한다.

딥러닝 같이 task들의 stage가 명확하게 구분되어있고 이전 stage가 완료되어야만 다음 stage를 실행할 수 있는 경우 barrier로 먼저 끝난 thread를 기다리게 할 수 있다.

 

 

Reference

 


 

데이터 동기화나 task 쪽에 자주 쓰는 것들을 정리해보았다.

 

댓글