每次运行模型时,我的简单工作流程现在最多可以占用9 GB的RAM(没有驱动程序)。
这是因为我以矢量化方式运行其中一个组件的许多案例。这意味着我制作了一个接收N形输入的元件,对其进行操作并输出N形矢量。
有没有办法告诉OpenMDAO不要在其字典中存储某些不提供设计变量和约束值的中间组件的输出?
答案 0 :(得分:1)
OpenMDAO的内存使用量并非来自存储I / O值。问题是我在N输入中声明N输出组件,偏导数的形式为(from=['*'], wrt=['*']).
这将雅可比定义为完全密集,在我的情况下,它比这更稀疏,因为组件正在进行矢量化计算。所以它的雅可比是对角的。
从OpenMDAO 2.0.2开始,大型密集的jacobians使用大量内存,强烈建议指定稀疏性。通过使用rows
和cols
参数定义部分,内存使用率从13 GB下降到200 MB。请参阅:http://openmdao.org/twodocs/versions/2.0.2/feature_reference/core_features/working_with_derivatives/sparse_partials.html