|
大家好。
我想对三层嵌套循环,做并行处理。就是每层循环都用一次MPI并行。但运行程序总是报错,说程序在规定时间内,没有完成,被自动停止了。我限定程序运行1小时,我觉得应该是可以运行完成,因为我也写了串行版本的程序,不到10分钟就完成了。
我猜可能是我的程序出现了死锁的情况,导致程序卡某个地方,一直不往下运行。最后到了1小时的运行实现,被停止了。但我反复查看,也没找到程序中哪里出了问题。
我把我的程序(并行和串行版本)放在附件里了。下面是并行版本程序的编译文件,投掷任务文件和报错文件内容。
编译文件
[Fortran] 纯文本查看 复制代码 2 | module switch PrgEnv - cray PrgEnv - intel |
3 | #==========================================================# |
4 | ftn - fp - model strict - no - wrap - margin - traceback example_parallel.f 90 - o example_parallel |
投掷任务文件
[Fortran] 纯文本查看 复制代码 02 | #SBATCH --partition=workq |
03 | #SBATCH --job-name="code" |
08 | #SBATCH --output=std.out |
09 | #----------------------------------------------------------# |
10 | module switch PrgEnv - cray PrgEnv - intel |
11 | export OMP_NUM_THREADS = 1 |
12 | #----------------------------------------------------------# |
13 | echo "The job " ${SLURM_JOB_ID} " is running on " ${SLURM_JOB_NODELIST} |
14 | #----------------------------------------------------------# |
15 | srun - - ntasks = 64 - - cpus - per - task = ${OMP_NUM_THREADS} - - hint = nomultithread . / example_parallel |
报错文件
[Fortran] 纯文本查看 复制代码 1 | slurmstepd : error : * * * STEP 20294161.0 ON nid 00191 CANCELLED AT 2021 -05 -17 T 02 : 02 : 24 DUE TO TIME LIMIT * * * |
2 | slurmstepd : error : * * * JOB 20294161 ON nid 00191 CANCELLED AT 2021 -05 -17 T 02 : 02 : 24 DUE TO TIME LIMIT * * * |
4 | srun : forcing job termination |
5 | srun : Job step aborted : Waiting up to 302 seconds for job step to finish. |
能否麻烦大家帮我查看下,我的程序哪里出了问题吗?
多谢大家啦。
|
|