【问题标题】:OpenMDAO External Code Component with mpi带 mpi 的 OpenMDAO 外部代码组件
【发布时间】:2020-04-28 08:51:55
【问题描述】:

我正在尝试使用 openMDAO 和 SU2 优化机翼。我有多个要并行运行的设计点。我设法通过“Parallel Group”和 XFoil 做到了这一点。但我现在想使用 SU2 而不是 XFoil。

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

我该怎么做?

可能是错误的方法: 我玩弄了外部代码组件。但是如果这个组件有 2 个进程,它会运行两次。我不想运行 SU2 两次。我想运行一次,但同时使用两个可用进程。

最好的问候 大卫

【问题讨论】:

    标签: parallel-processing mpi openmdao


    【解决方案1】:

    如果您想将它作为更大模型的一部分并行运行,我认为您包装 SU2 的方法不会奏效。 ExternalCodeComp 是为文件包装和产生子进程而设计的,它没有给你任何与父进程共享 MPI 通信器的方法(无论如何我都知道)。

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

    【讨论】:

    • 感谢您的回复。 SU2 不必通过 MPI 与 openmdao 通信。我只是想确保 SU2 在 OpenMDAO 为其挑选的核心/节点上运行。如果我找到绕过该信息的方法,那么一个简单的子流程应该可以工作,不是吗?
    【解决方案2】:

    我想不出一个简单的方法。但我发现了 ADflow:https://github.com/mdolab/adflow

    它是一个 CFD 求解器,附带一个 OpenMDAO-Wrapper。所以我要使用它。

    【讨论】:

      猜你喜欢
      • 2017-08-13
      • 2017-05-01
      • 1970-01-01
      • 2014-05-21
      • 2015-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-09
      相关资源
      最近更新 更多