Тюгин Д.Ю. —
Разработка параллельных алгоритмов в прикладной гидрофизической задаче с использованием современных средств профилирования кода
// Программные системы и вычислительные методы. – 2019. – № 1.
– С. 70 - 80.
DOI: 10.7256/2454-0714.2019.1.29554
URL: https://e-notabene.ru/itmag/article_29554.html
Читать статью
Аннотация: В данной статье автор рассматривает разработку параллельного алгоритма для ускорения вычислений в прикладной научной задаче. Особое внимание уделяется программным инструментам для профилирования кода. Применение таких инструментов позволяет быстро выделить участки кода для распараллеливания. Рассматриваются библиотеки и технологии реализации параллельного кода для многопроцессорных систем с общей памятью. Обсуждаются подходы к написанию программ на основе потоков и на основе задач. Рассматриваются этапы разработки параллельного кода путем изменения последовательного кода.
Приводится анализ времени выполнения функций приложения при помощи инструмента VTune. Предлагается способ распараллеливания по задачам на основе библиотеки TBB. Показана реализация кода позволяющая выполнять параллельные расчеты. В результате данной работы был разработан новый параллельный алгоритм для решения задачи нахождения характеристик внутренних волн в океане в рамках слабонелинейной теории. Полученный алгоритм проанализирован, получены метрики эффективности. Достигнуто ускорение позволяющее производить расчеты карт двумерных распределений в 39 раз быстрее последовательного алгоритма на 56 ядерном вычислительном сервере. Полученные результаты будут применены в дальнейшем при изучении внутренних волн в океане, а также позволят увеличить эффективность исследований при расчете карт параметров большего масштаба.
Abstract: In this article the author considers the development of a parallel algorithm to speed up calculations in an applied scientific problem. Particular attention is paid to software code profiling tools. The use of such tools allows you to quickly select portions of code for parallelization. The libraries and technologies of parallel code implementation for multiprocessor systems with shared memory are considered. Discusses approaches to writing programs based on threads and task-based. The stages of developing a parallel code by changing the sequential code are considered. An analysis of the execution time of application functions using the VTune tool is given. A method for parallelization of tasks based on the TBB library is proposed. Shows the implementation of the code allows you to perform parallel calculations. As a result of this work, a new parallel algorithm was developed to solve the problem of finding the characteristics of internal waves in the ocean within the framework of the weakly nonlinear theory. The obtained algorithm was analyzed, metrics of efficiency were obtained. Acceleration has been achieved, which allows making calculations of maps of two-dimensional distributions 39 times faster than a sequential algorithm on a 56 nuclear computing server. The results obtained will be applied further in the study of internal waves in the ocean, as well as will increase the effectiveness of research in the calculation of maps of parameters of a larger scale.