Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MPI fortran代码位于另一个代码之上_Fortran_Mpi - Fatal编程技术网

MPI fortran代码位于另一个代码之上

MPI fortran代码位于另一个代码之上,fortran,mpi,Fortran,Mpi,我编写了一个需要多次运行的MPI fortran程序(为了一致性,让我们调用这个程序P1)。我可以用来运行程序的最小内核数是512。问题是P1具有最好的可扩展性,有128个核。 我想做的是在P1上创建另一个程序(P2),同时调用P1 4次,每次调用都在128个核上 基本上,我需要同时运行4个调用实例,进程数等于总处理器数除以4 你认为有可能吗?我的问题是我不知道在哪里搜索来做这件事。 我目前正在寻找MPI团队和沟通者,我是否遵循了实现目标的良好途径 编辑: 系统调度器是Loadleveler。提

我编写了一个需要多次运行的MPI fortran程序(为了一致性,让我们调用这个程序P1)。我可以用来运行程序的最小内核数是512。问题是P1具有最好的可扩展性,有128个核。 我想做的是在P1上创建另一个程序(P2),同时调用P1 4次,每次调用都在128个核上

基本上,我需要同时运行4个调用实例,进程数等于总处理器数除以4

你认为有可能吗?我的问题是我不知道在哪里搜索来做这件事。 我目前正在寻找MPI团队和沟通者,我是否遵循了实现目标的良好途径

编辑:
系统调度器是Loadleveler。提交作业时,我需要指定需要多少节点。节点et有16个核心,我可以使用的最小节点数是32个。在批处理中,我们还指定了-np NBCORES,但如果我们这样做,即-np 128,即使作业在128个核上运行,所消耗的时间也将相当于使用512个核(32个节点)。

多亏了您的回答,我才能够做到这一点。 正如我在后面提到的(sry),调度程序是Loadlever, 如果您可以访问子块模块,请遵循以下步骤:如Hristo Iliev所述。
如果不这样做,则可以执行多步骤作业,而步骤之间没有依赖关系,因此它们将同时执行。这是一个典型的多步骤作业,您只需删除任何@dependency标志(在Loadleveler的情况下)。

512是给定程序的最小值,还是并行环境的最小值?我相信这是可能的,尽管有一定的难度。在开始这段旅程之前,启动4个程序实例的脚本有什么问题?我猜您的程序的4个运行实例之间不需要通信,因此不确信您需要内部或内部或任何通信器。听起来您运行的是Blue Gene/Q系统(节点板上32个节点x每个节点ASIC 16个核心)。如果允许子块MPI作业,则可以使用
runjob
--block/--corner/--shape
机制将4个MPI作业放置在块的4个角中。这样做可能是特定于站点的。有关如何在Cineca的费米系统上执行的示例,请参阅。高性能标记:使用您所说的脚本,它将在512个内核上连续运行4个程序实例。事实上,这4个实例之间没有通信。我只能运行一次mpirun-np 512。赫里斯托·伊利耶夫:谢谢你的回答,如果我能照你说的做,我会努力的。非常感谢你的回答。我会和你保持联系的。弗朗西斯卡勒斯:我想512是一个并行环境。我可以指定使用128个核运行,但他们会像使用512个核计算一样向我收费。