Не удается заставить OpenMP создавать более одного потока

#include <omp.h>
#include <stdio.h>


int main(int argc, char* argv[])
{
 omp_set_num_threads(4);
 printf("numThreads = %d\n", omp_get_num_threads());
}

Этот код печатает:

количество потоков = 1

Это скомпилировано в Visual Studio 2010 Ultimate. Я переключил свойства конфигурации проекта (все конфигурации) -> C/C++ -> язык -> поддержка Open MP на Да (/openmp)

Я в растерянности. Я изолировал эту проблему от более крупного проекта, в котором я хотел бы использовать более одного потока.

Любые идеи?


person Gabriel    schedule 31.08.2010    source источник


Ответы (1)


omp_get_num_threads — Размер активной команды

Возвращает количество потоков в текущей команде. В последовательном разделе программы omp_get_num_threads возвращает 1.

http://gcc.gnu.org/onlinedocs/libgomp/omp_005fget_005fnum_005fthreads.html#omp_005fget_005fnum_005fthreads

Это означает, что используйте эту функцию внутри параллельного цикла, чтобы узнать, сколько потоков использует OMP.

person Alex F    schedule 31.08.2010