2011-01-19 79 views
0

我在调试OpenMP程序。它的行为很奇怪。 1)如果一个简单的程序P(while(1)loop)占用一个核心100%,则OpenMP程序即使占用所有剩余核心也会暂停。一旦我终止程序P,OpenMP程序将继续执行。OpenMP程序的奇怪行为

2)如果我将OMP_NUMBER_THREADS设置为32/16/8,则OpenMP程序可以在情况1中成功执行。

我在8核x64机器和32核Itanium机器上进行了测试。前者使用GCC和libomp。后者使用私有的aCC编译器和库。所以它不太可能与编译器/库相关。

你能帮忙指出可能导致现场的任何可能的原因吗?为什么它会受到另一个程序的影响?

谢谢。

回答

0

恐怕您需要提供更多信息。

  • 什么是您正在运行的操作系统?
  • 当您使用16个线程运行时,您是在8核还是32核心机器上执行此操作?
  • 简单while(p)程序在这个while循环中做什么?
  • 什么是OpenMP程序在做什么(一般来说 - 如果你不能具体)?
  • 您是否尝试过使用分析工具来查看OpenMP程序在做什么?