aeshnik


Уменьшая скорость роста энтропии вселенной


Previous Entry Share Next Entry
О скорости моделирования и параллельных вычислениях
aeshnik
Этот пост будет интересен тем, кто интересуется моделированием (энергосистем), параллельными вычислениями и сочувствующим.

Где-то месяц назад я разговаривал с сотрудниками предприятия, у которого в задачах проектирование подсистемы управления для одной из систем передачи и генерации электроэнергии. Деталей здесь быть не может, но для предметности решим, что разрабатываемая система (это и алгоритм, и аппаратура) должны управлять генераторами (чтобы те давали больше электричества, когда нужно, и выключались, когда потребление падает). В требованиях к проекту значилось выполнить что-то, что мы называем Processor in the loop testing: работа, которая помогает проверить, как разработанный и развернутый на выбранной аппаратуре алгоритм в контуре с объектом, для которого этот алгоритм придумали. При этом используют не настоящий объект, а его математическую модель. И подключают аппаратуру (процессор) не через тот же интерфейс, с которым процессор будет общаться с настоящим объектом, а через какую-то универсальную шину (зависит от процессора и от предпочтений разработчика). Короткий пример (где программируют ARM9) можно посмотреть тут.

Сфокусируемся на модели объекта. Один из моих собеседников живо интересовался, можно ли устраивать параллельные вычисления при моделировании. То есть спрашивал не про "как мне достичь чего-то", а "как мне сделать вот такое определенное действие", что уже странно. В итоге мы сошлись на том, что нужно не параллельно вычислять что-то, а ускорять работу исследователя, который моделью пользуется. Это цель работы. А как ее достигнуть - тут много вариантов. Ускоряют обычно самое продолжительное (или критическое, влияющее на длину всей работы, но это не наш случай). Продолжительное, например, отладка модели: разработчику нужно подгонять параметры модели, тестировать ее каждый раз после каждого изменения, чтобы получить такую модель, которую он, наконец, будет считать достоверной. И вот такое "ускорение" мой собеседник почему-то назвал "маркетинговым бредом". Причины этому понятны, и они довольно далеки от темы поста. Но дело-то важное. Вот, например, как распараллеливание таких итераций здорово ускоряет подбор параметров модели генератора. (Это видео я использовал в большом вебинаре, который пока не опубликован). Видео здорово ускорено, на половинках экрана есть секундомеры. Счет идет на минуты. Условия проведения эксперимента - одно ядро и четыре ядра одного и того же процессора. Одни и те же исходные данные, одна и та же модель, одни и те же эталонные данные.


  • 1
мне обычно тяжко признавать свою некомпетентность, но я не понял того, что происходит на видео кроме того, что в правой части "какой-то процесс" (оптимизация параметров модели судя из текста к видео??) закончился быстрее при активном распараллеливании... Но серьезно, что там делалось, т.к. подписей к осям не видно.. упрощенная цель - получить меандр большей высоты за меньшее время, показав тем самым, что распараллеливание процесса отладки есть найс при моделировании?

По-моему, показывать некомпетентность легко и приятно. Только так от нее можно избавиться.
В этой заметке ничего не говорилось об условиях эксперимента и почти ничего о решаемой задаче. Это просто проверка быстродействия в разных условиях. Эта "оптимизация" использовалась для решения какой-то задачи, про которую я рассказывал на вебинаре. Спустя неделю-другую я оставлю здесь на него ссылку.

Edited at 2013-08-23 08:01 pm (UTC)

Ффух, запись просралась, и ее можно посмотреть целиком (https://www.mathworks.se/company/events/webinars/wbnr52928.html?id=52928&p1=1117616359&p2=1117616354)

Вот копипаста из описания того, что происходит (пост должен появиться где-то в четыре сегодня):
В этом вебинаре показана одна важна штука. MATLAB и Simulink - это не еще одна среда моделирования, где модель создается для того, чтобы картинки посмотреть. Если у вас есть модель (фактически - функции с параметрами), то почему бы не сказать, что значение функции в зависимости от времени должно быть каким-то (меньше, больше, похожим на), при этом такие-то параметры сделать изменяемыми и сказать специальному алгоритму (оптимизации) - меняй эти параметры. Вот такой фокус проделан здесь для моделей генератора и возбудителя.

  • 1
?

Log in

No account? Create an account