OpenMDAO v1.x:ParallelGroup中的子Group的输出不存在



当并行运行时,我无法连接ParallelGroup()中子组的未知项,即使我可以连接到子组的参数。导致问题的代码(为了清楚起见,更改了名称)如下。此代码位于一组较大的结构中,但它是唯一使用MPI的地方:

for i in range(0, nTasks):
        self.connect('comp_a.output%i' % i, 'parallel_group.sub_group%i.param_a' % i)
        self.connect('input_param%i' % i, 'parallel_group.sub_group%i.param_b' % i)
        self.connect('parallel_group.sub_group%i.output' % i, 'comp_b.input%i' % i)

前两个连接似乎工作正常,但最后一个连接抛出了一个错误:

NameError: Source 'parallel_group.sub_group0.output' cannot be connected to target 'comb_b.input0': 'parallel_group.sub_group0.output' does not exist.

此外,如果我注释掉了有问题的行,那么循环中的第一行将在第二个进程中失败,并返回相同的错误消息:

NameError: Source 'comp_a.output1' cannot be connected to target 'parallel_group.sub_group1.param_a': 'parallel_group.sub_group1.param_a' does not exist.

所有的连接都能很好地与我们的串行版本的代码配合使用。串行版本是相同的,只是子组直接添加到该代码所在的组中,而不是封装在parallel_group中。

我试着看了一下教程和例子,但没能找出可能出了什么问题。如果有任何关于检查内容或可能出现错误的建议,我将不胜感激。很抱歉没有发布完整的代码示例。

这有点不清楚,但听起来像是在代码的并行版本中添加了一个新组,名为"parallel_group"。当你这样做的时候,你有没有宣传过这个群体的任何东西?如果是这样,那么就不应该将并行组添加到连接的变量名路径中。

这似乎是唯一可能让你绊倒的事情。如果你能拿出一个可以在这里发布的示例代码来显示问题,我可以试着调试更多。

最新更新