0
요즘 OpenMP를 배우고 있습니다. 인터넷에서 많은 블로그를 읽었으며 "루프 병렬화의 스레드 수"에 대해 매우 자주 의심하고 있습니다. 아래 예제를 사용하십시오C에서 OpenMP를 사용하는 루프 병렬화의 스레드 수
int x,y;
#pragma omp parallel for private(y)
for(x=0; x < width; x++)
{
for(y=0; y < height; y++)
{
finalImage[x][y] = RenderPixel(x,y, &sceneData);
}
}
이 예제에서는 병렬화에 사용되는 스레드 수입니다. 그것은 표준 방법인가요? 아니면 명시 적으로 스레드 수를 말해야합니까?
여부처럼 실행할 수있는 스레드의 특정 수의 (여기 2)와 함께 프로그램을 실행하기 위해 다음과 같은
같은 스레드의 수를 인쇄 할 수 있습니다 당신은 특정 수의 쓰레드가 강제로 사용되도록하거나 openmp가 그것을 결정하도록 할 것입니다. 그것은 ... omp_get_num_threads()에 의해 항상 쓰레드의 수를 문의 할 수 있습니다 –
특정 쓰레드 수 그럼 내가 생각하고있는 요소는 무엇인가? 예, 내 시스템에 2 개의 코어가있는 프로세서가 있다고 가정하면 스레드 수를 2로 제한합니까? – DeoChandra
실제 코어 수는 스레드 수를 제한하지 않습니다. 2 중핵 기계에, 당신은 4 개의 실을 가질 수있다, 그러나 당신은 그 실이 모든 중핵을 점유 할 것이라는 점을 결코 보증되지 않는다. 쓰레드는 논리적 인 엔티티입니다. 그래서 하나의 코어에서 모두 실행되는 네 개의 쓰레드로 끝날 수 있습니다. –