奇妙な問題があります。OpenMP ディレクティブ/関数を使用した Matlab mexfunction があります。並列セクション (parallel for...) の開始前に、コマンドを使用して、作成されたスレッドの数を設定および出力します。
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 もインストールしました。
見逃しているものや見落としているものはありますか?