Parallel processing 带有mpi的OpenMDAO外部代码组件

Parallel processing 带有mpi的OpenMDAO外部代码组件,parallel-processing,mpi,openmdao,Parallel Processing,Mpi,Openmdao,我正在尝试使用openMDAO和SU2优化机翼。我有多个要并行运行的设计点。我通过一个“并行组”和XFoil成功地做到了这一点。但我现在想用SU2代替XFoil 最大的问题是,SU2本身是由MPI启动的(mpirun np 4 SU2\u CFD config.cfg)。现在,我希望openMDAO将所有可用进程平均分配到所有设计点。然后为每个设计点运行一个SU2实例。然后,每个SU2实例都应该使用openMDAO分配给该设计点的所有进程 我怎么能这么做 可能是错误的方法: 我使用了外部代码组件

我正在尝试使用openMDAO和SU2优化机翼。我有多个要并行运行的设计点。我通过一个“并行组”和XFoil成功地做到了这一点。但我现在想用SU2代替XFoil

最大的问题是,SU2本身是由MPI启动的(mpirun np 4 SU2\u CFD config.cfg)。现在,我希望openMDAO将所有可用进程平均分配到所有设计点。然后为每个设计点运行一个SU2实例。然后,每个SU2实例都应该使用openMDAO分配给该设计点的所有进程

我怎么能这么做

可能是错误的方法: 我使用了外部代码组件。但是,如果这个组件得到两个进程,它将运行两次。我不想跑两次SU2。我想运行一次,但使用两个可用进程

致意
David

如果您想将SU2作为更大模型的一部分并行运行,我认为您包装SU2的方法行不通。ExternalCodeComp是为文件包装和生成子进程而设计的,它不提供任何与父进程共享MPI通讯器的方法(我知道)


我不是SU2方面的专家,所以我无法与他们的python接口对话。但是我很有信心ExternalCodeComp不会给你你想要的。我建议您与SU2开发人员讨论他们的内存接口

我想不出一个简单的方法。但我发现了ADflow:


它是一个CFD解算器,附带OpenMDAO包装。所以我将使用它。

谢谢您的回复。SU2不必通过MPI与openmdao通信。我只是想确保SU2在为其选择的核心/节点上运行。如果我找到一种绕过这些信息的方法,一个简单的子过程应该可以工作,不是吗?