看板 CSSE 關於我們 聯絡資訊
※ 引述《Geigemachen ()》之銘言: : 我分享使用Intel Visual Fortran Compiler Professional試用版 : 進行編譯雙核心程式的心得與疑難。 : 不用修改原始程式碼,裝對compiler還有其他軟體元件,在編譯時加對正確的選項參數 : 就好了。 : 最令我困惑的現象是,前幾個小時CPU使用率滿載100%,程式執行得很快, : 連續執行一天以後就慢得幾乎不會動,刪除暫存檔,重開機,或是關機幾小時冷卻 : 再開機,還是快不起來。 : 步驟與現象: : 1.首先安裝Microsoft visual studio (我用2003安裝不順,2005則很快成功) : 2.下載Intel Visual Fortran Compiler Professional,試用期30天 : http://software.intel.com/en-us/articles/intel-visual-fortran-compiler- : professional-edition-for-windows-evaluation/ : 3.啟動compiler : (1)視窗版:比較容易,省略不提 : (2)命令列版: :   a)點選程式集中的Fortran Build Environment for applications,   : (省略此動作,直接進入命令列編譯,會讓link失敗,如同Microsoft visual :     studio安裝部份失敗時卻仍然安裝且啟動compiler時所產生的錯誤訊息) :   畫面跳入命令列以後到C:\Program Files\Intel\Compiler\11.1\051\bin\ia32 :   目錄找到ifort.exe : 4.編譯選項 :  使用ifort編譯雙核心程式,加入正確的選項。我選的命令與選項如下: :  (連著不要換行:) :  ifort [目的檔名不加.exe] /O3 /Qparallel /Qpar-runtime-control : /Qdiag-enable:par [Fortran來源檔名,含副檔名] :  最佳化程度選項: :   /O3  很積極最佳化最快運算速度,即使對某些程式而言速度不會更快, :      仍增大程式碼最佳化以進行加速 :   /O2  最佳化最快運算速度,對某些程式而言速度不會更快, :      不增大程式碼也不再繼續最佳化 : /Qparallel 指定編譯時把回圈運算分給不同的多核心CPU進行自動平行運算 :   /Qpar-runtime-control 讓編譯器產生執行控制碼,進行有效的自動平行運算 :   /Qdiag-enable:par 顯示編譯時有關平行運算部分的細節與診斷訊息。 :             系統預設不顯示,無法在編譯時被通知是否有進行平行化。 :  以上選項參數的細節可用ifort/help查訊  :   : 5.編譯後的速度與可攜性 :  我把編譯成功的雙核心.exe在安裝Intel compiler的電腦#1上執行成功, :  速度頗快,是單核心程式執行速度的2-5倍。CPU使用率也從50%上升到100%。 : 信心滿滿地移植到另一台的雙CPU電腦電腦#2執行,卻發現.exe的可攜性不好, :  程式執行會中斷,出現"找不到libiomp5md.dll"的錯誤訊息。 :   :  我就把搜尋電腦#1compiler資料夾,找到這個檔案: : C:\Program Files\Intel\Compiler\11.1\051\bin\ia32\ :  libiomp5md.dll : 把它拷貝到電腦#2上.exe的同一個資料夾,從此這個惱人的錯誤訊息就消失了。 : 電腦#2也享受到了類似的加速效果,CPU使用率也從50%上升到100%。 : 6.超過24小時CPU使用率達到100%的後果:執行速度慢到不會動!? :  因為研究工作需要,我需要在兩台電腦上連續執行大量程式,常常超過24小時。 :  我在電腦#1 #2 上都執行雙核心程式,超過24小時CPU使用率達到100%, :  程式執行速度逐漸變慢,一天後比剛開機就執行的單核心的程式還慢 :  (同樣的程式,單核心程式要連續3-4天以上不關機,才會變得這麼慢)。 所以你的程式是本來就會越跑越慢? 如果你的程式跑到一定的步驟後就會變慢, 那你加速後, 本來3-4天會變慢的, 1天以後就變慢, 聽起來很合理.... 作業系統是? [以下恕刪] -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.136.237.96