OpenMP의 세 가지 스레드 및 코어 바인딩 방식

1741 단어 OpenMP
이전에 OpenMP 입문 강좌가 많은 것을 보았지만 핵 귀속 부분은 비교적 적다.핵귀속의 문장을 먼저 여기에 쓰시오.
 /*omp */
 #pragma omp parallel proc_bind(master)
 #pragma omp parallel proc_bind(close)
 #pragma omp parallel proc_bind(spread)
 /* */
 #pragma omp proc_bind(master)
 #pragma omp proc_bind(close)
 #pragma omp proc_bind(spread)


구체적인 이해 단계: Oracle® Solaris Studio 12.4: OpenMP API 사용자 안내서 또는 OpenMP Application Programming Interface 예제
만약에 하나의 프로세서에 4개의 핵이 있다고 가정하면 모두 두 개의 프로세서가 있는데 핵은 각각 p0, p1, p2...p7로 기록된다

spread


이것은 비교적 희소하고 고른 귀속 방식의 하나다.만약 M 라인, N 프로세서가 있다면, 병렬 라인이 시작될 때 먼저 직렬 라인이 실행되는 핵부터 분포하고, 각 핵에서 M/N 라인을 실행합니다.만약 직렬 스레드가 p1에서 운행되고 병렬 스레드가 4개의 스레드가 있다면 각각 p1, p3, p5, p7에 분포한다.만약에 직렬 스레드가 p0에서 운행되고 병렬 스레드가 16개의 스레드가 있다면 각각 p0에 스레드 0과 스레드 1, p1에 스레드 2와 스레드 3, p3에 스레드 4와 스레드 5, p4에 스레드 6과 스레드 7,..., p7에 스레드 14와 스레드 15가 분포된다.

close


이것은 일종의 긴밀한 귀속 방식이다.이런 방식은 직렬 라인과 가까운 핵을 우선적으로 분배한다.병렬 스레드가 핵수를 초과할 때, 분배 방식은spread와 비슷하다.만약 직렬 스레드가 p1에서 운행된다면 병렬 스레드에 들어갈 때 4개의 스레드가 있으면 각각 p1, p2, p3, p4에 분포한다.

master


master의 뜻은 직렬 노드 부분의 핵 귀속을 계승하는 것이다. 즉, 모든 직렬 노드를 실행하는 핵이 모든 노드를 운행하는 것이다.

좋은 웹페이지 즐겨찾기