странное поведение программы OpenMP - PullRequest
0 голосов
/ 19 января 2011

Я отлаживаю программу OpenMP. Его поведение странно.

1) Если простая программа P (цикл while (1)) занимает одно ядро ​​на 100%, программа OpenMP приостанавливается, даже если она занимает все оставшиеся ядра. Как только я завершаю программу P, программа OpenMP продолжает выполняться.

2) Программа OpenMP может успешно выполняться в ситуации 1, если для OMP_NUMBER_THREADS установлено значение 32/16 / 8.

Я тестировал как на 8-ядерных машинах x64, так и на 32-ядерных машинах Itanium. Первый использует GCC и libomp. Последний использует частный компилятор aCC и библиотеки. Так что это вряд ли связано с компилятором / библиотекой.

Не могли бы вы указать на возможные причины, которые могут вызвать сцену? Почему это может быть затронуто другой программой?

Спасибо.

1 Ответ

0 голосов
/ 25 января 2011

Боюсь, что вам нужно дать больше информации.

  • В какой ОС вы работаете?
  • Когда вы используете 16 потоков, вы делаете это на 8-ядерном или 32-ядерном компьютере?
  • Что делает простая программа while (p) в цикле while?
  • Что делает программа OpenMP (в общих чертах - если вы не можете быть конкретным)?
  • Вы пытались использовать инструмент профилирования, чтобы увидеть, что делает программа OpenMP?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...