0

グループの残りの部分に入力を提供する出力のない OpenMDAO のコンポーネントがあります。そのコンポーネントの apply_linear は、その出力が接続されていないにもかかわらず呼び出されています。OpenMDAO 1.x の関連性削減アルゴリズムは、このメソッドの apply_linear を呼び出す必要がないことを理解すべきではありませんか?

4

2 に答える 2

2

結局のところ、変数ごとの関連性の削減はデフォルトではオンになっていません。次の方法でオンにできます。

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

このオプションはデフォルトで False に設定されています。これは、対象の量ごとに個別のベクトルを割り当てることでより多くのメモリを使用するためです (ただし、関連する変数のみが含まれているため各ベクトルは小さくなりますが、合計サイズは大きくなる可能性があります)。最上位の線形ソルバーとして Linear Gauss Seidel を使用する場合にのみ適用されます。

于 2015-11-20T20:38:03.243 に答える
2

私の評判はまだコメントを残すほど高くないので、代わりに別の回答を追加します. MPI で実行していない場合、single_voi_relevance_reduction の有効化は基本的に無料です。メモリ使用量の実際の増加は、ベクトル自体によるものではなく、ソース配列からターゲット配列にデータを転送するために格納するインデックス配列によるものです。PETSc ではインデックス配列が必要なため、MPI ではインデックス配列を使用する必要がありますが、MPI を使用していないときは、Python スライス オブジェクトを使用してデータ転送を行います。スライス オブジェクトはほとんどメモリを必要としません。

于 2015-11-21T20:21:17.173 に答える