Ускорение расчетов FDS при оптимизации MPI процессов

Ускорение расчетов FDS при оптимизации MPI процессов

17.01.2025
823

Утилита StreamCFD

Сообщество StreamCFD представило утилиту, которая оптимизирует расчетные файлы FDS для уменьшения продолжительности расчетов.


Ускорение расчетов происходит за счет более оптимального распределения расчетных сеток между MPI процессами.

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

Такой подход становится актуальным, когда необходимо выполнить моделирование для объекта большого размера и сложной формы (непрямоугольной).


Особенности моделирования FDS

При создании расчетной модели, обычно придерживаются двух условий:


Большой объект сложной формы


Если объект имеет большой объем и сложную форму:


Распределение расчетных сеток на объекте сложной формы


Примеры распределения нагрузки на ядра процессора

Пример 1. Неэффективность использования процессора 53,7 %


Пример 2. Неэффективность использования процессора 20,56 %


Пример 3. Неэффективность использования процессора 49,77 %


Оптимизация MPI процессов

При помощи оптимизации MPI возможно:


Последовательность работы при оптимизации MPI процессов:

1. Зайдите на сайт StreamCFD

2. Перейдите в раздел FDS MPI Optimization Tool


3. Загрузите FDS файл


4. Укажите параметры оптимизации


Максимальное количество MPI процессов

Устанавливается в зависимости от количества ядер вашего процессора.


Предпочтение оптимизации (скорость/эффективность)

При выборе скорости — задействуется максимальное количество ядер (возможна большая неравномерность распределения нагрузки на каждое ядро).

При выборе эффективности — нагрузка на каждое ядро распределяется более равномерно.

Эффективное распределение сеток поможет лучше использовать процессор. Но это может привести к увеличению количества ячеек (приходящееся на каждое ядро) и, как следствие, к уменьшению скорости расчета. Но это может быть полезно, если вы одновременно запускаете несколько расчетов параллельно.


Пример оптимизации

До оптимизацииПосле оптимизации
Количество MPI процессов5225
Количество ячеек на ядро минимальное544065376
Неэффективноcть использования процессора53,7 %3,7 %

Ответы на вопросы

1. Что такое нерациональное использование/неэффективность процессора?

При многосеточном моделировании нерациональное использование ресурсов ЦП или неэффективность вычислений возникает, когда MPI-процессы получают неравномерную нагрузку из-за различий в количестве ячеек сетки. Каждому процессу требуется разное количество вычислительного времени, что приводит к неэффективности, когда более быстрые MPI-процессы заканчивают свои задачи раньше времени и остаются без дела, не в состоянии помочь более медленным процессам.

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


2. Изменяет ли это сетку, ячейки и/или границы

Нет, это только перераспределяет нагрузку, переназначая процессы MPI.


3. Всегда ли этот инструмент повышает эффективность?

Для локального моделирования — да, в большинстве случаев.

При кластерном моделировании производительность может меняться из-за потенциальных узких мест в сети, если соседние сетки распределены по разным узлам.


4. Нет улучшений после оптимизации, высокая неэффективность процессора

Попробуйте разбить сетки с большим количеством ячеек, либо уменьшить размер ячеек в сетках с большим размером ячейки, чтобы избежать проблем с выравниванием сетки.


5. Можно ли возобновить моделирование, которое было запущено ранее, с другим количеством MPI процессов

Нет, это связано с ограничениями FDS. Файлы .restart требуют идентичных сеток и распределения процессов для обеспечения согласованности.