Снижение актуальности OpenMDAO 1.x

У меня есть компонент в OpenMDAO без выходных данных, который служит для предоставления входных данных остальной части группы. apply_linear в этом компоненте вызывается, несмотря на то, что его выход не подключен. Разве алгоритм снижения релевантности в OpenMDAO 1.x не должен понимать, что для этого метода никогда не нужно вызывать apply_linear?


person Rob Falck    schedule 20.11.2015    source источник


Ответы (2)


Как оказалось, снижение релевантности для каждой переменной по умолчанию не включено. Вы можете включить его с помощью:

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

По умолчанию для этого параметра установлено значение False, поскольку он использует больше памяти за счет выделения отдельных векторов для каждой интересующей величины (хотя каждый вектор меньше, поскольку он содержит только релевантные переменные, но общий размер может быть больше). Кроме того, уменьшение релевантности применим только при использовании Linear Gauss Seidel в качестве главного линейного решателя.

person Kenneth Moore    schedule 20.11.2015

Моя репутация еще недостаточно высока, чтобы оставлять комментарии, поэтому вместо этого я просто добавляю другой ответ. Я просто хотел отметить, что если вы не используете MPI, активация single_voi_relevance_reduction практически бесплатна. Реальное увеличение использования памяти происходит не из-за самих векторов, а из-за массивов индексов, которые мы храним для передачи данных из исходных массивов в целевые массивы. Мы вынуждены использовать массивы индексов в MPI, потому что этого требует PETSc, но когда мы не используем MPI, мы используем объекты фрагментов Python для передачи данных. Объекты среза требуют очень мало памяти.

person Bret Naylor    schedule 21.11.2015