我被硬特fortran编译器坑的事迹 - 悲催的科学匠人 - 冷水's blog

我被硬特fortran编译器坑的事迹

冷水 posted @ 2014年12月07日 14:58 in fortran , 1833 阅读

最早先,gfortran下没有问题的代码在硬特编译后出现segment fault。结果发现数组整体赋值出了问题,比如

w=w1

只要数组w和w1特别大,就fault了。只好遇到比较大的数组,就把用循环。

DO k=0,kb
  w(:,:,:,k)=w1(:,:,:,k)
ENDDO

 

最近又被坑了一次,而且完全与上面这个经验相反。

id=1
DO n=1,num
  ! get i,j,k
  ...
  DO l=ivs,ivt
    buff(id)=w(l,i,j,k)
    id = id +1
  ENDDO
ENDDO

这个片段是将w中的元素按照给定的顺序填充到一维数组buff中。

按照debug模式编译没有问题。但是优化编译后出错。最后改为

id=1
ncmp = ivt-ivs+1
DO n=1,num
  ! get i,j,k
  ...
  buff(id:id+ncmp-1)=w1(ivs:ivt,i,j,k)
  id = id + ncmp

ENDDO
就没有问题了。
原因没法知道,只能是硬特fortran的优化有问题。
 
 
上述问题都是在11.x版本上出现的。第二个问题在后来版本的编译器上没有了。我想这看来就是硬特家以前一直有非商业的免费版fortran编译器的原因吧。不过听说最近没有了,看来不再需要小白鼠了。
 
现在gfortran的性能不比ifort差多少,但是因为天河-1A上的标准配置就是ifort 11.1,所以不得不跳这些坑了。
 
 
 
  • 无匹配
  • 无匹配
Avatar_small
XE88 APK FREE Downlo 说:
2021年8月28日 07:52

Thanks for writing such a good article, I stumbled onto your blog and read a few post. I like your style of writing...

Avatar_small
Satta king 说:
2021年9月12日 06:10

During this website, you will see this shape, i highly recommend you learn this review.

Avatar_small
ssali 说:
2022年5月22日 00:35

Great stuff. i am going to bookmark it, if you are looking for lyca beltegoed, lebara beltegoed, lyca bundel xs, samsung a52, samsung a51, samsung a72, iphone 13 pro max in Netherlands, get in touch with us.


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter
Host by is-Programmer.com | Power by Chito 1.3.3 beta | © 2007 LinuxGem | Design by Matthew "Agent Spork" McGee