Начиная с OpenMDAO v2.4, команда разработчиков OpenMDAO не интенсивно использовала инструменты AD ни для каких компонентов чисто python.Мы немного поэкспериментировали с этим и обнаружили примерно двукратное увеличение вычислительных и ручных дифференцированных компонентов.Хотя ожидается некоторое увеличение вычислительных затрат, я не хочу указывать, что я ожидаю, что 2х будет последним практическим правилом.У нас просто недостаточно данных, чтобы предоставить такую оценку.
Инструменты AD на основе Python гораздо менее развиты, чем инструменты для компилируемых языков.Динамическая типизация и общая гибкость языка усложняют написание хороших инструментов AD.
Мы связали OpenMDAO с скомпилированными кодами, использующими AD, такими как инструменты CFD и FEA.В этих случаях вы всегда используете безматричные производные API для OpenMDAO (apply_linear
и compute_jacvec_product
).
Если ваш компонент достаточно мал, чтобы поместиться в памяти и достаточно быстр, чтобы работать в одном процессе, я советую вам вручную дифференцировать код.Это даст вам лучшую общую производительность на данный момент.
Поддержка AD для небольших последовательных компонентов - это то, что мы рассмотрим в будущем, но у нас нет ничего, что мы могли бы предложить вам в ближайшей перспективе (начиная с OpenMDAO v2.4)