Параллельная симуляция в Димоле - PullRequest
0 голосов
/ 24 марта 2020

Я строю большую систему в Dymola, я планирую использовать потенциал параллельного моделирования в Dymola, но я просто нахожу две общие настройки в справочном документе.

Мои вопросы:

  1. Есть ли какие-либо другие настройки, которые я мог бы использовать в Dymola, чтобы код работал быстрее?
  2. Есть ли в моем коде модели метод, позволяющий модели работать в параллельном режиме? Например, я знаю, что стиль кода MATLAB использует векторы, так значит ли это, что в Modelica я должен использовать векторы тоже?

enter image description here

enter image description here

1 Ответ

3 голосов
/ 26 марта 2020

Флаг Advanced.ParallelizeCode генерирует код, который выполняется параллельно (надеюсь, проверьте журнал), и векторизация, как в Matlab, здесь не помогает (это может даже вызвать проблемы).

Что вы можете Вместо этого выполните:

  • Как описано в разделе «Руководство пользователя 1B» Обработка внешних функций в параллельном коде, добавьте annotation(__Dymola_ThreadSafe=true); к вызываемым функциям, проверив, что они поточно-ориентированы.
  • Постарайтесь убедиться, что существует некоторая форма динамики, разделяющая различные части модели.
  • Если невозможно параллельно обрабатывать различные части, вы можете использовать оператор развязки (см. dymola\Modelica\Libraries\DecoupleBlocks.mo ); но будьте осторожны, чтобы сначала проверить результаты.

Флаг Advaned.ParallelSimulations не представляется актуальным для в этом случае , так как он запускает все моделирования параллельно с различными значениями параметров (значительно более крупнозернистый). Если вы запускаете только одну симуляцию за раз, это не дает никакой пользы.

Однако, если вы могли бы изменить его, чтобы использовать его вместо этого, в общем, это лучшая идея - и тогда вы (в общем) не должны включать другой вариант распараллеливания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...