OpenMP의 세 가지 스레드 및 코어 바인딩 방식
1741 단어 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의 뜻은 직렬 노드 부분의 핵 귀속을 계승하는 것이다. 즉, 모든 직렬 노드를 실행하는 핵이 모든 노드를 운행하는 것이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Visual C++ 2015에서 OpenMP 적용Visual C++ 2015의 기존 앱에 OpenMP를 적용하는 방법을 설명합니다. Qiita에는 연습이 테라의 첫 투고입니다. Hello World적인 간단한 내용입니다 죄송합니다. 적절히 확장 할 수 있다고 생각...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.