Re: [問題] 關於compiler一問

看板Fortran作者 (如果狗狗飛上天)時間10年前 (2014/01/28 15:44), 編輯推噓6(6012)
留言18則, 6人參與, 最新討論串2/4 (看更多)
※ 引述《qscNERO (請叫我達文西)》之銘言: : 最近剛學習FORTRAN : 因為真的爬了文還是不太了解想問一下 : gfortran & intel fortran & FTN95 : 我是用FTN95的plato : 但是最近電腦換成win7後就怪怪的程式都跑不了 : 頂多跳出一個什麼都沒有的黑視窗 : 看精華區有人推薦gfortran & intel fortran : 可以請問一下這些的差異性嗎 : 還有像是gfortran是只能靠自己debug嗎 : 因為看別人說好像要在命令提示位元那邊CODE : 是不是就不能像FTN95會自己跳出可能哪邊的CODE可能有問題呢 : 謝謝大家 : 我最近還在為了找fortran的數值分析CODE頭痛 : 沒什麼中文資料 : 圖書館有的中文書都看過了 : 偏偏學CODE看別人的CODE學最快... g跟i沒太大的差別.FTN我沒用過,不敢評論. 但fortran的標準滿亂的,同樣的程式碼,這家過,那家不見得過. 現在主流的應該還是i跟g.我建議你要挑,還是從這兩個挑一個. 否則你的程式碼流通度會變低. intel fortran應該是效率最高的,尤其是搭配上intel的cpu更是! 加上可以搭配MKL,在數值計算上滿方便的.而且MKL預設對於一些 陣列的運算都是用平行化版的Blas(似乎是Atlas?).算是很主流的 函式庫.但缺點就是linux only.如果你常常需要在win底下工作 的話,可能比較麻煩.理論上用mingw應該也可以做到在win上 跑ifort,不過我沒試過,應該比較麻煩的就是.你可以googl看看. 另外就是ifort有比較多非標準的語法,所以用ifort寫的程式可能 流通性比較不佳.如果對方用的不是ifort,常常會出問題. gfortran的話是follow GNU標準,較少獨家語法.所以個人覺得流 通性較高.畢竟就算是別家編譯器過不了,也可以請對方用gfortran編. gfortran跨平台性高,linux是內建不說,就算在win底下也只要裝mingw 就自動內建了.安裝起來很簡單.缺點是他不像ifort直接套好了MKL給 你使用.要做數值運算的話,得自己另外裝數值函式庫.我的話是裝Lapack, 不過也不是太麻煩,官網抓下來自己編譯一下5分鐘也就好了.3.4到3.5我 都在win下用gfortran編過,都沒問題.不過gfortran+lapack比起 ifort+MKL,當然是不如.但如不如要看你的程式有多大.如果這個 差距根本不是有意義的差距,例如1min跟1.1min.這種比較似乎也沒 多大意義就是了.(不過你可以不要用lapack自帶的blas,自己去裝 優化過的blas,其實應該可以達到跟MKL一樣的效果,只是我一直懶得 去研究該怎麼做) 現在大多數的fortran complier也都可以直接支援OpenMP,自己跑的部 分要跑平行化基本上都不難,但函式庫除非你有能力自己改,否則只能認了. 至於哪個好?沒一定答案,如果你的實驗室大家都用ifort,就跟著用吧. ifort絕對是fortran目前最好的編譯器.如果你是獨立工作,用哪套自 己爽就好,我會建議你用gfortran,一來避免你養成一些非標準語法的 習慣,程式的流通性會比較好.二來gfortran跨平台跟安裝也簡單,如 果要請沒經驗的人用gfortran跑你的code也比較簡單. 至於我自己,多半是用gfortran,但有時候處理到一些用ifort寫 成的,還是會用到ifort. 至於你說編譯後有問題會不會跑出錯誤訊息這一點,每家編譯器都會. 沒聽說過不會的. 如果你喜歡在漂亮的圖形介面下點一下就自己編譯, 上網裝個免費的編輯器,例如notepad++,設定一下讓他用你指定的編譯 器編譯檔案也就可以了.這些都不是問題. debug的話,gfortran所用的gdb確實是要打指令來設停點(ifort應該也 是),看數值.但其實也就是兩三個指令要記而已.youtube一下,大概10分 鐘就可以學會了吧! 我自己的經驗用到gdb的機會也不多就是.大多數的 時候我還是習慣把程式一段給comment起來,然後把數據write出來. 所以這點我還可以忍受. 總之,各家complier沒什麼一定好壞,各有優缺.重要的是流通性要高, 而且要免費(要花錢的complier流通性自然受限,自己挑腰包也很傷 ,畢竟免費的都已經很好了,何必多花錢?不過當然啦,有些需求就是 花錢才買的到的,那就另當別論了),有長期被維護的.我自己的 建議從g跟i擇一.兩者的學習過程剛開始都有點痛苦,但痛苦的主要倒 不是程式本身,而是環境的建立.如何建好函式庫,建好方便程式寫作的 圖形介面這類的問題.環境建好了,其他就只是學語法就是了. 最後送你一些keyword,要怎麼排列組合隨便你,我自己的組合是: gfortran/Notepad++/Lapack,當然你要做其他的搭配也是完全可以的, 選好一個套餐之後,就好好開始google吧! 編譯器: ifort, gfortran (若在win,g請透過mingw裝,i我沒試過在win下跑) 文字編輯器: Notepad++, PSPad (Notepad++的F90語法支援要另外安裝,PSPad直接支援f90,但對檔案一大就整 個掛到不行,若有能力,建議還是乖乖用N來建環境,麻煩一點,但好處絕對多!) 函式庫: MKL,Lapack (MKL不知可否單獨裝,多跟ifort一起.Lapack安裝簡單,編成靜態函式庫就好, 但核心的Blas比較舊,如果找到優化過的Blas,例如Atlas取代lapack內建的計 算的效率應該會更好) -- ★人生中最溫暖的夏天是在紐約的冬天 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 128.120.178.119 ※ 編輯: pipidog 來自: 128.120.178.119 (01/28 16:28)

01/28 16:28, , 1F
01/28 16:28, 1F

01/28 21:32, , 2F
推一個 我也是gfortran & notepad++ & LAPACK/BLAS
01/28 21:32, 2F

01/29 22:17, , 3F
I沒辦法,除非你花錢向intel買win版的
01/29 22:17, 3F

01/30 04:50, , 4F
用cygwin或是mingw也沒辦法?
01/30 04:50, 4F

01/30 10:57, , 5F
如果不看價錢的話,我覺得pgi比較好(刻板印象)。
01/30 10:57, 5F

01/30 22:59, , 6F
mingw沒試過 cygwin沒辦法 win下要用模擬OS才有解
01/30 22:59, 6F

01/31 02:52, , 7F
那沒辦法了,這樣以流通性來講,gf顯然是王道了!
01/31 02:52, 7F

02/05 16:21, , 8F
超級感謝PI大這麼熱心的回答~
02/05 16:21, 8F

02/05 16:22, , 9F
因為我實驗室學長姐都沒有學這塊
02/05 16:22, 9F

02/05 16:22, , 10F
所以我只能自己摸 剛開始是用FTN95
02/05 16:22, 10F

02/05 16:23, , 11F
不過後來裝了WIN7就怪怪的不太能用
02/05 16:23, 11F

02/05 16:24, , 12F
又找不太到FTN可以用LAPACK的方法ORZ
02/05 16:24, 12F

02/05 16:24, , 13F
版主這篇可以M起來嗎 我覺得對新手蠻有幫助的QQ
02/05 16:24, 13F

02/06 03:47, , 14F
Lapack最好還是用g編譯吧(這也是他預設的),編好成靜態函式
02/06 03:47, 14F

02/06 03:48, , 15F
庫之後,你用FTN寫程式的時候就呼叫就好啦.你用FTN編lapack
02/06 03:48, 15F

02/06 03:49, , 16F
的話,失敗的可能性很高喔.如我所說,f各家語法不完全相同.
02/06 03:49, 16F

02/06 03:49, , 17F
既然預設是g,表示g應該沒問題.不要自找麻煩了.
02/06 03:49, 17F

02/07 11:31, , 18F
了解 相當感謝PI大~ 我在自己找找相關資料謝謝
02/07 11:31, 18F
文章代碼(AID): #1Ivr_Upy (Fortran)
文章代碼(AID): #1Ivr_Upy (Fortran)