OpenMDAO 1.x相关性降低

时间:2015-11-20 20:05:09

标签: openmdao

我在OpenMDAO中有一个没有输出的组件,用于为组的其余部分提供输入。尽管没有连接它的输出,但仍调用该组件中的apply_linear。不应该在OpenMDAO 1.x中的相关性约简算法中找出这个方法的apply_linear永远不需要被调用吗?

2 个答案:

答案 0 :(得分:2)

事实证明,默认情况下,每个变量的相关性降低并未启用。你可以用以下方式打开它:

    prob.root.ln_solver = LinearGaussSeidel()
    prob.root.ln_solver.options['single_voi_relevance_reduction'] = True

默认情况下,此选项设置为False,因为它通过为每个感兴趣的数量分配单独的向量来使用更多内存(尽管每个向量都较小,因为它只包含相关变量,但总大小可能更大。)此外,相关性降低仅适用于使用线性高斯赛德尔作为顶部线性求解器。

答案 1 :(得分:2)

我的声誉还不够高,不能发表评论,所以我只是添加另一个答案。我只是想提一下,如果你没有在MPI下运行,激活single_voi_relevance_reduction基本上是免费的。内存使用的真正增加不是由于向量本身,而是由于我们存储的索引数组,以便将数据从源数组传输到目标数组。我们被迫在MPI下使用索引数组,因为PETSc需要它,但是当我们不使用MPI时,我们使用python切片对象来进行数据传输。切片对象只需要很少的内存。