Распараллеливание вычислений в сложных схемах

Многопоточный расчет в HS

Описание

Помимо базового механизма распараллеливания вычислений между логическими процессорами при работе в рамках пакета проектов в SimInTech, теплогидравлический код HS имеет собственный инструмент распараллеливания сложных вычислений. Работа инструмента заключается в создании определенного количества асинхронных потоков с вычислениями таким образом, чтобы привести к увеличению скорости моделирования и не нарушить корректность выполнения расчета. Опытным путем было выявлено, что наиболее ресурсозатратной частью выполнения одного шага расчета является вычисление коэффициентов теплоотдачи и сопротивления трения, включающее многократное обращение к теплофизическим свойствам заданного теплоносителя. В связи с этим было принято решение рассчитывать "ребра" теплогидравлической системы в многопоточном режиме (под термином "ребро" понимается участок теплогидравлической схемы, заключенный между двумя узлами).

В параметрах расчета теплогидравлической схемы в разделе "Тонкие настройки" имеется свойство "Максимальное количество асинхронных потоков при расчёте "ребер" теплогидравлической схемы", отвечающее за настройку многопоточного режима вычислений. Действительное текущее значение количества асинхронных потоков выбирается в соответствии с определенным алгоритмом. Основными критериями в процедуре определения требуемого количества потоков являются количество расчетных объемов, составляющих "ребро", и количество квантов процессорного времени, затраченное на выполнение шага расчета. В процессе работы алгоритма вычисляется минимальное количество расчетных объемов на поток из условия целесообразности в соответствии с квантом процессорного времени. Далее общее количество "ребер" распределяется между потоками таким образом, чтобы каждый поток насчитывал не менее определенного ранее минимального количества расчетных объемов. Другими словами, алгоритм сам принимает решение в целесообразности многопоточного расчета и требуемом количестве потоков. При этом каждые 1000 шагов синхронизации задачи алгоритм пересчитывает текущее требуемое количество асинхронных потоков. Стоит отметить, что данный механизм может быть с пользой использован при работе с большими теплогидравлическими сетями, насчитывающими от 500 расчетных объемов.

В качестве примера для обоснования эффективности используемого метода была рассмотрена теплогидравлическая сеть, состоящая из 1920 "ребер", 192000 расчетных объемов. Шаг интегрирования и шаг синхронизации задачи: 0.1 с, конечное время расчета: 100 с, тип модели: гомогенная сжимаемая, тип теплоносителя: вода, характеристики ЦП: 11th Gen Intel(R) Core(TM) i7-11800H 2.30GHz 8 ядер, 16 логических процессоров. Ниже приведена сводная таблица влияния максимального количества асинхронных потоков на осредненный коэффициент ускорения задачи к реальному времени (Табл. 1).

Табл. 1. Влияние максимального количества асинхронных потоков на осредненный коэффициент ускорения задачи к реальному времени
Максимальное количество асинхронных потоков Осредненный коэффициент ускорения задачи к реальному времени
0 0.197
1 0.231
4 0.331
8 0.373
12 0.406
16 0.418

Кроме того, имеется механизм многопоточного расчета блоков, выполненных в виде ODE-моделей. К ODE-моделям относятся баки, роторы, тепловые структуры. Алгоритм выбора количества асинхронных потоков аналогичен за исключением основного критерия. Вместо количества расчетных объемов учитывается количество дифференциальных уравнений, описывающих ту или иную ODE-модель. Свойство "Максимальное количество асинхронных потоков при расчёте ODE-моделей теплогидравлической схемы" отвечает за настройку данного механизма.