MPI更改主设备和从设备的执行顺序
我有两个主程序和从程序。我的主设备进行数据分解,从设备对分解后的数据进行计算。MPI scaterv是为工作分配而实现的。我首先执行主程序,然后它动态生成子进程或从进程,从进程执行不同的代码,即计算。现在,主服务器必须再次从从属服务器收集结果,并执行下一级分解。如何使用MPI实现这一点?实际上,我想交替执行主代码和从代码。。我如何实现这一点 提前感谢您。MPI-2(如果我没记错的话)引入了动态流程管理机制,您可能需要搜索MPI更改主设备和从设备的执行顺序,mpi,Mpi,我有两个主程序和从程序。我的主设备进行数据分解,从设备对分解后的数据进行计算。MPI scaterv是为工作分配而实现的。我首先执行主程序,然后它动态生成子进程或从进程,从进程执行不同的代码,即计算。现在,主服务器必须再次从从属服务器收集结果,并执行下一级分解。如何使用MPI实现这一点?实际上,我想交替执行主代码和从代码。。我如何实现这一点 提前感谢您。MPI-2(如果我没记错的话)引入了动态流程管理机制,您可能需要搜索MPI\u comm\u spawn来开始学习这些机制。因此,当然可以编写一
MPI\u comm\u spawn
来开始学习这些机制。因此,当然可以编写一个MPI程序,在运行主任务的一个进程和运行辅助任务的多个进程之间交替运行(不推荐使用slave一词)。甚至可以设计计算,使一个程序运行主任务,另一个程序运行(多个)辅助任务,并使用MPI在两者之间传递消息
但是(这是一个很大的问题),我不认为很多资源管理者(管理并行计算机系统的人或作业管理器等操作系统和系统软件)支持这种动态过程管理。想象一下,使用您提出的基本设计安排和管理两个或多个程序的复杂性。正如程序A尝试启动2^10个工作进程一样,程序B和程序C也尝试启动2^10个工作进程,而程序D尝试删除2^8个工作进程;所有这些都是在只有2^10个处理器(或内核)的集群上实现的。当多个作业争夺稀缺资源时,构建集群上作业吞吐量趋于零的场景可能并不太困难
如果您的平台支持动态流程管理,请继续。在更可能的情况下,您的平台没有,您至少有两个选择,您选择哪一个取决于主/辅时间的比率,可能还有其他因素。你可以:
是的,我开发了使用MPI_comm_spawn()动态创建子进程的代码。让我们看看它是如何工作的。:)