我在配備Intel Xeon CPU的機器上使用Ubuntu 14.04 x64。我正在經歷一個奇怪的行爲。我有一個Fortran代碼,並且計算的很長一部分與OpenMP並行。使用較小的數據集(比如小於4000),一切正常。但是,當我測試一個具有90K元素的數據集時,在中間的計算中突然使用的線程數量降爲1,這明顯減慢了計算速度。openmp Fortran代碼中的線程數改變
我已經做了這些檢查: 使用OMP_GET_NUM_THREADS()我監視進程中的線程數量,即使在系統使用1個線程後它也保持不變。
我使用LAPACK例程來計算循環內的特徵值計算。我在我的系統上再次編譯Lapack以確保我的系統上的庫不做任何事情。
難道系統會改變外部使用線程的數量嗎?如果是這樣,爲什 謝謝。
您是否在任何地方調用了'omp_set_num_threads'? – 2014-11-24 07:42:51
Tt看起來像一個負載平衡問題。試試動態調度:'!$ OMP PARALLEL SCHEDULE(DYNAMIC) – 2014-11-24 08:28:42
@Anthony,謝謝。這固定了它。我認爲我的輸入數據的性質使這發生了。 – Strongman 2014-11-24 13:26:30