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