私は奇妙な問題があります。私はOpenMP指令/関数を使用したMatlab mexfunctionを持っています。並列セクション(...のための並列)の開始前に、私が作成したスレッドの数を設定して印刷するためのコマンドを使用します。作成されたスレッドの数は12ですが、依然として12コアCPUの1つのコアでのみ実行されます
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コアすべてで実行されました)。最近、システムが壊れてしまい、Matlab 2011bのアップデート版(以前の2010b)でOS(Win 7 Pro)が再インストールされました。私はVisual Studio 2010 Proもインストールしました。
紛失や見落としがありますか?
1つのコアのみを使用するように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は、2つの物理プロセッサソケット(および多くのコア/ソケット)をサポートしています。 –