如何使用openmpi在多节点并行计算

如何使用openmpi在多节点并行计算,第1张

集群上使用的是openmpi,PBS有点问题,所以我一直用命令“mpirun-np8vasp”提交任务。不知道如何使用命令进行多节点的并行计算(把一个任务分配到多个节点上)。在《并行计算导论》上查到关于mpich的使用:运行MPICH程序多机环境中运行MPICH程序与单机环境类似,可以用mpirun来进行。运行程序前先创建一个machinefile文件,其中列出要使用的结点机名,然后用命令“mpirun-machinefile文件名”来在指定的结点上运行程序。例如,假设用户登录在结点node2上,文件mfile中包含下述内容:node3node4则命令:mpirun-machinefilemfile-np3cpi将用node2,node3和node4来运行程序cpi,每个结点一个进程,这是因为默认情况下mpirun总是将当前结点添加到程序的结点机列表中。如果不希望使用当前结点(node2),可以加上-nolocal选项:mpirun-nolocal-machinefilemfile-np3cpi选项-np给出的进程数与-machinefile给出的文件中的结点机数不一定要相等。如果进程数少于结点机数,则程序只使用其中的一部分结点。如果进程数多于结点机数,则一些结点上会运行多于一个进程。

你的#pragma omp parallel

{

#pragma omp for

for(int j=0;j<100;j++)

{

sum1++;

}

}

应该改成

#pragma omp parallel for reduction(+:sum1)

for(int j=0;j<100;j++)

{

sum1++;

}

我给过一个详细完整的例子说明“归约(reduction)”的用法,

参见:>

不知道你用的是哪个版本的编译器,不同的编译器设置的方法不同,以vs2008为例

中文

工程属性-〉C++-〉语言-〉OpenMP支持-〉ON

英文:

Property-〉C++-〉Language-〉SupportOpenMP-〉ON

之后代码中加入

include 'omp_libh'

然后在do循环之前加入

!$OMP PARALLEL DO

就可以了,可以通过查看cpu的利用率来看看有没有成功,如果双核的能够达到50%以上说明并行成功。

以上就是关于如何使用openmpi在多节点并行计算全部的内容,包括:如何使用openmpi在多节点并行计算、openmp并行计算,同一个程序有时候结果不一样是为什么、如何利用OpenMP对Fortran95程序并行计算,非常感谢!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10625699.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-10
下一篇 2023-05-10

发表评论

登录后才能评论

评论列表(0条)

保存