使用多个 comp 的 OpenMDAO 效率
OpenMDAO efficiency with using multiple comp
我最近在a paper读到这句话:
One important feature of OpenMDAO is the ability to subdivide a
problem into components that have a small number of inputs and outputs
and contain relatively simple analyzes.
此外,查看手册中的示例,每个组件的输入和输出数量很少。
这是否意味着使用从显式组件接收两个输入并输出约束的 execcomp 比在 explicitcomp 中执行所有操作更有效。我试着在这里举一个例子:
x1,x2 --> ExplicitComp -->y1
y1 --> Execcomp --->constraint
OR
x1,x2 --->ExplicitComp -->y1,constraint
该论文中的评论所指的不是计算效率,而是在使模型更加模块化和可维护方面给用户带来的好处。此外,当组件较小且输入较少时,计算它们的解析导数会容易得多。
我们的想法是,通过将您的计算分解为更小的步骤,偏导数对您来说更易于手动计算。然后 OpenMDAO 将 compute the total derivatives across the model for you.
因此,从某种意义上说,您依靠 OpenMDAO 跨大型模型计算导数的能力来减轻您的工作量。
从计算成本的角度来看,拥有更多组件与拥有更少组件会产生一些成本。在极端情况下,如果您在大型计算中的每一行代码都有一个组件,那么框架开销可能会成为一个问题。对于串行模型,OpenMDAO 中有一些功能可以帮助减轻部分成本 specifically the in-memory assembly of Jacobians。
关于 ExecComp 具体而言,该组件用于简单且廉价的计算。它使用复杂步骤计算其导数,如果涉及大型数组输入,这可能会很昂贵。它可以使简单的步骤更容易,例如添加变量。但是对于昂贵的计算,你不应该使用它。
在你的具体情况下,我建议你考虑是否很难自己将 x1,x1 的导数传播到约束。如果链式法则不难处理,那么我可能会把它全部放在一个计算中。如果出于某种原因,当您合并所有计算时导数很糟糕,那么只需将它们分开即可。
我最近在a paper读到这句话:
One important feature of OpenMDAO is the ability to subdivide a problem into components that have a small number of inputs and outputs and contain relatively simple analyzes.
此外,查看手册中的示例,每个组件的输入和输出数量很少。
这是否意味着使用从显式组件接收两个输入并输出约束的 execcomp 比在 explicitcomp 中执行所有操作更有效。我试着在这里举一个例子:
x1,x2 --> ExplicitComp -->y1
y1 --> Execcomp --->constraint
OR
x1,x2 --->ExplicitComp -->y1,constraint
该论文中的评论所指的不是计算效率,而是在使模型更加模块化和可维护方面给用户带来的好处。此外,当组件较小且输入较少时,计算它们的解析导数会容易得多。
我们的想法是,通过将您的计算分解为更小的步骤,偏导数对您来说更易于手动计算。然后 OpenMDAO 将 compute the total derivatives across the model for you.
因此,从某种意义上说,您依靠 OpenMDAO 跨大型模型计算导数的能力来减轻您的工作量。
从计算成本的角度来看,拥有更多组件与拥有更少组件会产生一些成本。在极端情况下,如果您在大型计算中的每一行代码都有一个组件,那么框架开销可能会成为一个问题。对于串行模型,OpenMDAO 中有一些功能可以帮助减轻部分成本 specifically the in-memory assembly of Jacobians。
关于 ExecComp 具体而言,该组件用于简单且廉价的计算。它使用复杂步骤计算其导数,如果涉及大型数组输入,这可能会很昂贵。它可以使简单的步骤更容易,例如添加变量。但是对于昂贵的计算,你不应该使用它。
在你的具体情况下,我建议你考虑是否很难自己将 x1,x1 的导数传播到约束。如果链式法则不难处理,那么我可能会把它全部放在一个计算中。如果出于某种原因,当您合并所有计算时导数很糟糕,那么只需将它们分开即可。