我有一个使用 mpiexec 运行的程序 A。该程序通常并行运行,但在其中一种执行模式中,它可能会调用也启用了 MPI 的外部程序 B。当然,如果 B 作为串行调用,则 A 的每个实例最终都会调用 B 的一个实例。如果并行调用,A 的每个实例都将调用并行 B。
一种可能的解决方案是让 A 的主节点调用并行 B,让其他 A 的进程空闲,但当然我需要从 A 的用户命令行调用中继承 mpiexec 选项(包括任何怪癖,例如 PBS 交互)到内部 B 调用。据我所知,这不是微不足道的,也不能很好地处理不同的 MPI 实现(例如 MPICH 与 Open MPI)。
有没有人有这种问题的经验?