fortran - 如何在 SLURM 集群中为一个 OpenMp Fortran90 代码使用两个节点?
问题描述
我对在 CLUSTER 中使用 SLURM 很陌生。我现在正在努力使用 OpenMP fortran 90。
我尝试通过 SLURM 使用两个节点(node1 和 node2)计算积分。
我想要的是通过使用 Fortran OpenMP 结合节点 1 和节点 2 的计算来返回一个值。
但是,当我使用“srun”时,似乎两个节点独立计算同一个可执行文件。
例如,如果我按以下方式运行代码,每个节点将返回两个相同的值。此外,如果我在没有“srun”的情况下执行,那么它看起来不错,但实际上并非如此。当我检查“squeue”命令时,似乎通过两个节点使用了 100 个 CPU。(看起来不错!)但实际上,如果我查看“ssh node# (#=1,2)”并检查两个节点中的每一个,则只有 node1 使用 100 个 CPU,而 node2 无法正常工作。
有没有人对我有所启发?
- - 源代码 - -
program integral
use omp_lib
implicit none
integer :: i,n
real :: x,y1,y2,xs,xe,dx,sum,dsum
n=100000000
xs=0.
xe=3.
sum=0.
dx=(xe-xs)/real(n)
!$omp parallel do default(shared) private(i,dsum,x) reduction(+:sum)
do i=1,n
x=xs+real(i-1)*dx
y1=x**2
y2=(x+dx)**2
dsum=(y1+y2)*dx/2
sum=sum+dsum
enddo
!$omp end parallel do
print*, sum
end program
----作业脚本----
#!/bin/sh
#SBATCH -J test
#SBATCH -p oldbatch
#SBATCH -o test%j.out
#SBATCH --nodes=2
#SBATCH --ntasks-per-node=1
#SBATCH --cpus-per-task=50
export OMP_NUM_THREADS=50
srun ./a.out
解决方案
推荐阅读
- android - DialogFragment 完成后调用片段
- matlab - 如何去除这张带有形态学的照片中的图像噪点,同时使背景变白,同时又不会过多地降低文本的可读性?
- .net - 在 .net 核心中找不到 RIPEMD160
- gnuplot - 使用 Gnuplot 绘图时更改字体
- android-testing - 抛出 NullPointerException:该片段已在测试中从 FragmentManager 中删除
- sqlite - sql重复,而一个值在第1列中出现一次,在第2列中出现一次
- reactjs - Axios 在刷新时发出 2 个请求
- angular - 为什么我需要在按钮上单击 2 次才能让事件发生?
- c - struct inotify_event *event=(struct inotify_event*)&buffer[i]
- ios - 根据 indexPath Swift 在 TableView 中设置 UiCell 文本颜色