m*****g 发帖数: 278 | 1 刚刚接触fortran,不知道哪个debug软件比较好用呢,比如想设置断点,实时观察变量
赋值,或者可以一步一步运行程序。linux或者windows都可以。
谢谢大家! |
l*******G 发帖数: 1191 | 2 totalview for Linux
Visual fortran for windows |
t*****n 发帖数: 4908 | 3 以前一直用compaq fortran6.5。后来好像intel fortran已经支持visual studo2003。
不过liences不便宜。
还有就是gdb吧。
你如果是维护已有的fortran代码,可以理解。如果写新的代码,建议放弃fortran吧。
【在 m*****g 的大作中提到】 : 刚刚接触fortran,不知道哪个debug软件比较好用呢,比如想设置断点,实时观察变量 : 赋值,或者可以一步一步运行程序。linux或者windows都可以。 : 谢谢大家!
|
m*******l 发帖数: 12782 | 4 fortran has its advantages
【在 t*****n 的大作中提到】 : 以前一直用compaq fortran6.5。后来好像intel fortran已经支持visual studo2003。 : 不过liences不便宜。 : 还有就是gdb吧。 : 你如果是维护已有的fortran代码,可以理解。如果写新的代码,建议放弃fortran吧。
|
t*****n 发帖数: 4908 | 5 请展开来说说
【在 m*******l 的大作中提到】 : fortran has its advantages
|
S**I 发帖数: 15689 | 6 不是说科学计算都还是FORTRAN的天下吗?
【在 t*****n 的大作中提到】 : 请展开来说说
|
y**b 发帖数: 10166 | 7 当然大有人用,还有些老代码、老库也不能丢啊。
但是新开发的大型代码用Fotran的恐怕就少了。
【在 S**I 的大作中提到】 : 不是说科学计算都还是FORTRAN的天下吗?
|
L***n 发帖数: 6727 | 8 fast, everything is passed by reference by default
【在 t*****n 的大作中提到】 : 请展开来说说
|
l*******G 发帖数: 1191 | 9 In the 60'th 70'th computers were really limited in capability, so the
scientists took great great efforts to optimize fortran compiler in order to
solve big problems. Those efforts made fortran far more compact, close to
computer soul in terms of number crunching。 now adays, good languages
appear every day but far less optimized in performance. Fortran is very
portable.
That is why fortran is still king in scientific computing. Fancy objects are
cool, but do not get to the answer quickly enough. If you use python or
java, 10 years later, the code may not run at all. Yet with fortran, no
worries in next 50years。 |
t*****n 发帖数: 4908 | 10 30年前可能是这样。现在我不觉着。fortran能干的别的都能。别的能干,fortran不一
定行。
【在 S**I 的大作中提到】 : 不是说科学计算都还是FORTRAN的天下吗?
|
|
|
t*****n 发帖数: 4908 | 11 估计能用的极少了。好像有个arpack的是fortran的。但也有c++ wrapper。
市面上纯粹fortran的库、没c/c++ wrapper的,我真没见过。估计是我太孤陋寡闻 。
那位高说说几个,我学习学习。
【在 y**b 的大作中提到】 : 当然大有人用,还有些老代码、老库也不能丢啊。 : 但是新开发的大型代码用Fotran的恐怕就少了。
|
L***n 发帖数: 6727 | 12 那倒是,这几十年投入在c/c++ compiler的资源太多了,fortran根本
不能比,从compiler优化的角度看,fortran也是差距越来越大的
【在 t*****n 的大作中提到】 : 30年前可能是这样。现在我不觉着。fortran能干的别的都能。别的能干,fortran不一 : 定行。
|
t*****n 发帖数: 4908 | 13 说到速度fortran没比c快吧。两者差不多。要快上汇编啊。据说gotoblas里面就有手工
汇编代码。小日本真牛啊,要我每天码这种代码要吐血了。
c不是可以转递指针吗?
【在 L***n 的大作中提到】 : fast, everything is passed by reference by default
|
t*****n 发帖数: 4908 | 14 其实是这样的:如果你是为了算个公式,用什么都差不多,什么fortran,python,
java。反正都可以得个结果。写完了就扔了。文章也发了,学位也拿到了。其实用
matlab更好,库多,有图形。速度都不是问题。我还用mathematica和mathcad写过程序
,都很好用。
如果要做个系统,或者是商业软件,那要好好考虑。用不支持面向对象的语言太辛苦,
可维护行非常差。我有过三年维护fortran代码的经历,说的是实话。fotran2003不知
道发展到什么程度了。fortran90/95应该还缺乏很多面向对象的基本特征。
其次要考虑到是语言的速度。如果是计算密集型的,建议用C/C++。
to
are
【在 l*******G 的大作中提到】 : In the 60'th 70'th computers were really limited in capability, so the : scientists took great great efforts to optimize fortran compiler in order to : solve big problems. Those efforts made fortran far more compact, close to : computer soul in terms of number crunching。 now adays, good languages : appear every day but far less optimized in performance. Fortran is very : portable. : That is why fortran is still king in scientific computing. Fancy objects are : cool, but do not get to the answer quickly enough. If you use python or : java, 10 years later, the code may not run at all. Yet with fortran, no : worries in next 50years。
|
t****t 发帖数: 6806 | 15 不是说fortran就比C快, 而是fortran这语言本身的限制比较多, 因此编译器比较容易
优化甚至进一步作并行处理. 不灵活当然就可以快.
现在很多特性被C借去了, 比如说C99的restricted修饰词就是从fortran借来的, 因为
fortran缺省就是restricted. 这是fortran高性能的来源, 而不是上面有人说的什么所
有调用都是reference, 跟这个没关系. 两个语言的性能差的确是在缩小. 但是问题是,
以前的计算程序都是fortran的, 数量太过庞大, 不可能全部转换成C重写, 何况C本身
没有速度优势.
另外现在计算机比以前复杂多了, 一般经验的程序员写汇编几乎不可能拼过编译器. 这
条路很难走通了. 所以作计算仍然是fortran第一, C靠后站.
【在 t*****n 的大作中提到】 : 说到速度fortran没比c快吧。两者差不多。要快上汇编啊。据说gotoblas里面就有手工 : 汇编代码。小日本真牛啊,要我每天码这种代码要吐血了。 : c不是可以转递指针吗?
|
L***n 发帖数: 6727 | 16 什么叫fortran第一啊,真是无知者无谓啊,近一点的科学计算包有什么
是fortran写的啊? 计算流体力学,有限元,数值偏微分方程你随便找
一般程序员谁去写汇编,当然是用现成的包来调用,汇编自然有Goto这样的牛人写好
包给你用
【在 t****t 的大作中提到】 : 不是说fortran就比C快, 而是fortran这语言本身的限制比较多, 因此编译器比较容易 : 优化甚至进一步作并行处理. 不灵活当然就可以快. : 现在很多特性被C借去了, 比如说C99的restricted修饰词就是从fortran借来的, 因为 : fortran缺省就是restricted. 这是fortran高性能的来源, 而不是上面有人说的什么所 : 有调用都是reference, 跟这个没关系. 两个语言的性能差的确是在缩小. 但是问题是, : 以前的计算程序都是fortran的, 数量太过庞大, 不可能全部转换成C重写, 何况C本身 : 没有速度优势. : 另外现在计算机比以前复杂多了, 一般经验的程序员写汇编几乎不可能拼过编译器. 这 : 条路很难走通了. 所以作计算仍然是fortran第一, C靠后站.
|
L***n 发帖数: 6727 | 17 gotoblas2内核全是汇编,外面加个fortran和C的wrapper,再包括一个netlib的
reference,那个倒是fortran写的古董,Goto写了篇paper讲他的思路,主要是避免
TLB miss,还有cache miss但是相对来说他对TLB更重视一点,结合他的文章读读他
的汇编代码挺有帮助的,每个函数都不是很长,不过优化还是在算法上搞是正路
【在 t*****n 的大作中提到】 : 说到速度fortran没比c快吧。两者差不多。要快上汇编啊。据说gotoblas里面就有手工 : 汇编代码。小日本真牛啊,要我每天码这种代码要吐血了。 : c不是可以转递指针吗?
|
t****t 发帖数: 6806 | 18 counting old code, of course. for new code surely fortran is diminishing,
but still fortran is not old enough.
【在 L***n 的大作中提到】 : 什么叫fortran第一啊,真是无知者无谓啊,近一点的科学计算包有什么 : 是fortran写的啊? 计算流体力学,有限元,数值偏微分方程你随便找 : : 一般程序员谁去写汇编,当然是用现成的包来调用,汇编自然有Goto这样的牛人写好 : 包给你用
|
y**b 发帖数: 10166 | 19 有些大型专业程序,都是几十年前慢慢发展过来的,比如大气、海洋、地学模型,
都还是fortran,也不可能转到c++。有些02年开始开发的大型模型框架,还特意
选用fortran,估计也是从性能出发。当然耦合这些模型的时候就痛苦了。前段
时间准备耦合一个固体力学的小型模型,那个group的研究做得不错,可是fortran
写的代码,光主程序就一股脑3000多行。
另外还有一些先知,在还没有STL的时候就用C++开发大型模型框架,底层的东西
都自己写一遍,够神的吧,这种模型现在扩展和耦合起来比fortran方便10倍都
不止。好的C++代码能轻松提供非常精悍的封装,在模型耦合方面的效率高很多。
【在 L***n 的大作中提到】 : 什么叫fortran第一啊,真是无知者无谓啊,近一点的科学计算包有什么 : 是fortran写的啊? 计算流体力学,有限元,数值偏微分方程你随便找 : : 一般程序员谁去写汇编,当然是用现成的包来调用,汇编自然有Goto这样的牛人写好 : 包给你用
|
L***n 发帖数: 6727 | 20 恩,你是说trilinos么? 想不起来其他山头大的c++framework了,petsc山头也大不过
是C的,framework基本就这两大山头吧,底层调用blas, umfpack之类的就行了干嘛重
新开发一遍啊,
【在 y**b 的大作中提到】 : 有些大型专业程序,都是几十年前慢慢发展过来的,比如大气、海洋、地学模型, : 都还是fortran,也不可能转到c++。有些02年开始开发的大型模型框架,还特意 : 选用fortran,估计也是从性能出发。当然耦合这些模型的时候就痛苦了。前段 : 时间准备耦合一个固体力学的小型模型,那个group的研究做得不错,可是fortran : 写的代码,光主程序就一股脑3000多行。 : 另外还有一些先知,在还没有STL的时候就用C++开发大型模型框架,底层的东西 : 都自己写一遍,够神的吧,这种模型现在扩展和耦合起来比fortran方便10倍都 : 不止。好的C++代码能轻松提供非常精悍的封装,在模型耦合方面的效率高很多。
|
|
|
y**b 发帖数: 10166 | 21 你说的是底层的框架,我说的是些专业领域(应用层)的框架,比如地学的ESMF,
海洋学的ROMS, 有限元的TAHOE。
扯远点,我也想哪天搞个离散元的框架,再跟FEM耦合,再跟CFD耦合,不过个
人的时间精力能力都不允许,感觉这种东西只能是较大的专门的research group
一起干好多年才有戏,也不知这类group怎么搭建起来的。一般都是国家实验室
或著名的民间研究机构才搞得出这类东西,小的机构很难。
【在 L***n 的大作中提到】 : 恩,你是说trilinos么? 想不起来其他山头大的c++framework了,petsc山头也大不过 : 是C的,framework基本就这两大山头吧,底层调用blas, umfpack之类的就行了干嘛重 : 新开发一遍啊,
|
y**b 发帖数: 10166 | 22 现在似乎流行python来写计算代码?我见过几个人,写得还很大,很推崇。
【在 t*****n 的大作中提到】 : 30年前可能是这样。现在我不觉着。fortran能干的别的都能。别的能干,fortran不一 : 定行。
|
L***n 发帖数: 6727 | 23 一般的框架都写好了,现在写有点晚了,嘿嘿,不过把自己这块的算法写好写成子程序
让别人用总可以的。我比较喜欢像umfpack,superLU, metis这样的,不fancy,比较实
用,这几年比较fancy的一个东西是用expression template, template
metaprogramming来优化numerical linear algebra,好几个库号称干这个的,我持怀疑
态度。
【在 y**b 的大作中提到】 : 你说的是底层的框架,我说的是些专业领域(应用层)的框架,比如地学的ESMF, : 海洋学的ROMS, 有限元的TAHOE。 : 扯远点,我也想哪天搞个离散元的框架,再跟FEM耦合,再跟CFD耦合,不过个 : 人的时间精力能力都不允许,感觉这种东西只能是较大的专门的research group : 一起干好多年才有戏,也不知这类group怎么搭建起来的。一般都是国家实验室 : 或著名的民间研究机构才搞得出这类东西,小的机构很难。
|
t*****n 发帖数: 4908 | 24 牛人出现了。。。
【在 L***n 的大作中提到】 : gotoblas2内核全是汇编,外面加个fortran和C的wrapper,再包括一个netlib的 : reference,那个倒是fortran写的古董,Goto写了篇paper讲他的思路,主要是避免 : TLB miss,还有cache miss但是相对来说他对TLB更重视一点,结合他的文章读读他 : 的汇编代码挺有帮助的,每个函数都不是很长,不过优化还是在算法上搞是正路
|
t*****n 发帖数: 4908 | 25
只能说这个group理论研究估计还行,写程序是外行。估计项目完了代码就废了。即使
开源也不会有人捡起来。
好奇问问有无版本控制、regression test、bug tracking?
【在 y**b 的大作中提到】 : 有些大型专业程序,都是几十年前慢慢发展过来的,比如大气、海洋、地学模型, : 都还是fortran,也不可能转到c++。有些02年开始开发的大型模型框架,还特意 : 选用fortran,估计也是从性能出发。当然耦合这些模型的时候就痛苦了。前段 : 时间准备耦合一个固体力学的小型模型,那个group的研究做得不错,可是fortran : 写的代码,光主程序就一股脑3000多行。 : 另外还有一些先知,在还没有STL的时候就用C++开发大型模型框架,底层的东西 : 都自己写一遍,够神的吧,这种模型现在扩展和耦合起来比fortran方便10倍都 : 不止。好的C++代码能轻松提供非常精悍的封装,在模型耦合方面的效率高很多。
|
t*****n 发帖数: 4908 | 26 python的性能好像一直是问题。估计到后期要对瓶颈的模块进行优化。此外还要上个
boost python之类的。这么折腾还不如从头开始用c++了。
【在 y**b 的大作中提到】 : 现在似乎流行python来写计算代码?我见过几个人,写得还很大,很推崇。
|
t*****n 发帖数: 4908 | 27 template metaprogrammingN年前挺流行的。我印象中是用它可以让c++风格的数组和c
的差不多快。但是怎么样也干不过gotoblas。用blas的代码,看着丑陋,但是实用。再
说数组这种很基本的东东做的再fancy也不改变程序构架。不如多花点时间研究研究设
计模式之类的。
怀疑
【在 L***n 的大作中提到】 : 一般的框架都写好了,现在写有点晚了,嘿嘿,不过把自己这块的算法写好写成子程序 : 让别人用总可以的。我比较喜欢像umfpack,superLU, metis这样的,不fancy,比较实 : 用,这几年比较fancy的一个东西是用expression template, template : metaprogramming来优化numerical linear algebra,好几个库号称干这个的,我持怀疑 : 态度。
|
L***n 发帖数: 6727 | 28 牛什么,我就一传声筒而已
【在 t*****n 的大作中提到】 : 牛人出现了。。。
|
L***n 发帖数: 6727 | 29 概念98年就有了,成熟的写到库里这几年才逐渐出现,我知道的有eigen3, mtl4
还有blaze1.0,还有几个小的,都没人维护了
Edit: 错了一点,其实ublas和blitz++应用ET更早,不过这俩一向在各种benchmark
里以路人甲的身份出现。主要起陪衬被吹嘘的各路主角的作用,近一点的这几个库
优化的好一些了。eigen在自己的主页上吹嘘AxA^T能干过mkl,不过搞计算的还没
多少人理他们,现在还属于在自娱自乐的阶段。
c
【在 t*****n 的大作中提到】 : template metaprogrammingN年前挺流行的。我印象中是用它可以让c++风格的数组和c : 的差不多快。但是怎么样也干不过gotoblas。用blas的代码,看着丑陋,但是实用。再 : 说数组这种很基本的东东做的再fancy也不改变程序构架。不如多花点时间研究研究设 : 计模式之类的。 : : 怀疑
|
m*****g 发帖数: 278 | |
|
|
m*****g 发帖数: 278 | 31 哈,谢谢,我去试试
【在 l*******G 的大作中提到】 : totalview for Linux : Visual fortran for windows
|
m*****g 发帖数: 278 | 32 谢谢回复
就是维护已有的fortran代码,如果是编新的我更希望用c++呢。
这些你提到的软件是收费的么?
【在 t*****n 的大作中提到】 : 以前一直用compaq fortran6.5。后来好像intel fortran已经支持visual studo2003。 : 不过liences不便宜。 : 还有就是gdb吧。 : 你如果是维护已有的fortran代码,可以理解。如果写新的代码,建议放弃fortran吧。
|
G*****7 发帖数: 1759 | 33
怀疑
quality varies. boost ublas amasses fanciful template gimmicks but is
sloooow. eigen on the other hand is more performant, because a lot attention
was given to vectorization. however it is still not perfect for the lack of
the kind of openmp multi-threading that an optimized library such as intel
mkl would provide.
【在 L***n 的大作中提到】 : 一般的框架都写好了,现在写有点晚了,嘿嘿,不过把自己这块的算法写好写成子程序 : 让别人用总可以的。我比较喜欢像umfpack,superLU, metis这样的,不fancy,比较实 : 用,这几年比较fancy的一个东西是用expression template, template : metaprogramming来优化numerical linear algebra,好几个库号称干这个的,我持怀疑 : 态度。
|
G*****7 发帖数: 1759 | 34
*blitz++
hardly surprising. they lack sse vectorization.
read the small print. it's single-threaded iirc.
and i guess that's why hi-perf computing is not picking up eigen and why
eigen 311 incorperated an mkl back-end.
not quite. eigen is still popular and suits a huge niche: if you wanna write
expressive linear algebra code with matlab-like syntax and get decent
performance, few is better than eigen. some might find blas-wrapper such as
Armadillo more compelling, performance-wise.
【在 L***n 的大作中提到】 : 概念98年就有了,成熟的写到库里这几年才逐渐出现,我知道的有eigen3, mtl4 : 还有blaze1.0,还有几个小的,都没人维护了 : Edit: 错了一点,其实ublas和blitz++应用ET更早,不过这俩一向在各种benchmark : 里以路人甲的身份出现。主要起陪衬被吹嘘的各路主角的作用,近一点的这几个库 : 优化的好一些了。eigen在自己的主页上吹嘘AxA^T能干过mkl,不过搞计算的还没 : 多少人理他们,现在还属于在自娱自乐的阶段。 : : c
|
G*****7 发帖数: 1759 | 35
c
wrong. expression templates enables lazy evaluation, which in turn collapses
long expressions and eliminates excessive a-/deallocations due to
temporaries.
be surprised. http://eigen.tuxfamily.org/index.php?title=Benchmark
blas is too rigid, as it forces you to use a few simple expressions (saxpy,
sgemm) as the building block for larger expressions. you have to break down
large expressions and introduce a bunch of temporaries.
the natural, operator-based syntax such as *, + is more 实用.
【在 t*****n 的大作中提到】 : template metaprogrammingN年前挺流行的。我印象中是用它可以让c++风格的数组和c : 的差不多快。但是怎么样也干不过gotoblas。用blas的代码,看着丑陋,但是实用。再 : 说数组这种很基本的东东做的再fancy也不改变程序构架。不如多花点时间研究研究设 : 计模式之类的。 : : 怀疑
|
t*****n 发帖数: 4908 | 36 compaq fortran和intel fortran都是商业软件,很贵。
f77和gdb都是免费的。
【在 m*****g 的大作中提到】 : 谢谢回复 : 就是维护已有的fortran代码,如果是编新的我更希望用c++呢。 : 这些你提到的软件是收费的么?
|
L***n 发帖数: 6727 | 37 Yes, that's one problem, of course they can leave the vectorization to the
compiler but it's not comparable to the hand coded vectorization.
It would still be impressive even if they only beat mkl in the single
threaded case, on the other hand, I'm not sure how real these benchmarks are.
write
I agree, actually I myself was interested in Eigen because I would like to
use it in my project but finally end up with my own much simpler code. The
main reason is in many cases I would like to define my own operators based
on different models and ET makes it unnecessarily complicated. And the
optimization it brings is marginal |
w*********u 发帖数: 392 | 38 不会吧,这还有人用啊
【在 m*****g 的大作中提到】 : 刚刚接触fortran,不知道哪个debug软件比较好用呢,比如想设置断点,实时观察变量 : 赋值,或者可以一步一步运行程序。linux或者windows都可以。 : 谢谢大家!
|
rk 发帖数: 125 | 39 当然有人用!
【在 w*********u 的大作中提到】 : 不会吧,这还有人用啊
|