0

我在两个不同的集群中使用完全相同的代码。一个集群使用 mpi intel fortran 运行,另一个集群使用 Cray Fortran 运行。前者是旧集群,后者是我们学校最新的集群。该实现在旧集群 (MPI INTEL FORTRAN) 上运行良好,但该实现在 Cray Fortran 集群中不起作用。给出错误的输出子程序部分是这样的:

    Subroutine Output
use Variables
implicit none

! Formating section

398   format(6(e22.15,2x))
399   format(7(e22.15,2x))
39   format(5(e22.15,2x))

!!! Computing Cp for postprocessing purposes
Cp = gamma*R_gas/(gamma-1)

! Creating the Global mesh
If(MyRank ==0) Call GridGlobal
    If(MyRank==0) then
    open(330, file = 'Primitive_Variables.dat')
    write(330,*) 'TITLE = "Primitive Variables Contours"'
    write(330,*) 'VARIABLES = "X"'
    write(330,*) '"Y"'
    write(330,*) '"U Velocity"'
    write(330,*) '"V Velocity"'
    write(330,*) '"Density"'
    write(330,*) '"Temperature"'

    write(330,*)'  zone T = "zone1", I = ',ImaxGlobal,' J= ',JmaxGlobal,' F = point'

    do j = 1,JmaxGlobal
      do i = 1,ImaxGlobal
        write(330,398) xGlobal(i,j),yGlobal(i,j),u_oldGlobal(i,j),v_oldGlobal(i,j),r_oldGlobal(i,j),T_oldGlobal(i,j)
      enddo
    enddo
    close(330)
    End If

当我运行我的实现时,我得到的错误如下:

Application 135822 exit codes: 134
Application 135822 exit signals: Killed
Application 135822 resources: utime ~185s, stime ~1s, Rss ~1444696, inblocks ~1023410, outblocks ~5529676

pwd

setenv OMP_NUM_THREADS 1

if ( -e IDS ) then
aprun -j 1 -n 32 ./IDS

sys-38 : UNRECOVERABLE error on system request
  Function not implemented

Encountered during a CLOSE of unit 330
Fortran unit 330 is not connected
_pmiu_daemon(SIGCHLD): [NID 00018] [c0-0c0s4n2] [Wed Aug  2 16:57:32 2017] PE RANK 0 exit signal Aborted
[NID 00018] 2017-08-02 17:53:44 Apid 135820: initiated application termination
else

exit

有了这个,输出子程序停止打印结果,我的计算也没用了。

提前致谢

记录:这只发生在大阵列上。大我的意思是大于 2001x2001。我知道这一点都不大,但是对于较小的数组,错误不会弹出。子程序分配打印所需的数组,它开始打印文件,但没有完成整个文件的打印。在几个元素之后,该过程停止并弹出错误。程序创建文件并开始在文件中写入解决方案,然后停止打印解决方案。我试过用不同数量的PE运行它,问题总是弹出来。

变量的声明方式如下:

integer, parameter :: dp = 8
real(kind=dp),dimension(:,:),allocatable::r_old,u_old,v_old,T_old,a_old

代码如下所示:

        DO kk=1, 2001

 ! This section calls different subroutine
 ! They are not relevant for the discussion

Call MPI_BARRIER(MPI_COMM_WORLD,ierr) ! Barrier in MPI
Enddo

! Postprocessing tasks and restart file
Call MPI_BARRIER(MPI_COMM_WORLD,ierr) ! Barrier in MPI
Call KillArrays   ! Deallocating the arrays not needed for writing output
Call Write_SolutionRestart
Call Output
Call MPI_BARRIER(MPI_COMM_WORLD,ierr) 
Call MPI_FINALIZE(ierr)

给我带来问题的子程序是“输出”。

根据错误文件,问题始终为 0 级。

4

0 回答 0