2011-01-19 89 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程序在做什麼?