在MPI中更改运行时的PE数

在MPI中更改运行时的PE数,mpi,intel,Mpi,Intel,我想知道是否可以使用英特尔编译器在MPI fortran中更改运行时PE的数量。 我的问题非常具体,我想知道在我计算到某个点后,我是否可以减少PE的数量。 我的情况如下: 我有一个能处理很多数字的代码。要解决巨大的问题,我需要大约128个PE。但是,当我完成计算并开始打印解决方案时,其他127个PE保持空闲,这是对资源的巨大浪费。 当我完成计算并仍在打印解决方案时,是否有可能“取消分配”这127个PE?我认为没有直接的方法来实现这一点 一个相对简单的选择是用一个任务启动MPI应用程序,然后MPI

我想知道是否可以使用英特尔编译器在MPI fortran中更改运行时PE的数量。 我的问题非常具体,我想知道在我计算到某个点后,我是否可以减少PE的数量。 我的情况如下: 我有一个能处理很多数字的代码。要解决巨大的问题,我需要大约128个PE。但是,当我完成计算并开始打印解决方案时,其他127个PE保持空闲,这是对资源的巨大浪费。
当我完成计算并仍在打印解决方案时,是否有可能“取消分配”这127个PE?

我认为没有直接的方法来实现这一点

一个相对简单的选择是用一个任务启动MPI应用程序,然后
MPI\u Comm\u spawn()
127个PEs,进行计算,终止127个PEs并继续串行部分

一般来说,这样一个128 PE作业是通过资源管理器启动的,实际上,真正的问题是批处理管理器是否支持作业收缩(iirc,SLURM确实支持),以及这是否对MPI没有任何影响(这是一个需要的特性,PMIx对此有计划,但我不知道SLURM是否支持)


我最好的建议是以不同的方式处理问题,并使用MPI-IO并行打印您的解决方案。

我认为没有一种简单的方法可以实现这一点

一个相对简单的选择是用一个任务启动MPI应用程序,然后
MPI\u Comm\u spawn()
127个PEs,进行计算,终止127个PEs并继续串行部分

一般来说,这样一个128 PE作业是通过资源管理器启动的,实际上,真正的问题是批处理管理器是否支持作业收缩(iirc,SLURM确实支持),以及这是否对MPI没有任何影响(这是一个需要的特性,PMIx对此有计划,但我不知道SLURM是否支持)


我最好的建议是以不同的方式处理问题,并使用MPI-IO并行打印解决方案。

非常感谢您的评论。我还相信使用MPI-IO是最好的选择。我在几个月前就尝试过实现它,这是一项非常具有挑战性的任务,因为我的分区是不同的。每个列组都有自己大小的数组。我会尽量朝那个方向走。非常感谢你的评论。我还相信使用MPI-IO是最好的选择。我在几个月前就尝试过实现它,这是一项非常具有挑战性的任务,因为我的分区是不同的。每个列组都有自己大小的数组。我会努力朝那个方向走