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 |