2010-10-27 161 views
1

我終於得到了一段與OpenMP並行運行的代碼,沒有錯誤。但是,當我將dll部署到另一臺機器時,它不再平行運行。OpenMP在一臺機器上並行,但在另一臺機器上串行

記錄顯示omp_in_parallel() == 0在另一臺機器上,但沒有在我的機器上。

我的機器正在使用Intel i5 CPU,其中有2個超線程核心,用於生效omp_get_numProcs() == 4。另一個是在Microsoft Server 2008上爲其分配2個處理器的虛擬機,因此爲omp_get_numProcs() == 2

是否有已知的設置可以使程序在某些值下並行運行而不是其他值?

+0

記錄目標機器與您的機器之間的差異。尤其是CPU是多核還是超線程。 – 2010-10-27 14:28:39

+0

你怎麼知道它沒有並行運行? OMP_NUM_THREADS是否在新機器上正確設置? – 2010-10-27 17:51:36

+0

你在兩臺機器上嘗試過'omp_get_num_threads()'嗎? Jonathan建議你檢查兩臺機器上通常環境變量的值嗎? – 2010-10-29 08:24:52

回答

1

我已經在調試模式下啓用了OpenMp,但在發佈版中沒有啓用。當我在我的機器上使用Debug配置測試時,部署的dll處於Release模式。

你會認爲我會在最後一次發生這種事情後學會。 :-)

謝謝你的回答和我的道歉浪費你的時間。

相關問題