Abstract
В последнее время основным способом повышения производительности вычислительных устройств стало увеличение числа вычислительных ядер в процессорах, в связи с чем, системы с общей памятью получили широкое распространение. Поэтому особую актуальность приобретает разработка параллельных приложений, ориентированных на многоядерные системы с общей памятью. В статье рассматривается один из классов ресурсоемких приложений – задача поиска глобального экстремума функций многих переменных. Одним из основных подходов к решению таких задач является метод ветвей и границ. Его отличают следующие особенности, существенные с точки зрения распараллеливания: неизвестный заранее информационный граф и необходимость обмена информацией между вычислительными потоками. В статье предлагаются несколько подходов к распараллеливанию метода ветвей и границ. В настоящее время существует несколько стандартов создания многопоточных приложений. В работе рассматривается два таких стандарта: OpenMP и С++14. Стандарт OpenMP характерен более высокой скоростью разработки, но менее гибок по отношению к многопоточным расширениям C++14. Который позволяет варьировать различные режимы синхронизации. Мы сравниваем эти подходы, а также исследуем влияние различных способов организации вычислительного процесса на производительность приложения. В работе приводится описание алгоритмов и их программных реализаций. Разработана методика проведения экспериментальных исследований производительности разработанных приложений, с помощью которой произведено сравнение предложенных параллельных алгоритмов на представительном наборе тестовых примеров. Которое показало, что все рассмотренные подходы приводят к ускорению вычислений по сравнению с последовательным вариантом. Наилучшие результаты дает использование атомарных переменных для взаимодействия потоков. В качестве вычислительных платформ для проведения экспериментов использовались современные высокопроизводительные вычислительные системы. Recently, the main way to improve the performance of computing devices has become an increase in the number of processing cores in the processors, wherefore systems with shared memory have become widespread. Therefore, the development of parallel applications oriented to multi-core systems with shared memory becomes particularly topical. The article considers one of the classes of resource-intensive applications - the task of finding a global extremum of functions of several variables. One of the main approaches to solving such problems is the branch and boundary method. It is distinguished by the following features, essential from the point of view of parallelization: an unknown information graph in advance and the need to exchange information between computational threads. The article suggests several approaches to parallelizing the method of branches and boundaries. Currently, there are several standards for creating multi-threaded applications. The paper considers two such standards: OpenMP and C ++ 14. The OpenMP standard is characterized by higher development speed, but less flexible with respect to multithreaded extensions of C ++ 14, which allows you to vary the different modes of synchronization. We compare these approaches, as well as investigate the impact of various ways of organizing the computing process on application performance. The paper describes the algorithms and their software implementations. A technique for performing experimental studies on the performance of developed applications has been developed, which compares the proposed parallel algorithms on a representative set of test cases. It is shown that all the approaches considered lead to an acceleration of computations in comparison with the sequential variant. The best results are provided by the use of atomic variables for the interaction of threads. As computing platforms for conducting experiments, modern high-performance computing systems were used.
Paper version not known (
Free)
Published Version
Talk to us
Join us for a 30 min session where you can share your feedback and ask us any queries you have