2011-01-19 4 views
0

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

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

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

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

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

Спасибо.

ответ

0

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

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