Fortran Coder

标题: 在windows下和Linux下运行的结果不一样,怎么办? [打印本页]

作者: haiyefeng    时间: 2014-8-13 20:23
标题: 在windows下和Linux下运行的结果不一样,怎么办?
我在windows下编写的程序,但是在windows下运行是错误的,也没检查出问题,让人检查的时候在Linux下运行了一遍,发现结果又对了。这是为什么啊

作者: 百事可乐    时间: 2014-8-13 20:38
不好说 , 计算结果不对,多半不是操作系统差别,而是编译器差别.
检查下是否有变量未初始化一类的吧.
进行 debug 调试可能会有帮助.
作者: 珊瑚虫    时间: 2014-8-14 10:12
本帖最后由 珊瑚虫 于 2014-8-14 10:22 编辑

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


作者: haiyefeng    时间: 2014-8-14 10:53
百事可乐 发表于 2014-8-13 20:38
不好说 , 计算结果不对,多半不是操作系统差别,而是编译器差别.
检查下是否有变量未初始化一类的吧.
进行 de ...

一个是65一个是77,f77出的结果是连续的,但是65出的结果不连续
作者: haiyefeng    时间: 2014-8-14 10:53
珊瑚虫 发表于 2014-8-14 10:12
1.检查是否是同一个程序
2.检查输入数据是否相同
如果前两项相同

什么叫该初始化的地方?用的都是CPU。那该怎么办?
作者: 百事可乐    时间: 2014-8-14 11:34
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 的结果是什么,不同编译器可能就不同。
作者: 破烂弟    时间: 2014-8-31 17:17
列出代码与两个操作系统的编译截图。能出来结果,并不代表结果一定是正确的。




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2