Труды КНЦ (Естественные и гуманитарные науки вып.2/2023(2))

Труды Кольского научного центра РАН. Серия: Естественные и гуманитарные науки. 2023. Т. 2, № 2. С. 86-93. Transactions of the Kola Science Centre of RAS. Series: Natural Sciences and Humanities. 2023. Vol. 2, No. 2. P. 86-93. Проход нитей при выполнении CUDA-функции, соответствующей шагу расщепления по вертикальному направлению При выполнении CUDA-функции, соответствующей шагу расщепления по зональному направлению, вычислительные нити и их разделение на блоки организованы также, как и для CUDA-функции, соответствующей шагу расщепления по вертикальному направлению. При этом каждая вычислительная нить совершает проход по высоте и на каждом шаге прохода считывает необходимые данные из общей памяти GPU в элементы массивов в разделяемой памяти мультипроцессора, а затем нити одного блока вычисляют потоки консервативных переменных в зональном направлении и новые значения консервативных переменных для узлов сетки на заданных высоте и широте и записывают эти значения в массивы в общей памяти GPU. При выполнении CUDA-функции, соответствующей шагу расщепления по меридиональному направлению, каждая вычислительная нить совершает проход по широте с юга на север через узлы сетки, расположенные на заданной высоте и долготе, и считывает необходимые данные из общей памяти GPU в регистровые переменные, а затем вычисляет потоки консервативных переменных в меридиональном направлении, а после этого вычисляет новые значения консервативных переменных в указанных узлах сетки. Все нити для узлов сетки с одинаковой высотой объединены в один блок, то есть нумерация нитей в блоке одномерная. Блоки занумерованы по высоте, то есть их нумерация также одномерная. Их число равно размеру сетки по высоте. Число нитей в каждом блоке равно размеру сетки в зональном направлении, причем нити не обмениваются данными между собой. При этом используется только общая память GPU и регистровая память мультипроцессора, но не используется разделяемая память мультипроцессора. При описанной выше организации работы CUDA-функций с общей памятью GPU выполняются условия оптимизации, обеспечивающие параллельный доступ нитей к общей памяти GPU (coalescing). CUDA-функции, которые вычисляют приращения консервативных переменных за счет обусловленных вязкостью и теплопроводностью потоков этих переменных по трем пространственным направлениям, организованы аналогично трем описанным выше CUDA-функциям. Каждая CUDA-функция вычисляет потоки физических переменных в своем направлении и приращения физических переменных за счет этих потоков, а затем прибавляет рассчитанные приращения к приращениям физических переменных за счет потоков, вычисленных предыдущей CUDA-функцией в другом направлении. Заклю чени е Представленный в данной работе способ организации параллельных вычислений с помощью технологии CUDA на графических процессорах позволил авторам при численном моделировании общей циркуляции атмосферы Земли получить быстродействие, сравнимое с быстродействием сервера или кластера, содержащих от 64 до 128 многоядерных процессоров последнего поколения. Например, в наших расчетах быстродействие графического процессора Nvidia GTX 1080 Ti более чем в 200 раз превышало быстродействие четырехъядерного процессора Intel Core i7 при использовании технологии Open MP и восьми вычислительных потоков. В настоящее время по соотношению цена/производительность графические процессоры являются оптимальной параллельной архитектурой с общей памятью для решения многих задач численного моделирования. Производительность этих процессоров растет быстрее, чем производительность центральных процессоров. Использование параллельных вычислений на графических процессорах открывает новые возможности по моделированию сложных физических процессов. © Орлов К. Г., Мингалев И. В., Федотова Е. А., Мингалев В. С., 2023 90

RkJQdWJsaXNoZXIy MTUzNzYz