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