OpenMP程序的奇怪行为

时间:2011-01-19 10:06:57

标签: openmp

我正在调试一个OpenMP程序。它的行为很奇怪。

1)如果一个简单的程序P(while(1)loop)占用100%的一个核心,那么即使它占用了所有剩余的核心,OpenMP程序也会暂停。一旦我终止程序P,OpenMP程序就会继续执行。

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

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

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

感谢。

1 个答案:

答案 0 :(得分:0)

我担心您需要提供更多信息。

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