Fortran Coder

查看: 4960|回复: 0
打印 上一主题 下一主题

[其他行业算法] 对于三层嵌套循环的并行问题

[复制链接]

58

帖子

21

主题

0

精华

专家

F 币
283 元
贡献
173 点
跳转到指定楼层
楼主
发表于 2021-5-18 05:27:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好。

我想对三层嵌套循环,做并行处理。就是每层循环都用一次MPI并行。但运行程序总是报错,说程序在规定时间内,没有完成,被自动停止了。我限定程序运行1小时,我觉得应该是可以运行完成,因为我也写了串行版本的程序,不到10分钟就完成了。

我猜可能是我的程序出现了死锁的情况,导致程序卡某个地方,一直不往下运行。最后到了1小时的运行实现,被停止了。但我反复查看,也没找到程序中哪里出了问题。

我把我的程序(并行和串行版本)放在附件里了。下面是并行版本程序的编译文件,投掷任务文件和报错文件内容。

编译文件
[Fortran] 纯文本查看 复制代码
#!/bin/bash
module switch PrgEnv-cray PrgEnv-intel
#==========================================================#
ftn -fp-model strict -no-wrap-margin -traceback example_parallel.f90 -o example_parallel



投掷任务文件
[Fortran] 纯文本查看 复制代码
#!/bin/bash
#SBATCH --partition=workq
#SBATCH --job-name="code"
#SBATCH --nodes=8
#SBATCH --time=1:00:00
#SBATCH --exclusive
#SBATCH --err=std.err
#SBATCH --output=std.out
#----------------------------------------------------------#
module switch PrgEnv-cray PrgEnv-intel
export OMP_NUM_THREADS=1
#----------------------------------------------------------#
echo "The job "${SLURM_JOB_ID}" is running on "${SLURM_JOB_NODELIST}
#----------------------------------------------------------#
srun --ntasks=64 --cpus-per-task=${OMP_NUM_THREADS} --hint=nomultithread ./example_parallel


报错文件
[Fortran] 纯文本查看 复制代码
slurmstepd: error: *** STEP 20294161.0 ON nid00191 CANCELLED AT 2021-05-17T02:02:24 DUE TO TIME LIMIT ***
slurmstepd: error: *** JOB 20294161 ON nid00191 CANCELLED AT 2021-05-17T02:02:24 DUE TO TIME LIMIT ***
srun: got SIGCONT
srun: forcing job termination
srun: Job step aborted: Waiting up to 302 seconds for job step to finish.


能否麻烦大家帮我查看下,我的程序哪里出了问题吗?

多谢大家啦。

example_parallel.f90

4.13 KB, 下载次数: 3

并行版本的程序

example_serial.f90

1.29 KB, 下载次数: 5

串行版本的程序

分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-4-20 22:13

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表