如何排除一些不需要的 I/O 变量存储在内存中?

How do I exclude some I/O variables I don't need from being stored in memory?

我的简单工作流程现在每次 运行 模型(没有驱动程序)时最多可以占用 9 GB 的 RAM。

这是因为我运行以矢量化的方式使用其中一个组件处理许多案例。这意味着我制作了一个接受 N 形输入、对其进行运算并输出 N 形向量的组件。

有没有办法告诉 OpenMDAO 不要在其字典中存储某些不提供设计变量或约束值的中间组件的输出?

OpenMDAO 的内存使用量并非来自存储 I/O 值。问题是我在 N 输入到 N 输出组件中声明偏导数的形式为 (from=['*'], wrt=['*']). 这将雅可比行列式定义为完全密集的,在我的例子中它比这稀疏得多,因为组件正在进行矢量化计算。所以它的雅可比行列式是对角线的。

从 OpenMDAO 2.0.2 开始,大而密的雅可比矩阵会占用大量内存,强烈建议指定稀疏度。通过使用 rowscols 参数定义部分,内存使用量从 13 GB 下降到 200 MB。参见:http://openmdao.org/twodocs/versions/2.0.2/feature_reference/core_features/working_with_derivatives/sparse_partials.html