Утилита StreamCFD
Сообщество StreamCFD представило утилиту, которая оптимизирует расчетные файлы FDS для уменьшения продолжительности расчетов.
Ускорение расчетов происходит за счет более оптимального распределения расчетных сеток между MPI процессами.
Утилита позволяет обойти ограничение, при котором количество сеток должно быть меньше количества доступных логических ядер.
Такой подход становится актуальным, когда необходимо выполнить моделирование для объекта большого размера и сложной формы (непрямоугольной).
Особенности моделирования FDS
При создании расчетной модели, обычно придерживаются двух условий:
- с одной стороны, нужно создать ограниченное количество сеток (не превышающее количество ядер процессора);
- с другой стороны, нужно захватить в расчетную область как можно меньше лишнего объема (для минимизации общего количества ячеек).
Большой объект сложной формы
Если объект имеет большой объем и сложную форму:
- сложно создать сетки, которые будут иметь равное количество ячеек;
- возникают потери, связанные с моделированием сложных геометрических форм;
- для уменьшения лишнего объема, который захватывается расчетной областью, необходимо увеличивать количество сеток.
Распределение расчетных сеток на объекте сложной формы
Примеры распределения нагрузки на ядра процессора
Пример 1. Неэффективность использования процессора 53,7 %
Пример 2. Неэффективность использования процессора 20,56 %
Пример 3. Неэффективность использования процессора 49,77 %
Оптимизация MPI процессов
При помощи оптимизации MPI возможно:
- 1. Использовать большее количество сеток чем количество ядер процессора
- 2. Обеспечить равномерное распределение нагрузки на каждое ядро
- 3. Обеспечить гибкость при работе со сложными объектами
- 4. Эффективно использовать различные типы вычислительного оборудования
- 5. Максимально использовать вычислительные ресурсы, сократить требования и снизить требования к вычислительному оборудованию
Последовательность работы при оптимизации MPI процессов:
1. Зайдите на сайт StreamCFD
2. Перейдите в раздел FDS MPI Optimization Tool
3. Загрузите FDS файл
4. Укажите параметры оптимизации
Максимальное количество MPI процессов
Устанавливается в зависимости от количества ядер вашего процессора.
Предпочтение оптимизации (скорость/эффективность)
При выборе скорости – задействуется максимальное количество ядер (возможна большая неравномерность распределения нагрузки на каждое ядро).
При выборе эффективности – нагрузка на каждое ядро распределяется более равномерно.
Эффективное распределение сеток поможет лучше использовать процессор. Но это может привести к увеличению количества ячеек (приходящееся на каждое ядро) и, как следствие, к уменьшению скорости расчета. Но это может быть полезно, если вы одновременно запускаете несколько расчетов параллельно.
Пример оптимизации
До оптимизации | После оптимизации | |
Количество MPI процессов | 52 | 25 |
Количество ячеек на ядро минимальное | 5440 | 65376 |
Неэффективноcть использования процессора | 53,7 % | 3,7 % |
Ответы на вопросы
1. Что такое нерациональное использование/неэффективность процессора?
При многосеточном моделировании нерациональное использование ресурсов ЦП или неэффективность вычислений возникает, когда MPI-процессы получают неравномерную нагрузку из-за различий в количестве ячеек сетки. Каждому процессу требуется разное количество вычислительного времени, что приводит к неэффективности, когда более быстрые MPI-процессы заканчивают свои задачи раньше времени и остаются без дела, не в состоянии помочь более медленным процессам.
На приведенном ниже графике область над столбиками, выделенная красным цветом, представляет собой время простоя. Это время простоя возникает потому, что более быстрые MPI-процессы (представленные меньшими зелеными столбиками) завершили свою работу, а ресурсы тратятся впустую в ожидании завершения самого медленного процесса (представленного самым большим зеленым столбиком).
2. Изменяет ли это сетку, ячейки и/или границы
Нет, это только перераспределяет нагрузку, переназначая процессы MPI.
3. Всегда ли этот инструмент повышает эффективность?
Для локального моделирования – да, в большинстве случаев.
При кластерном моделировании производительность может меняться из-за потенциальных узких мест в сети, если соседние сетки распределены по разным узлам.
4. Нет улучшений после оптимизации, высокая неэффективность процессора
Попробуйте разбить сетки с большим количеством ячеек, либо уменьшить размер ячеек в сетках с большим размером ячейки, чтобы избежать проблем с выравниванием сетки.
5. Можно ли возобновить моделирование, которое было запущено ранее, с другим количеством MPI процессов
Нет, это связано с ограничениями FDS. Файлы .restart требуют идентичных сеток и распределения процессов для обеспечения согласованности.