Fortran Coder

查看: 13330|回复: 6
打印 上一主题 下一主题

[求助] 在windows下和Linux下运行的结果不一样,怎么办?

[复制链接]

3

帖子

1

主题

0

精华

新人

F 币
23 元
贡献
9 点
跳转到指定楼层
楼主
发表于 2014-8-13 20:23:56 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
我在windows下编写的程序,但是在windows下运行是错误的,也没检查出问题,让人检查的时候在Linux下运行了一遍,发现结果又对了。这是为什么啊
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

6

帖子

0

主题

0

精华

版主

F 币
138 元
贡献
62 点
7#
发表于 2014-8-31 17:17:30 | 只看该作者
列出代码与两个操作系统的编译截图。能出来结果,并不代表结果一定是正确的。

100

帖子

0

主题

0

精华

专家

F 币
550 元
贡献
291 点

规矩勋章元老勋章

QQ
6#
发表于 2014-8-14 11:34:30 | 只看该作者
haiyefeng 发表于 2014-8-14 10:53
一个是65一个是77,f77出的结果是连续的,但是65出的结果不连续


你是说CVF6.5 和G77 ?
请理解,65和6.5的区别,也请理解77和G77的区别.

变量未初始化,意思就是:
[Fortran] 纯文本查看 复制代码
real :: a , b
b = a + 1


此时,a 没有值。到底 b 的结果是什么,不同编译器可能就不同。

3

帖子

1

主题

0

精华

新人

F 币
23 元
贡献
9 点
5#
 楼主| 发表于 2014-8-14 10:53:59 | 只看该作者
珊瑚虫 发表于 2014-8-14 10:12
1.检查是否是同一个程序
2.检查输入数据是否相同
如果前两项相同

什么叫该初始化的地方?用的都是CPU。那该怎么办?

3

帖子

1

主题

0

精华

新人

F 币
23 元
贡献
9 点
地板
 楼主| 发表于 2014-8-14 10:53:03 | 只看该作者
百事可乐 发表于 2014-8-13 20:38
不好说 , 计算结果不对,多半不是操作系统差别,而是编译器差别.
检查下是否有变量未初始化一类的吧.
进行 de ...

一个是65一个是77,f77出的结果是连续的,但是65出的结果不连续

135

帖子

15

主题

0

精华

版主

F 币
1159 元
贡献
637 点

爱心勋章管理勋章

板凳
发表于 2014-8-14 10:12:17 | 只看该作者
本帖最后由 珊瑚虫 于 2014-8-14 10:22 编辑

1.检查是否是同一个程序
2.检查输入数据是否相同
如果前两项相同
3. 看看程序是否该初始化的地方没有初始化
4. 另外你用的是CPU 还是GPU, 如果是GPU 结果有差异非常正常,最好把两台机器的ECC都打开。另外CPU好像也有ECC控制,也可能导致计算精度差异

100

帖子

0

主题

0

精华

专家

F 币
550 元
贡献
291 点

规矩勋章元老勋章

QQ
沙发
发表于 2014-8-13 20:38:48 | 只看该作者
不好说 , 计算结果不对,多半不是操作系统差别,而是编译器差别.
检查下是否有变量未初始化一类的吧.
进行 debug 调试可能会有帮助.
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-12-23 05:09

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表