我在两个不同的集群中使用完全相同的代码。一个集群运行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。我知道这根本不大,但对于较小的数组,错误不会弹出。 Subrotuine分配打印所需的数组,它开始打印文件,但它没有完成打印整个文件。在几个元素之后,该过程停止并且弹出错误。程序创建文件并开始在文件中编写解决方案,然后停止打印解决方案。 我尝试使用不同数量的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。