计算化学公社

 找回密码 Forget password
 注册 Register
Views: 3284|回复 Reply: 9
打印 Print 上一主题 Last thread 下一主题 Next thread

[Fortran] 同一个程序在本地和集群运行结果不同

[复制链接 Copy URL]

257

帖子

4

威望

4967

eV
积分
5304

Level 6 (一方通行)

跳转到指定楼层 Go to specific reply
楼主
一个MPI fortran测试程序如下:
  1. program rrr
  2.         use mpi
  3.         implicit real*8(a-h,o-z)
  4.         integer :: world_size, world_rank, mpi_ierr

  5.         call mpi_init(mpi_ierr)
  6.         call mpi_comm_size(mpi_comm_world, world_size, mpi_ierr)
  7.         call mpi_comm_rank(mpi_comm_world, world_rank, mpi_ierr)

  8.         if(world_rank==0)then
  9.                 write(*,*) "input d"
  10.                 read(*,*) d
  11.                 do i=1,world_size-1
  12.                         call mpi_send(d, 1, mpi_double, i, i, mpi_comm_world, mpi_ierr)
  13.                 end do
  14.         end if
  15.         call mpi_barrier(mpi_comm_world,mpi_ierr)
  16.         if(world_rank/=0)then
  17.                 call mpi_recv(d, 1, mpi_double, 0, world_rank, mpi_comm_world, status, mpi_ierr)
  18.         end if

  19.         write(*,*) "d=",d, "id=", world_rank

  20.         call mpi_finalize(mpi_ierr)



  21. end program
复制代码
在我本地的CentOS 7上运行没有任何问题:
  1. [root@localhost:~/wbh/test/mpi#]mpiifort read.f90
  2. [root@localhost:~/wbh/test/mpi#]mpirun -np 4 ./a.out
  3. input d
  4. 4
  5. d=   4.00000000000000      id=           0
  6. d=   4.00000000000000      id=           1
  7. d=   4.00000000000000      id=           2
  8. d=   4.00000000000000      id=           3
复制代码
但是移到集群上编译运行会报错:
  1. [wbh@cu10 mpi]$ mpiifort read.f90
  2. [wbh@cu10 mpi]$ mpirun -np 4 ./a.out
  3. input d
  4. input d
  5. forrtl: severe (24): end-of-file during read, unit -4, file /proc/12535/fd/0
  6. Image              PC                Routine            Line        Source            
  7. a.out              0000000000426BF4  Unknown               Unknown  Unknown
  8. a.out              0000000000407AD0  Unknown               Unknown  Unknown
  9. a.out              0000000000402A27  Unknown               Unknown  Unknown
  10. a.out              000000000040291E  Unknown               Unknown  Unknown
  11. libc.so.6          0000003FEA821B45  Unknown               Unknown  Unknown
  12. a.out              0000000000402819  Unknown               Unknown  Unknown
  13. -------------------------------------------------------
  14. Primary job  terminated normally, but 1 process returned
  15. a non-zero exit code.. Per user-direction, the job has been aborted.
  16. -------------------------------------------------------
  17. forrtl: severe (24): end-of-file during read, unit -4, file /proc/12534/fd/0
  18. Image              PC                Routine            Line        Source            
  19. a.out              0000000000426BF4  Unknown               Unknown  Unknown
  20. a.out              0000000000407AD0  Unknown               Unknown  Unknown
  21. a.out              0000000000402A27  Unknown               Unknown  Unknown
  22. a.out              000000000040291E  Unknown               Unknown  Unknown
  23. libc.so.6          0000003FEA821B45  Unknown               Unknown  Unknown
  24. a.out              0000000000402819  Unknown               Unknown  Unknown
  25. --------------------------------------------------------------------------
  26. mpirun detected that one or more processes exited with non-zero status, thus causing
  27. the job to be terminated. The first process to do so was:

  28.   Process name: [[19269,1],1]
  29.   Exit code:    24
  30. --------------------------------------------------------------------------

复制代码
而且没有看懂也没有搜到这个报错是什么意思。这个要怎么解决呢? 我其实有怀疑是编译器版本不同,但版本不至于导致程序跑不起来吧?(集群上的是ifort 15.0.3)
贫困U 退学与疯子工程学院

831

帖子

1

威望

7185

eV
积分
8036

Level 6 (一方通行)

2#
发表于 Post on 2020-6-25 20:53:32 | 只看该作者 Only view this author
本帖最后由 hebrewsnabla 于 2020-6-25 20:55 编辑

在集群上运行 which mpirun 看看,是否和which mpiifort的结果在同一个路径

评分 Rate

参与人数
Participants 1
eV +5 收起 理由
Reason
wxhwbh + 5 正解

查看全部评分 View all ratings

257

帖子

4

威望

4967

eV
积分
5304

Level 6 (一方通行)

3#
 楼主 Author| 发表于 Post on 2020-6-25 21:50:44 | 只看该作者 Only view this author
hebrewsnabla 发表于 2020-6-25 20:53
在集群上运行 which mpirun 看看,是否和which mpiifort的结果在同一个路径

还真的不在一个路径:
  1. [wbh@mu01 ~]$ which mpirun
  2. ~/soft/openmpi216/bin/mpirun
  3. [wbh@mu01 ~]$ which mpiifort
  4. /opt/intel/impi/5.0.3.048/intel64/bin/mpiifort
复制代码

mpirun 对应的openmpi是我装ORCA时装的。重新连接到intel的mpirun就没问题了。谢谢你的提醒。
不过这样可能ORCA又跑不了了...
贫困U 退学与疯子工程学院

831

帖子

1

威望

7185

eV
积分
8036

Level 6 (一方通行)

4#
发表于 Post on 2020-6-25 22:01:24 | 只看该作者 Only view this author
wxhwbh 发表于 2020-6-25 21:50
还真的不在一个路径:

mpirun 对应的openmpi是我装ORCA时装的。重新连接到intel的mpirun就没问题了。 ...

并存肯定是不行的。只能把一个写在bashrc里,另一个每次提交时用脚本激活 -- 看哪个常用了

2301

帖子

1

威望

5473

eV
积分
7794

Level 6 (一方通行)

5#
发表于 Post on 2020-6-25 22:20:39 | 只看该作者 Only view this author
hebrewsnabla 发表于 2020-6-25 22:01
并存肯定是不行的。只能把一个写在bashrc里,另一个每次提交时用脚本激活 -- 看哪个常用了

可并存,毫无影响。
High-Performance Computing for You
为您专属定制的高性能计算解决方案

更多讯息,请访问:
https://labitc.top
http://tophpc.top:8080
电邮: ask@hpc4you.top

831

帖子

1

威望

7185

eV
积分
8036

Level 6 (一方通行)

6#
发表于 Post on 2020-6-25 22:30:58 | 只看该作者 Only view this author
abin 发表于 2020-6-25 22:20
可并存,毫无影响。

讨教一下怎么并存
两个mpirun同名,怎么控制调用某一个呢

2301

帖子

1

威望

5473

eV
积分
7794

Level 6 (一方通行)

7#
发表于 Post on 2020-6-25 22:52:37 | 只看该作者 Only view this author
hebrewsnabla 发表于 2020-6-25 22:30
讨教一下怎么并存
两个mpirun同名,怎么控制调用某一个呢

module
Environment module
其他google
High-Performance Computing for You
为您专属定制的高性能计算解决方案

更多讯息,请访问:
https://labitc.top
http://tophpc.top:8080
电邮: ask@hpc4you.top

831

帖子

1

威望

7185

eV
积分
8036

Level 6 (一方通行)

8#
发表于 Post on 2020-6-25 22:57:36 | 只看该作者 Only view this author
abin 发表于 2020-6-25 22:52
module
Environment module
其他google

啊这样当然可以相当于动态修改环境变量了。 我指的是没有附加操作情形下的并存。

361

帖子

0

威望

4228

eV
积分
4589

Level 6 (一方通行)

9#
发表于 Post on 2020-6-26 11:04:18 | 只看该作者 Only view this author
hebrewsnabla 发表于 2020-6-25 22:57
啊这样当然可以相当于动态修改环境变量了。 我指的是没有附加操作情形下的并存。

不用module的话就不要把环境变量写在~/.bashrc里面,而是封装在一个简单的脚本里面,用哪个程序调用对应的脚本即可。或者一个写在~/.bashrc里面,一个写在脚本里面。除此之外似乎没有别的办法。要不然就每次直接按绝对路径调用。

831

帖子

1

威望

7185

eV
积分
8036

Level 6 (一方通行)

10#
发表于 Post on 2020-6-26 12:55:47 | 只看该作者 Only view this author
pwzhou 发表于 2020-6-26 11:04
不用module的话就不要把环境变量写在~/.bashrc里面,而是封装在一个简单的脚本里面,用哪个程序调用对应 ...

是的,我在4L说的就是这个意思。

对于mpi,绝对路径是不行的,因为一些库文件也有同名的。

本版积分规则 Credits rule

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2024-11-23 23:45 , Processed in 0.187353 second(s), 22 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list