Я просто попытался OpenMP с помощью простой программы грПочему работает программа OpenMP только в одном потоке
test() {
for(int i=0;i<100000000;i++);
}
main() {
printf("Num of CPU: %d\n", omp_get_num_procs());
#pragma omp parallel for num_threads(4)
for(int i=0;i<100;i++) test();
}
Составлено с g++ -fopenmp
. Он может правильно распечатать, что у меня 4 процессора, но все тестовые функции работают на thread 0
.
Я попытался изменить OMP_NUM_THREADS
. Но это не имеет никакого эффекта.
У меня было все так же, как в онлайн-примерах, но почему бы мне не заставить его работать?
Откуда вы знаете, что работает только один поток? – Antoine
Да, я проверил в test(), распечатав omp_get_thread_num(). –
Вы проверили 'omp_get_max_threads()', чтобы узнать, могут ли вещи openmp использовать только один поток по какой-то причине? – Grizzly