Parallel/Parallel Programing

[스터디]OpenMP Parallel for

Houkibosi 2013. 10. 2. 00:43

대부분의 병렬화 패턴은 루프를 병렬화하는 것


루프 병렬화 페턴

- 사용할 쓰레드 개수를 설정

- pthread의 경우 pthread_create를 여러번 호출

- num_threads directive


- ★ 루프의 범위를 각 쓰레드에게 적절하게 배분


- 쓰레드는 각자 배분받은 할당량을 처리


- 쓰레드별로 처리한 작업을 한 곳에 모아서 정리 및 통합



이런 방식으로 루프 병렬화를 하게 되고, 특히 작업을 배분하는 일이 필수적으로 중요하다.

하지만 이 작업은 번거롭고 어려운 작업이기 떄문에 시스템에서 이를 지원해주고,

그것이 바로 Parallel for이다.


#pragma omp parallel + #pragma omp for



Static scheduling


- Parallel for가 병렬화를 해주는 함수인만큼 일 분부가 필요

- 일반적인 방법으로는 같은 양 만큼의 chunk를 미리 분배 후 루프를 돌린다.