2
我有一個奇怪的問題。我有一個Matlab mexfunction,其中我使用了OpenMP指令/函數。並行段(平行...)開始之前,我用命令來設置和打印創建的線程數量:創建的線程數是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(...)
的問題是,在輸出端,它打印'Num of threads = 12',但下面的並行部分不能在我的機器的所有12個內核上運行(但只有1個內核)。我的程序寫得很久了,我之前沒有遇到過這樣的問題(它運行在所有12個內核上)。最近,系統遭到破壞,操作系統(Win 7 Pro)重新安裝了最新版本的Matlab 2011b(2010年初)。我還安裝了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)。 – 2012-01-16 21:23:52
@AloisKraus:問題在於Windows 7 Pro,它支持兩個物理處理器插槽(以及許多內核/插槽)。 – 2012-01-16 22:08:00