我正在调试一个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编译器和库。所以它不太可能与编译器/库有关。
您能否指出可能导致现场的任何可能原因?为什么它会受到另一个程序的影响?
感谢。
答案 0 :(得分:0)
我担心您需要提供更多信息。