2010-10-27 4 views
1

Наконец-то я получил раздел моего кода для параллельной работы с OpenMP без ошибок. Однако, когда я развернул dll на другой машине, он больше не работал параллельно.OpenMP параллелен на одной машине, но последователен по другому

Заготовка леса показывает, что omp_in_parallel() == 0 на другой машине, но не на моем.

Моя машина использует процессор Intel i5, у которого есть 2 гиперповерхностных ядра для эффективного omp_get_numProcs() == 4. Другая - виртуальная машина с двумя процессорами, назначенными ей на Microsoft Server 2008, таким образом omp_get_numProcs() == 2.

Есть ли известные настройки, которые заставили бы программу работать параллельно при определенных значениях, а не в других?

+0

Документируйте различия между целевой машиной и вашим. Особенно, имеет ли процессор несколько ядер или гиперпоточность. –

+0

Как вы знаете, что он не работает параллельно? Правильно ли установлен OMP_NUM_THREADS на новом компьютере? –

+0

Вы пробовали 'omp_get_num_threads()' на двух машинах? Вы проверили значения обычных переменных среды на обеих машинах, как предложил Джонатан? –

ответ

1

Я включил OpenMp в режиме отладки, но не в Release. Развернутая dll была в режиме Release, пока я тестировал ее на своем компьютере в конфигурации Debug.

Как вы думаете, я бы узнал после того, как это произошло в последний раз. :-)

Благодарим вас за ответы и мои извинения за то, что вы тратили свое время.

Смежные вопросы