Распараллеливание вычислений в сложных схемах
Многопоточный расчет в HS
Описание
Помимо базового механизма распараллеливания вычислений между логическими процессорами при работе в рамках пакета проектов в SimInTech, теплогидравлический код HS имеет собственный инструмент распараллеливания сложных вычислений. Работа инструмента заключается в создании определенного количества асинхронных потоков с вычислениями таким образом, чтобы привести к увеличению скорости моделирования и не нарушить корректность выполнения расчета. Опытным путем было выявлено, что наиболее ресурсозатратной частью выполнения одного шага расчета является вычисление коэффициентов теплоотдачи и сопротивления трения, включающее многократное обращение к теплофизическим свойствам заданного теплоносителя. В связи с этим было принято решение рассчитывать "ребра" теплогидравлической системы в многопоточном режиме (под термином "ребро" понимается участок теплогидравлической схемы, заключенный между двумя узлами).
В параметрах расчета теплогидравлической схемы в разделе "Тонкие настройки" имеется свойство "Максимальное количество асинхронных потоков при расчёте "ребер" теплогидравлической схемы", отвечающее за настройку многопоточного режима вычислений. Действительное текущее значение количества асинхронных потоков выбирается в соответствии с определенным алгоритмом. Основными критериями в процедуре определения требуемого количества потоков являются количество расчетных объемов, составляющих "ребро", и количество квантов процессорного времени, затраченное на выполнение шага расчета. В процессе работы алгоритма вычисляется минимальное количество расчетных объемов на поток из условия целесообразности в соответствии с квантом процессорного времени. Далее общее количество "ребер" распределяется между потоками таким образом, чтобы каждый поток насчитывал не менее определенного ранее минимального количества расчетных объемов. Другими словами, алгоритм сам принимает решение в целесообразности многопоточного расчета и требуемом количестве потоков. При этом каждые 1000 шагов синхронизации задачи алгоритм пересчитывает текущее требуемое количество асинхронных потоков. Стоит отметить, что данный механизм может быть с пользой использован при работе с большими теплогидравлическими сетями, насчитывающими от 500 расчетных объемов.
В качестве примера для обоснования эффективности используемого метода была рассмотрена теплогидравлическая сеть, состоящая из 1920 "ребер", 192000 расчетных объемов. Шаг интегрирования и шаг синхронизации задачи: 0.1 с, конечное время расчета: 100 с, тип модели: гомогенная сжимаемая, тип теплоносителя: вода, характеристики ЦП: 11th Gen Intel(R) Core(TM) i7-11800H 2.30GHz 8 ядер, 16 логических процессоров. Ниже приведена сводная таблица влияния максимального количества асинхронных потоков на осредненный коэффициент ускорения задачи к реальному времени (Табл. 1).
| Максимальное количество асинхронных потоков | Осредненный коэффициент ускорения задачи к реальному времени |
|---|---|
| 0 | 0.197 |
| 1 | 0.231 |
| 4 | 0.331 |
| 8 | 0.373 |
| 12 | 0.406 |
| 16 | 0.418 |
Кроме того, имеется механизм многопоточного расчета блоков, выполненных в виде ODE-моделей. К ODE-моделям относятся баки, роторы, тепловые структуры. Алгоритм выбора количества асинхронных потоков аналогичен за исключением основного критерия. Вместо количества расчетных объемов учитывается количество дифференциальных уравнений, описывающих ту или иную ODE-модель. Свойство "Максимальное количество асинхронных потоков при расчёте ODE-моделей теплогидравлической схемы" отвечает за настройку данного механизма.