Внешний кодовый компонент OpenMDAO с mpi - PullRequest
0 голосов
/ 28 апреля 2020

Я пытаюсь оптимизировать профиль, используя openMDAO и SU2. У меня есть несколько Designpoints, которые я хочу запустить параллельно. Мне удалось сделать это с помощью «Параллельной группы» и XFoil. Но теперь я хочу использовать SU2 вместо XFoil.

Большая проблема, сама по себе SU2, запускается MPI (mpirun-np 4 SU2_CFD config.cfg). Теперь я хочу, чтобы openMDAO разделил все доступные процессы равномерно по всем DesignPoints. А затем запустите один экземпляр SU2 для каждой Designpoint. Каждый экземпляр SU2 должен затем использовать все процессы, которые openMDAO выделил для этой DesginPoint.

Как я могу это сделать?

Вероятно, неправильный подход: я играл с компонентом внешнего кода. Но если этот компонент получает 2 процесса, он запускается дважды. Я не хочу запускать SU2 дважды. Я хочу запустить его один раз, но используя оба доступных процесса.

С наилучшими пожеланиями, Дэвид

Ответы [ 2 ]

1 голос
/ 28 апреля 2020

Я не думаю, что ваш подход к обертыванию SU2 сработает, если вы хотите запустить его параллельно как часть более крупной модели. ExternalCodeComp предназначен для переноса файлов и запускает подпроцессы, которые не дают вам никакого способа поделиться коммуникаторами MPI с родительским процессом (который я знаю в любом случае).

Я не эксперт в SU2, поэтому я не могу говорить с их python интерфейсом. Но я совершенно уверен, что ExternalCodeComp не даст вам то, что вы хотите здесь. Я предлагаю вам поговорить с разработчиками SU2, чтобы обсудить их интерфейс в памяти.

0 голосов
/ 08 мая 2020

Я не мог придумать простой способ. Но я проигнорировал ADflow: https://github.com/mdolab/adflow.

Это CFD-Solver, который поставляется с OpenMDAO-Wrapper. Так что я собираюсь использовать это.

...