대부분의 병렬화 패턴은 루프를 병렬화하는 것
루프 병렬화 페턴
- 사용할 쓰레드 개수를 설정
- pthread의 경우 pthread_create를 여러번 호출
- num_threads directive
- ★ 루프의 범위를 각 쓰레드에게 적절하게 배분
- 쓰레드는 각자 배분받은 할당량을 처리
- 쓰레드별로 처리한 작업을 한 곳에 모아서 정리 및 통합
이런 방식으로 루프 병렬화를 하게 되고, 특히 작업을 배분하는 일이 필수적으로 중요하다.
하지만 이 작업은 번거롭고 어려운 작업이기 떄문에 시스템에서 이를 지원해주고,
그것이 바로 Parallel for이다.
#pragma omp parallel + #pragma omp for
Static scheduling
- Parallel for가 병렬화를 해주는 함수인만큼 일 분부가 필요
- 일반적인 방법으로는 같은 양 만큼의 chunk를 미리 분배 후 루프를 돌린다.