Наконец-то я получил раздел моего кода для параллельной работы с OpenMP без ошибок. Однако, когда я развернул dll на другой машине, он больше не работал параллельно.OpenMP параллелен на одной машине, но последователен по другому
Заготовка леса показывает, что omp_in_parallel() == 0
на другой машине, но не на моем.
Моя машина использует процессор Intel i5, у которого есть 2 гиперповерхностных ядра для эффективного omp_get_numProcs() == 4
. Другая - виртуальная машина с двумя процессорами, назначенными ей на Microsoft Server 2008, таким образом omp_get_numProcs() == 2
.
Есть ли известные настройки, которые заставили бы программу работать параллельно при определенных значениях, а не в других?
Документируйте различия между целевой машиной и вашим. Особенно, имеет ли процессор несколько ядер или гиперпоточность. –
Как вы знаете, что он не работает параллельно? Правильно ли установлен OMP_NUM_THREADS на новом компьютере? –
Вы пробовали 'omp_get_num_threads()' на двух машинах? Вы проверили значения обычных переменных среды на обеих машинах, как предложил Джонатан? –