Introduction
OpenMP는 하고자 하는 작업을 thread
별로 할당하여 병렬로 계산하는 방법이며, 공유 메모리를 통해 작업을 처리한다. 공유 메모리를 어떻게 사용할 것인가가 중요하다. Master thread
외에는 계산하고자 하는 Thread
를 임의로 정할 수 없다.
병렬작업을 이야기할 때 fork와 join을 이야기한다. 작업이 병렬화될 때를 fork라고 하며, 병렬작업이 끝날때를 join이라고 한다. 코드에서 !$omp parallel
명령어가 작업을 병렬화해 주는 시점(fork)이 된다. !$omp end parallel
은 병렬화가 종료되는 지점(join)이다.
Install
$ sudo pacman -S gcc
Compile
Compile시에는 옵션을 넣어주어야 하며, 제조사별로 옵션명 다르다.
-
GCC
-fopenmp
-
Intel
-qopenmp
-
PGI
-mp
$ gfortran -fopenmp -o a.out file_name.f90
그리고 몇개의 thread
로 작업을 할 것인지 실행파일을 실행 전에 정해주어야 한다. 코드내에서도 정할 수 있다.
$ export OMP_NUM_THREADS=4
$ ./a.out
export OMP_NUM_THREADS=4
에서 OMP_NUM_THREADS
는 대문자로 써야하며 =4
는 붙여써야 한다.