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

OpenMDAO v1.x: output of sub Group in ParallelGroup does not exist

当 运行 并行时,我无法连接 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.

所有连接都适用于我们的代码串行版本。串行版本是相同的,除了 sub_groups 直接添加到此代码所在的组而不是包装在 parallel_group.

我已尝试查看教程和示例,但未能找出可能存在的问题。我真的很感激任何关于检查什么或什么可能是错误的建议。很抱歉没有 post 完整的代码示例。

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

这似乎是唯一可能绊倒你的事情。如果您能想出一个示例代码,我可以尝试进行更多调试,您可以在此处 post 显示问题。