스터디문제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()- 현재 위치가 병렬화된 영역인지 알려줌.. 더보기 스터디 문제 다음 코드의 결과를 쓰시오#include#include int main(){#pragma omp parallel num_threads(4) { printf("Hello World!\n"); } return 0;} 다음 코드의 결과를 쓰시오 #include#include int main(){ int x=0; printf("main area x: %d\n",x); omp_set_num_threads(2);#pragma omp parallel private(x) { if(omp_get_thread_num()==0) x=1; else x=2; printf("Num %d thread area x : %d\n",omp_get_thread_num(),x); } printf("main area x: %d\n",x); .. 더보기 [스터디]OpenMP Parallel for 대부분의 병렬화 패턴은 루프를 병렬화하는 것 루프 병렬화 페턴- 사용할 쓰레드 개수를 설정- pthread의 경우 pthread_create를 여러번 호출- num_threads directive - ★ 루프의 범위를 각 쓰레드에게 적절하게 배분 - 쓰레드는 각자 배분받은 할당량을 처리 - 쓰레드별로 처리한 작업을 한 곳에 모아서 정리 및 통합 이런 방식으로 루프 병렬화를 하게 되고, 특히 작업을 배분하는 일이 필수적으로 중요하다.하지만 이 작업은 번거롭고 어려운 작업이기 떄문에 시스템에서 이를 지원해주고,그것이 바로 Parallel for이다. #pragma omp parallel + #pragma omp for Static scheduling - Parallel for가 병렬화를 해주는 함수인만큼 일.. 더보기 이전 1 ··· 8 9 10 11 12 13 14 ··· 63 다음