我想知道是否可以使用英特尔编译器在MPI fortran中更改运行时的PE数量。 我的问题非常具体,我想知道在计算中达到某一点后是否可以减少PE的数量。 我的情况如下: 我有一个代码可以处理很多数字。为了解决大问题,我需要大约128个PE。但是,当我完成计算并开始打印解决方案时,另外127个PE保持空闲状态,这是一个巨大的资源浪费。 是否有可能解除分配"当我完成计算并且仍然打印解决方案时,那些127 PE?
答案 0 :(得分:2)
我认为没有一种直接的方法来实现这一点。
一个相对简单的选择是使用一个任务启动MPI应用程序,然后MPI_Comm_spawn()
127个PE,执行计算,终止127个PE并继续执行串行部分。
一般来说,这样的128 PE作业是通过资源管理器启动的,而imho,真正的问题是批处理管理器是否可以支持作业缩减(iirc,SLURM),以及这是否对MPI没有任何影响(这是一个理想的功能,PMIx有这个计划,但我不知道SLURM是否支持这个。)
我最好的建议是以不同的方式做事,并使用MPI-IO并行打印您的解决方案。