1
我終於得到了一段與OpenMP並行運行的代碼,沒有錯誤。但是,當我將dll部署到另一臺機器時,它不再平行運行。OpenMP在一臺機器上並行,但在另一臺機器上串行
記錄顯示omp_in_parallel() == 0
在另一臺機器上,但沒有在我的機器上。
我的機器正在使用Intel i5 CPU,其中有2個超線程核心,用於生效omp_get_numProcs() == 4
。另一個是在Microsoft Server 2008上爲其分配2個處理器的虛擬機,因此爲omp_get_numProcs() == 2
。
是否有已知的設置可以使程序在某些值下並行運行而不是其他值?
記錄目標機器與您的機器之間的差異。尤其是CPU是多核還是超線程。 – 2010-10-27 14:28:39
你怎麼知道它沒有並行運行? OMP_NUM_THREADS是否在新機器上正確設置? – 2010-10-27 17:51:36
你在兩臺機器上嘗試過'omp_get_num_threads()'嗎? Jonathan建議你檢查兩臺機器上通常環境變量的值嗎? – 2010-10-29 08:24:52