MPI工作进程是否可以挂起自身? 我在C++中构建了MPI程序。

MPI工作进程是否可以挂起自身? 我在C++中构建了MPI程序。,c++,mpi,C++,Mpi,该程序可以在分布式计算环境中运行,但也可以在单个计算机上运行。在初始化时,参数被分配给每个工人。然后,工人们以平行的方式进行,没有相互交流。部分结果返回给主机,分配更多参数,完成更多完全并行工作,程序终止 在单台机器的情况下,程序的工作程序可以并且必须按顺序运行。程序保存的总数据将不适合RAM。一种可能的解决方案是在战略时间点暂停工作进程,以便将其内存交换到磁盘,然后在稍后重新激活它们以执行更多计算 是否可以挂起一个工作进程,例如使用pthread\u suspend,然后重新激活它?在这种情况

该程序可以在分布式计算环境中运行,但也可以在单个计算机上运行。在初始化时,参数被分配给每个工人。然后,工人们以平行的方式进行,没有相互交流。部分结果返回给主机,分配更多参数,完成更多完全并行工作,程序终止

在单台机器的情况下,程序的工作程序可以并且必须按顺序运行。程序保存的总数据将不适合RAM。一种可能的解决方案是在战略时间点暂停工作进程,以便将其内存交换到磁盘,然后在稍后重新激活它们以执行更多计算


是否可以挂起一个工作进程,例如使用
pthread\u suspend
,然后重新激活它?

在这种情况下,为什么要创建多个工作进程?在分布式环境中,每个进程只需要访问部分内存,这样就可以完成作业。如果一个人只能访问一台内存有限的计算机,同样的模式,但按顺序执行,作为完成任务的一种方式是有意义的。我不知道你在处理什么问题,但如果由于机器的资源限制,任何时候只有一个工作人员可以活动,这样看来,一个工人在一个循环中按顺序完成工作的所有部分似乎是合乎逻辑的。也许这需要一个彻底的设计变更(允许n名工人用1名工人完成m部分工作)≤ M≤ n) 我不知道你是否愿意承诺。我只是想指出这可能是XY的问题。谢谢!纯粹的顺序设计不能利用多核/分布式系统。对于这个特殊的问题,我认为并行设计只需稍作修改就可以在单核/有限内存系统上运行,因此这个想法值得探索。混合-将MPI代码与类似OpenMP的东西结合起来,以利用每个节点的并行处理能力。挂起/恢复线程需要大量CPU和I/O时间,而这些时间可以用于计算。