24小时热门版块排行榜    

查看: 2717  |  回复: 13
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

gxqlp

铁杆木虫 (正式写手)

[求助] fortran程序在SSH计算中心上运行的问题!

我用fortran编写的程序,有两个版本,差别只是一些中间量是否输出。在SSH计算中心上运行时,两个版本的计算结果居然有很明显的差别,而在自己的PC上计算,两个版本的结果一样。我懂得不多,SSH上的系统是unix,我的PC是windows系统,在编译时,我也进行了相关的转化。不知道是什么引起这个问题。难道真是变量的输出改变了其值?请高人指点!!!
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

理想很丰满,现实很骨感!努力。。。
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

virtualzx

木虫 (著名写手)

【答案】应助回帖

感谢参与,应助指数 +1
内容已删除
5楼2013-10-20 09:08:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

virtualzx

木虫 (著名写手)

【答案】应助回帖

★ ★
gxqlp: 金币+2, ★★★很有帮助 2013-10-22 08:17:31
引用回帖:
6楼: Originally posted by gxqlp at 2013-10-20 08:41:31
在SSH上我是用ifort来链接和编译的,请问在SSH上怎么查数组越界啊?对这个不太懂,谢谢了哈...

编译时加上-check all再运行试试看
7楼2013-10-21 09:20:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

virtualzx

木虫 (著名写手)

【答案】应助回帖


jjdg: 金币+1, 感谢参与 2013-10-23 00:48:56
引用回帖:
8楼: Originally posted by gxqlp at 2013-10-21 18:09:13
编译通过了,在运行时出现了这样的错误:severe (408): fort: (3): Subscript #3 of the array AXISPH has value 0 which is less than the lower bound of 1 。...

嗯,加了这个选项之后编译器会在程序里加入自动检查错误的代码,有错误自动停止。这个错误是说你axisph这个数组调用下标越界了,说明代码本身有错误,改吧。
9楼2013-10-23 00:27:11
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

virtualzx

木虫 (著名写手)

【答案】应助回帖

★ ★
gxqlp: 金币+2, ★★★很有帮助, 给的建议很有用,谢谢 2013-11-01 21:03:14
引用回帖:
10楼: Originally posted by gxqlp at 2013-10-31 17:50:16
我试了一下,将出错的数组的维数改好,再计算时,没有write语句输出的版本(1)算出来的结果跟之前有输出语句的版本(2)结果一样。现在正在试着把版本2中的数组也修改后,看看会有什么差别。我有个疑问,就是我wr ...

数组越界后果是很难以预计的。这个数组之外的内存可能是任何变量或者代码或者其他东西,有可能你恰好写到一块没有用的内存,或者某个之后没有再使用的变量,就什么也不会发生,也可能直接segfault,更常见的是当时没事儿,但是过后很奇怪的地方会segfault。而且每次改代码或者改编译器或者改编译选项,内存的布局都不一样了,运行结果都可能会变
11楼2013-11-01 09:57:26
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

virtualzx

木虫 (著名写手)

引用回帖:
12楼: Originally posted by gxqlp at 2013-11-01 08:05:00
也就是说数组越界会引起意料之外的结果?那在windows系统下运行这两个版本的程序时,结果算出来是一样的,也就是说我在windons系统下编译时,没查找出数组越界的问题,那系统默认的出来方式跟SSH上是不一样的?...

是的,数组越界可能会产生无法预料的结果。在不同的机器上,不同的操作系统,不同版本的编译器运行的结果都有可能不同(也都有可能相同)。
13楼2013-11-01 23:46:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 gxqlp 的主题更新
信息提示
请填处理意见