이상한 문제가 있습니다. 나는 OpenMP 지시문/함수를 사용한 Matlab mexfunction을 가지고있다.만든 스레드 수는 12이지만 여전히 12 코어 CPU 중 하나의 코어에서만 실행됩니다.
nP = omp_get_num_procs();
omp_set_num_threads(nP);
mexPrintf("\n Num of threads= %d\n",nP);
.
.
.
#pragma omp parallel for shared(...)
문제는 그것이 출력에서이다 : 병렬 섹션 (병렬 ...)의 시작하기 전에, 내가 만든 스레드의 수를 설정하고 인쇄 명령을 사용하여 '스레드 수 = 12'를 인쇄하지만, 다음 병렬 섹션은 내 컴퓨터의 12 개 코어 모두에서 실행되지 않습니다 (단 1 코어 만). 내 프로그램은 오래 전에 작성되었으며 이전에는 그런 문제가 없었습니다 (12 개 코어 모두에서 실행되었습니다). 최근에 시스템이 손상되어 OS (Win 7 Pro)가 Matlab 2011b의 업데이트 된 버전으로 다시 설치되었습니다 (2010b 이전). Visual Studio 2010 Pro도 설치했습니다.
내가 놓치거나 간과하는 것이 있습니까?
하나의 코어 만 사용하도록 Windows를 구성 했습니까? http://www.sevenforums.com/tutorials/66504-processors-limit-number-used-windows-7-a.html. Windows Server 2008에는 사용 된 코어 수를 구매 한 에디션에 따라 제한이 있습니다 (http://www.directionsonmicrosoft.com/sample/DOMIS/update/2008/02feb/0208ws2plp_ch.htm). –
@AloisKraus : Windows 7 Pro는 두 개의 실제 프로세서 소켓 (및 많은 코어/소켓)을 지원합니다. –