본문 바로가기

Study/서울대 천둥을 이용한 병렬처리

스터디문제2

void omp_set_num_threads( int num )

- 병렬화 스레드의 개수를 지정

- 환경변수 OMP_NUM_THREADS로 쓰레드 수를 지정하는 것보다 API가 우선하여 적용된다.


int omp_get_num_threads()

- 현재 동작 중인 병렬 영역의 스레드 개수

- 병렬 영역이 아닌 지역에서 호출되면 1을 리턴


int omp_get_max_threads()

- 병렬 영역 내외에 관계없이 omp_set_num_threads 함수로 설정된 스레드 수를 리턴


int omp_get_thread_num()

- 현재 실행중인 스레드 id


int omp_get_num_procs()

- 현재 OS에서 인식하고 있는 CPU의 개수


int omp_in_parallel()

- 현재 위치가 병렬화된 영역인지 알려줌

- 병렬 구간일 경우 true, 아니면 false(0)을 리턴


==============================================================


void omp_set_max_active_levels( int max_active_levels ) // OpenMP 3.0 이상

- 다중 병렬 영역의 최대 깊이(Nested 깊이)를 설정


int omp_get_max_active_levels() // OpenMP 3.0 이상

- 최대 다중 병렬 영역의 깊이(Nested 깊이)를 가져옴


int omp_get_level() // OpenMP 3.0 이상

- 현재 다중 병렬 영역의 깊이(Nested 깊이)를 가져옴


===============================================================


void omp_init_lock( omp_lock_t lock )

- Lock을 사용하기 위해 변수를 초기화하는 함수


void omp_set_lock( omp_lock_t* lock )

- Lock 변수로부터 Lock을 취득


void omp_unset_lock( omp_lock_t* lock )

- Set한 Lock을 해제함


void omp_destroy_lock( omp_lock_t* lock )

- 초기화한 Lock을 해제함


double omp_get_wtime( void )

- 노드 하나를 사용하여 모든 계산이 종료될 때 걸린 시간, Wall Clock(벽걸이)의 경과 시간을 가져옴

==================================================================

Environment Variables

OpenMP 환경변수 사용의 경우 Windows는 set명령을 사용 Linux

• OMP_SCHEDULE : 스케줄링 타입과 chunk 크기를 설정

• OMP_NUM_THREADS : 병렬 구간에서 생성할 쓰레드 개수

• OMP_NESTED : 쓰레드 중첩의 허용 여부를 설정

• OMP_MAX_ACTIVE_LEVELS : OMP_NESTED에 의해 NESTED병렬이 유효할 경우 내부 계층 단계를 지정할 수 있다. OpenMP 3.0부터 지원

export OMP_SCHEDULE "guided, 4"

export OMP_NUM_THREADS 16

export OMP_NESTED false

export OMP_MAX_ACTIVE_LEVELS = 2

'Study > 서울대 천둥을 이용한 병렬처리' 카테고리의 다른 글

스터디문제 4  (0) 2013.10.02
스터디문제3  (0) 2013.10.02
스터디 문제  (1) 2013.10.02
13.09.30 스터디 준비  (0) 2013.09.30
끄적끄적  (0) 2013.09.26