У меня странная проблема. У меня есть mex-функция Matlab, в которой я использовал директивы/функции OpenMP. Перед началом параллельного раздела (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 ядрах). Недавно система была повреждена, и ОС (Win 7 Pro) была переустановлена с обновленной версией Matlab 2011b (ранее 2010b). Я также установил Visual Studio 2010 Pro.
Есть ли что-то, что я упускаю или пропускаю?