ВЫЧИСЛИТЕЛЬНЫЕ МЕТОДЫ И ПРОГРАММИРОВАНИЕ
Архив статей журнала
Рассматривается задача параллельной реализации алгоритма определения сейсмического источника внутри случайно-неоднородной среды. Алгоритм определения исходной позиции источника использует данные записанных сейсмограмм на свободной поверхности и информацию о статистических свойствах случайной среды. Предложенный подход требует решения большого количества задач динамической теории упругости для различных статистически эквивалентных скоростных моделей, идентифицированных по статистическим параметрам исходной среды. Это наиболее трудоемкая часть алгоритма решения. Чтобы ускорить расчеты, используется двухуровневая стратегия распараллеливания с помощью создания групп, каждая из которых решает свою задачу динамической теории упругости с декомпозицией расчетной области внутри группы. Реализация программы выполнена с использованием Fortran Coarray. Также приводится сравнение используемых конструкций расширения Fortran Coarray с функциями MPI.
Рассмотрено моделирование гравитационной задачи N тел с использованием алгоритмов PM и P3M. Реализация алгоритмов для GPU осуществлена с применением вычислительных шейдеров. Предложенный подход использует CPU-код только для синхронизации и запуска шейдеров и не содержит вычислительных частей, реализуемых на CPU; в том числе полностью отсутствует копирование данных между CPU и GPU. Приводятся параллельный алгоритм размещения частиц по ячейкам сетки и параллельный алгоритм распределения масс по узлам сетки. Основой алгоритмов является параллельное построение списков, соответствующих ячейкам сетки. Алгоритмы полностью распараллелены и не содержат частей, исполняемых в один поток. Для расчета одновременно с визуализацией часть вычислений сделана в вершинном шейдере. Выполнить их позволило использование буферных объектов в вершинном шейдере и специально подготовленных данных вместо вершин в качестве входа. Приведены результаты численных расчетов на примере образования галактических скоплений в расширяющейся согласно модели Фридмана плоской вселенной. В качестве модели вселенной брался куб с периодическими краевыми условиями по всем осям. Максимальное число частиц, с которым проводились расчеты, - 108. Для моделирования использовались современный кроссплатформенный API Vulkan и язык GLSL. Результаты расчетов на процессорах Apple M1 и Ryzen 3700X сравниваются с результатами расчетов на обычных видеокартах Apple M1 и NVIDIA RTX 3060. Параллельный алгоритм для CPU реализован с помощью OpenMP. Проведено сравнение производительности алгоритма с результатами других авторов, причем делаются качественные сравнения самих результатов вычислений и сравнение времени работы алгоритмов. Также приведено сравнение времени работы программы для GPU и похожей программы для кластера из многих узлов.
В настоящей работе представлен новый метод решения уравнений движения заряженных частиц в электромагнитных полях и проведено его сравнение с различными известными модификациями метода Бориса. Созданные двумерный и трехмерный алгоритмы основаны на использовании точного решения дифференциального уравнения для скорости заряженной частицы на шаге по времени. Сравнительный анализ метода Бориса и его модификаций проводился как по точности методов, так и по времени их работы. Новая модификация метода Бориса позволяет точнее вычислять траекторию и скорость заряженной частицы без значительного увеличения сложности расчетов. Показано, что при выборе модификации метода Бориса для решения задачи в первую очередь следует обращать внимание на точность решения, так как более простая и быстрая схема может не дать выигрыша по времени.
В статье представлен параллельный алгоритм валидации решений задач линейного программирования. Идея метода состоит в том, чтобы генерировать регулярный набор точек на гиперсфере малого радиуса, центрированной в точке тестируемого решения. Целевая функция вычисляется для каждой точки валидационного множества, принадлежащей допустимой области. Если все полученные значения меньше или равны значению целевой функции в точке, проверяемой как решение, то эта точка считается корректным решением. Параллельная реализация алгоритма VaLiPro выполнена на языке C++ с использованием параллельного BSF-каркаса, инкапсулирующего в проблемно-независимой части своего кода все аспекты, связанные с распараллеливанием программы на базе библиотеки MPI. Приводятся результаты масштабных вычислительных экспериментов на кластерной вычислительной системе, подтверждающие эффективность предложенного подхода.
Для генерации сверхподробных тетраэдральных сеток объемом до 1 миллиарда ячеек используется открытое ПО Gmsh. Пакет позволяет строить автоматически указанные сетки на ПК в параллельном режиме OpenMP за время, не превышающее 1 часа при использовании ПК Intel i7-9700K. Описан опыт применения пакета для построения пространственных сеток для задач обтекания аэрокосмических объектов. Приведены примеры суперкомпьютерных расчетов обтекания аэрокосмических объектов.
Статья посвящена исследованию нового метода решения сверхбольших задач линейного программирования. Указанный метод получил название “апекс-метод”. Апекс-метод работает по схеме предиктор-корректор. На фазе предиктор находится точка, лежащая на границе n-мерного многогранника, задающего допустимую область задачи линейного программирования. На фазе корректор организуется итерационный процесс, в результате которого строится последовательность точек, сходящаяся к точному решению задачи линейного программирования. В статье дается формальное описание апекс-метода и приводятся сведения о его параллельной реализации на языке C++ с использованием библиотеки MPI. Приводятся результаты масштабных вычислительных экспериментов на кластерной вычислительной системе по исследованию масштабируемости апекс-метода.