17 августа 2015

Распараллеливание вычислений в pSeven

Распараллеливание присутствует в pSeven в разных формах:

  • Внутреннее распараллеливание: некоторые блоки, такие как Optimizer или ApproxBuilder могут производить вычисления в несколько потоков для ускорения работы алгоритмов.
  • Параллельное выполнение разных ветвей расчетных цепочек: независимые в смысле использования данных и обращения к файлам ветви расчетных цепочек могут выполнятся одновременно.
  • Распараллеливание расчетной цепочки: этот механизм позволяет запускать одновременно несколько копий одной расчетной цепочки с разными входными параметрами.

Часто возникает необходимость получить отклики расчетной модели в десятках и сотнях точек пространства параметров, а время одного вычисления в практических инженерных задачах может быть очень большим. Естественным желанием будет запустить несколько расчетов одновременно для уменьшения времени набора данных. В этой заметке рассказывается, как это можно реализовать в pSeven.

Сперва необходимо убедиться, что запущенные в параллель расчетные цепочки не будут мешать друг другу (например, не будут обращаться одновременно к одному файлу на диске). Чтобы этого добиться, можно использовать концепцию sandbox («песочница»).

«Песочница» – это рабочая директория блока во время работы. В ней хранятся используемые и создаваемые в ходе работы блока файлы. Можно указать директорию-прототип, содержимое которой будет скопировано в «песочницу» перед началом работы блока. Использование «песочниц» и передача файлов и параметров через порты блоков позволяет сделать цепочку независимой от абсолютных путей и файлов на диске.

Теперь можно объединить расчетную цепочку в единый композитный блок. Композитный блок служит оберткой для нескольких блоков и позволяет создавать вложенные иерархические цепочки. Входы и выходы внутренней расчетной цепочки становятся портами такого композитного блока. И наконец, нужно активизировать и настроить функцию параллельного выполнения содержимого композитного блока. Выбранные в настройках порты теперь могут принимать сразу список точек для обработки.

pSeven автоматически будет запускать расчет для каждой точки  из  списка. В настройках нужно указать максимальное количество одновременно выполняемых расчетов. По завершении одного расчета, будет запушен новый для следующей точки из списка. Результатом работы блока в параллельном режиме будет список откликов модели. Так устроена настройка параллельного выполнения расчетов в pSeven.

Стоит заметить, что параллелизация расчетных цепочек работает и в сочетании с другими функциями в pSeven, такими как:

Интеграция с CAD

Параллельная работы с геометрической моделью обычно невозможна, поэтому pSeven автоматически контролирует очередность обращения к модели отCAD-блоков из параллельных цепочек.

HPC расчеты

Использование «песочницы» позволяет без труда использовать встроенные возможности по запуску работ через кластерные менеджеры. Каждый блок ShellScript просто оправит на кластер свою независимую задачу.

Оптимизация в параллельном режиме

Распараллеливание расчетов позволяет ускорить не только сбор данных при иследовании пространства параметров, но и процесс оптимизации. Оптимизатор в pSeven может работать в параллельном режиме, когда на каждой итерации генерируется сразу несколько точек для вычисления. Использование этой опции совместно с параллельным выполнением расчетов может существенно снизить время оптимизации. 

 

Антон Саратов, Инженер-расчетчик, DATADVANCE

LinkedIn
VK

Заинтересовало решение?

Нажмите, чтобы запросить бесплатную 30-дневную демоверсию.

Запросить демо