主题:linux下gfortran编译出的程序,写不了文件怎么回事啊
baccle
[专家分:190] 发布于 2011-07-10 21:45:00
遇到了一个很诡异的错误,在linux系统下用fortran编译程序,程序最开始是open语句打开文件这都没有错,但是往文件里写内容却怎么也写不进去。为了验证一下,我把该往文件里写的内容用write(*,*)输出到屏幕上,屏幕上可以输出。为啥往文件里写写不进去呢?
我的程序原来一直在window下用intel编译器编译运行,是没有任何错误的。
有高手大侠麻烦帮帮忙,我都快崩溃了。
回复列表 (共18个回复)
沙发
cgl_lgs [专家分:21040] 发布于 2011-07-10 22:50:00
把Open语句贴出来看看?
板凳
baccle [专家分:190] 发布于 2011-07-11 09:04:00
及其一般的open语句
open(1001,file='jc/ETA.txt',action='write')
还有十几个open语句,都是和这个一样的结构。
大侠咋回事呢,往文件里写东西,死活文件大小就是0,啥也写不进去
3 楼
baccle [专家分:190] 发布于 2011-07-11 09:09:00
还有,我用的是集群,曙光的,提交任务的节点和计算节点不是一个,这个应该没啥影响吧?我以前用过别的集群,提交任务的节点和计算节点也不是一个,没出现过这种问题。
4 楼
cgl_lgs [专家分:21040] 发布于 2011-07-11 09:33:00
集群啊,那如果不用mpirun程序执行正常么?是不是NFS设置的问题?jc目录在NFS上么?
5 楼
baccle [专家分:190] 发布于 2011-07-11 10:26:00
不用mpirun是可以运行出正确结果的。
我在登陆窗口直接输入 ./cR=2 (cR=2是我的程序名),程序中write(*,*)的内容就可以输出到屏幕上;如果编写脚本,提交脚本的话,程序中write(*,*)的内容按理来说应该写到日志中,但日志里什么也没有。
所以我不知道是不是有什么东西(环境变量或者什么的,linux系统我比较白,不大懂)我没有导入到我的工作目录下
6 楼
baccle [专家分:190] 发布于 2011-07-11 11:23:00
或者是gfortran本身打开文件写文件有什么要求吗,比如前面要加上include什么的语句
7 楼
cgl_lgs [专家分:21040] 发布于 2011-07-11 11:32:00
不需要任何include。
8 楼
yeg001 [专家分:14390] 发布于 2011-07-11 11:40:00
如果open一个没有的文件看看会不会被创建? 我觉得会不会文件是写到各自节点的硬盘上了?
我们的集群管理不是使用作业提交的方式, 是自由访问节点, 各个节点都通过网络访问管理点的硬盘. 对作业提交方式的集群没怎么了解.
9 楼
baccle [专家分:190] 发布于 2011-07-11 11:49:00
文件被创建了,但就是写不进去内容
10 楼
baccle [专家分:190] 发布于 2011-07-11 12:07:00
找到部分原因了,但还是没解决!!!
我描述一下问题啊:
要等程序都运行完了才会把所有的结果写进文件,可是我的程序一共循环1000步,每一步都往文件里写东西啊,intel编译器编译出来的程序是没问题的,咋换成gfortran就变成这个样子了呢???
我来回复