Труды КНЦ (Естественные и гуманитарные науки вып.2/2023(2))
В радиационном блоке нашей модели используются две новые параметризации молекулярного поглощения, одна из которых предназначена для расчета поля собственного излучения атмосферы в диапазоне частот от 10 до 2000 см-1 (Мингалев и др., 2018; Четверушкин и др., 2020), а вторая предназначена для расчета поля солнечного излучения в диапазоне частот от 2000 до 50000 см -1 в интервале высот от поверхности Земли до 100 км. При построении этих параметризаций учитывается изменение спектров поглощения атмосферы с высотой из-за изменения вкладов водяного пара и озона, а также учитывается нарушение локально термодинамического равновесия в верхней атмосфере в полосах поглощения озона с длинами волн около 9,6 мкм и полосах поглощения углекислого газа с длинами волн около 15,6 мкм, а также 4,2 и 2,7 мкм. Кроме того, для численного решения уравнения переноса излучения вместо двух потокового приближения и используется метод дискретных ординат и расчетная сетка по зенитным углам с шагом около 9° (Игнатьев и др., 2015), что обеспечивает расчет полей солнечного и теплового излучения с учетом сильного рассеяния в облаках. В текущей версии модели температура поверхности Земли задается по модели NRLMSIS-00, а пространственные распределения концентрации озона и других малых составляющих воздуха, важных для расчета поля излучения, заданы по аналитическим формулам, которые аппроксимируют имеющиеся экспериментальные данные. В нашу модель пока не включены полноценные блок расчета концентрации озона, блок расчета температуры поверхности Земли и блок расчета концентраций и размеров различных аэрозольных частиц, определяющих динамику облаков (аэрозольный блок). Также в текущей версии модели атмосфера считается безоблачной. После включения в нашу модель полноценного аэрозольного блока планируется сравнить результаты расчетов и определить, как влияет учет облачности на общую циркуляцию атмосферы. П р о гр ам м н а я р еали заци я Программа для параллельных вычислений на GPU имеет следующий вид. Вычисления разделяются на большое число параллельно выполняемых нитей, причем все нити выполняют одинаковый набор инструкций, но каждая нить обрабатывает свои данные. Нити объединяются в блоки. Каждый блок нитей выполняется на одном мультипроцессоре видеокарты. Код нити записывается в CUDA-функции (ее называют также CUDA-ядром). Число блоков нитей и число нитей в блоке указывается при вызове CUDA-функции. Нити в блоке объединяются в порции (порцию называют warp). Для чипов GK 104 и GK 110 один warp содержит 192 нити. Крайне важным для оптимизации работы с общей памятью видеокарты является использование возможностей GPU объединять несколько запросов к общей памяти в один (coalescing). В противном случае они выполняются последовательно, что очень сильно замедляет работу программы. Правильное использование упомянутой выше возможности позволяет получить максимальное быстродействие при работе с общей памятью. Для реализации моделей на GPU с использованием технологии CUDA и явной схемы расщепления были созданы три CUDA-функции, каждая из которых соответствует одному из трех шагов расщепления по пространственным направлениям, а также были созданы три CUDA-функции, которые вычисляют приращения консервативных переменных за счет потоков этих переменных по разным пространственным направлениям, обусловленных вязкостью и теплопроводностью. Последовательный вызов этих последних трех CUDA-функций обеспечивает выполнение четвертого шага расщепления, во время которого учитываются эффекты вязкости и теплопроводности. Для хранения физических переменных и их приращений были введены трехмерные массивы, хранящиеся в глобальной памяти GPU. Первое измерение в этих массивах — по долготе, второе — по широте, а третье — по высоте. При выполнении CUDA-функции, соответствующей шагу расщепления по вертикальному направлению, каждая вычислительная нить совершает проход по высоте и считывает необходимые данные из общей памяти GPU в регистровые переменные, а затем вычисляет потоки консервативных переменных в вертикальном направлении и источниковые члены, а также новые значения консервативных переменных для вертикального столба узлов сетки над заданной точкой поверхности Земли. Все нити для узлов сетки с одинаковой широтой объединены в один блок, то есть нумерация нитей в блоке одномерная. Блоки занумерованы по широте, то есть их нумерация также одномерная (рис.). Их число равно размеру сетки по широте. Число нитей в каждом блоке равно размеру сетки в зональном направлении, причем нити не обмениваются данными между собой. При этом используется только общая память GPU и регистровая память мультипроцессора, но не используется разделяемая память мультипроцессора. Труды Кольского научного центра РАН. Серия: Естественные и гуманитарные науки. 2023. Т. 1, № 2. С. 86-93. Transactions of the Kola Science Centre of RAS. Series: Natural Sciences and Humanities. 2023. Vol. 1, No. 2. P. 86-93. © Орлов К. Г., Мингалев И. В., Федотова Е. А., Мингалев В. С., 2023 89
Made with FlippingBook
RkJQdWJsaXNoZXIy MTUzNzYz