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