728x90

동기화 루틴

- #pragma omp critical 

 => 한 스레드가 동작중에 다른 스레드가 사용못하도록 막음

 => 한 스레드마다 처리 ? -> 차례차례이므로 병렬화가 아님 -> 성능이 떨어진다.

- 동기화를 시키기 위해 사용

 

 

 

 

 

 

 

동기화

- 스레드 작업 순서에 제한 두기 가능

- 공유 데이터 접근 제어

- 가능한 안쓰는것이 좋음

- 고수준 동기화 : critical, atomic, barrier

- 저수준 동기화 : flush, locks

 

critical과 atomic의 차이

- critical : 한번에 한 스레드만 이름으로 구분하는 critical 영역 진입

- atomic : 메모리의 한 위치에만 적용됨. mini-critical section. 크리티칼 영역보다 작음

 

 

 

베리어

- 모든 스레드들이 베리어에 도달 할 떄까지 대기함

- 작업 분할 구문(#pragma omp for)에서는 사용 불가

 

 

베리어가 없는 경우

- 스레드들이 베리어가 없으므로 기다리지 않고 그냥 처리

 => 결과 값이 달라짐

 

300x250

+ Recent posts