Re: [問題] 關於compiler一問

作者: pipidog (如果狗狗飛上天)   2014-01-28 15:44:25
※ 引述《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內建的計
算的效率應該會更好)
作者: Cypresslin (啊哈哈~~)   2014-01-28 16:28:00
作者: rex0707 (我就是我)   2014-01-28 21:32:00
推一個 我也是gfortran & notepad++ & LAPACK/BLAS
作者: lamune (我不知道的事)   2014-01-29 22:17:00
I沒辦法,除非你花錢向intel買win版的
作者: pipidog (如果狗狗飛上天)   2014-01-30 04:50:00
用cygwin或是mingw也沒辦法?
作者: blc (Anemos)   2014-01-30 10:57:00
如果不看價錢的話,我覺得pgi比較好(刻板印象)。
作者: lamune (我不知道的事)   2014-01-30 22:59:00
mingw沒試過 cygwin沒辦法 win下要用模擬OS才有解
作者: pipidog (如果狗狗飛上天)   2014-01-31 02:52:00
那沒辦法了,這樣以流通性來講,gf顯然是王道了!
作者: qscNERO (請叫我達文西)   2014-02-05 16:21:00
超級感謝PI大這麼熱心的回答~因為我實驗室學長姐都沒有學這塊所以我只能自己摸 剛開始是用FTN95不過後來裝了WIN7就怪怪的不太能用又找不太到FTN可以用LAPACK的方法ORZ版主這篇可以M起來嗎 我覺得對新手蠻有幫助的QQ
作者: pipidog (如果狗狗飛上天)   2014-02-06 03:47:00
Lapack最好還是用g編譯吧(這也是他預設的),編好成靜態函式庫之後,你用FTN寫程式的時候就呼叫就好啦.你用FTN編lapack的話,失敗的可能性很高喔.如我所說,f各家語法不完全相同.既然預設是g,表示g應該沒問題.不要自找麻煩了.
作者: qscNERO (請叫我達文西)   2014-02-07 11:31:00
了解 相當感謝PI大~ 我在自己找找相關資料謝謝

Links booklink

Contact Us: admin [ a t ] ucptt.com