728x90
동기화 루틴
- #pragma omp critical
=> 한 스레드가 동작중에 다른 스레드가 사용못하도록 막음
=> 한 스레드마다 처리 ? -> 차례차례이므로 병렬화가 아님 -> 성능이 떨어진다.
- 동기화를 시키기 위해 사용
동기화
- 스레드 작업 순서에 제한 두기 가능
- 공유 데이터 접근 제어
- 가능한 안쓰는것이 좋음
- 고수준 동기화 : critical, atomic, barrier
- 저수준 동기화 : flush, locks
critical과 atomic의 차이
- critical : 한번에 한 스레드만 이름으로 구분하는 critical 영역 진입
- atomic : 메모리의 한 위치에만 적용됨. mini-critical section. 크리티칼 영역보다 작음
베리어
- 모든 스레드들이 베리어에 도달 할 떄까지 대기함
- 작업 분할 구문(#pragma omp for)에서는 사용 불가
베리어가 없는 경우
- 스레드들이 베리어가 없으므로 기다리지 않고 그냥 처리
=> 결과 값이 달라짐
300x250
'컴퓨터과학 > 기타' 카테고리의 다른 글
openmp - 16. reduction과 factorial (0) | 2020.07.29 |
---|---|
openmp - 15. reduction (0) | 2020.07.29 |
openmp - 13. 순차/병렬 내적 연산 (0) | 2020.07.29 |
openmp - 12. 병렬 루프(작업분할지시어) (0) | 2020.07.29 |
openmp - 11. 배열에 스레드 번호 저장하기 (0) | 2020.07.29 |