Аннотация 2
Введение 5
1 Теоретические сведения 8
1.1 Характеристика объекта исследования 8
1.2 Математическая модель описания процессов 13
2 Проектирование алгоритмов и их реализация 19
2.1 Разработка последовательного алгоритма 19
2.2 Реализация разработанного алгоритма 20
2.3 Разработка алгоритма с методом распараллеливания OpenMP 26
2.4 Реализация распараллеливания последовательного алгоритма 28
3 Сравнительный анализ алгоритмов 31
3.1 Тестирование реализованных алгоритмов 31
3.2 Анализ скорости выполнения программ 33
3.3 Анализ нагрузки системы при выполнении программ 36
3.4 Анализ ускорения выполнения программ по Закону Амдала 42
Заключение 46
Список используемых источников 48
В современном мире одним из важных разделов физики является внутренняя баллистика, которая стала инструментом в разработке и реализации различных систем вооружения. Данный раздел способен ответить на ряд решающих вопросов при создании нового продукта, а также при усовершенствовании старого. Решение каждой задачи при рассмотрении модернизаций и создании продуктов требует мощных математических расчетов, занимающих большое количество времени. Для повышения точности при проведении подсчетов и ускорения данного процесса, проводятся различные исследования по созданию программных продуктов для математических расчетов.
Во внутренней баллистике существуют различные схемы, требующие подробного изучения. Для рассмотрения, в данной выпускной квалификационной работе была выбрана одна из них - эстафетная схема метания. Данная схема интересна своим решением в вопросе повышения скорости метаемого элемента, по которому заряд патрона делится на две или три части. При разделении заряда на две части патрон называют бинаром, на три части - тринаром.
В простом варианте рассмотрения данной схемы с бинаром, используют пластмассовую гильзу с воспламенителем, в которую засыпают основную часть пороха, а сверху устанавливают картонную диафрагму, разделяющую на две части патрон, где во вторую часть засыпают дополнительную часть пороха из того же или другого вещества.
При данном подходе необходимо проводить множество различных расчетов, связанных с варьированием величиной частей пороха, расположением диафрагмы, материалами метаемых элементов и многих других параметров.
Для улучшения работы над данными расчетами проводится множество исследований в разработке приложений, решающих ряд вопросов с точностью и затраченным временем. На данный момент, существуют разработанные на различных языках программирования приложения, использующие разные виды технологий.
Большую часть существующих разработанных алгоритмов занимают последовательные, однако благодаря тенденциям использования всех возможных ресурсов персональных компьютеров, можно заметить, что актуальным также становится и алгоритм с многопоточным программированием, с использованием распараллеливания.
Существующая на данный момент модель эстафетной схемы в последовательной реализации хорошо выполняет поставленные перед ней задачи, а также затрачивает относительно малое время для расчетов. Для уменьшения затраченного времени также были проведены исследования с использованием технологии OpenCL на языке C, которая предназначена для распараллеливания алгоритма посредством графического и центрального процессоров. Большие плюсы в данной технологии, как и в технологии Cuda для C/C++, что все математические расчеты, загружающие центральный процессор, как элементарные задачи уходят на графический, благодаря чему CPU может выполнять весь остальной алгоритм. Благодаря такому распределению, мы получаем как минимум 2 параллели с мощными ресурсами для вычислений.
В данной выпускной квалификационной работе будут рассматриваться последовательный алгоритм на языке C++ и алгоритм с использованием технологии OpenMP, что позволит решить существующую проблему вычислений при использовании эстафетной схемы в баллистике, не затрагивая графический процессор.
Объект исследования - математические расчеты, необходимые для получения выходных данных при различных входных параметрах.
Предметом исследования являются - параллельные алгоритмы, повышающее скорость вычислений.
Цель исследования - получение более высокой скорости обработки входных параметров и получение выходных данных при математическом расчете.
Задачи исследования:
• рассмотреть теоретические сведения по исследуемому объекту;
• рассмотреть существующие решения проблемы и провести их анализ;
• спроектировать последовательный алгоритм для расчетов;
• спроектировать алгоритм с технологией распараллеливания для расчетов;
• провести анализ эффективности двух алгоритмов;
В первом разделе данной выпускной работы будут рассмотрены все теоретические аспекты, связанные с математическими расчетами и моделью эстафетной схемы. Во втором разделе будет приведено описание работы над алгоритмами. Заключительным звеном будет являться сравнение двух алгоритмов (последовательного и с использованием OpenMP) и выявление их положительных и отрицательных сторон.
В ходе выполнения выпускной квалификационной работы на тему «Моделирование систем эстафетной схемы с использованием распараллеленного алгоритма» были рассмотрены теоретические основы существующей математической модели эстафетной схемы, описывающие процессы и взаимосвязи физических явлений во время движения метаемого элемента в стволе и его разделение на основную и дополнительные части.
Во время проведенных исследований, были изучены материалы, связанные с математическими расчетами, позволяющими получить значения выходных данных по исходным параметрам при использовании эстафетной схемы.
Цель исследования, связанная с ускорением вычислительной работы алгоритма над входными и выходными значениями математической модели, была достигнута благодаря выполнению всех поставленных в данной работе задач.
Таким образом, были рассмотрены существующие решения проблемы вычислительного характера, такие как время, затрачиваемое на выполнение алгоритма, и необходимые для него используемые ресурсы.
По существующей математической модели, были разработаны и реализованы алгоритмы с последовательным и параллельным выполнением расчетов. Спроектированные программные реализации были написаны на языке программирования высокого уровня C++ в кроссплатформенной свободной интегрированной среде разработки приложений NetBeans IDE. Для работы с полученными проектами и анализа их эффективности была выбрана операционная система Ubuntu MATE, а также использованы вспомогательные инструменты ОС - Nmon.
Для разработки программы с распараллеливанием последовательного алгоритма была выбрана технология OpenMP, которая не задействует графический процессор, как это было в других научных исследованиях с целью ускорения работы над расчетами. Этот выбор технологии предоставляет возможность повысить скорость вычислительных процессов на ЭВМ, не имеющих мощных ресурсов GPU.
Как показал анализ эффективности двух разработанных программ, даже без возможности подключения технологий с использованием графических процессоров, можно увеличить скорость выполнения расчетов приблизительно в 2,1 раза, согласно Закону Амдала, и уменьшить нагрузку на CPU более чем в 1,5 раза, используя достаточно простую технологию распараллеливания OpenMP.
По полученным расчетам, было доказано, что повышения производительности алгоритма будет зависеть от доли последовательного программного кода и количества используемых процессоров.
Таким образом, в данной выпускной квалификационной работе были отображены все основные моменты математической модели метания элемента по эстафетной схеме, а также разработаны и программно реализованы алгоритмы с последовательным и параллельным выполнением вычислений.
Благодаря проведенным тестам и расчетам по Закону Амдала, была доказана эффективность работы распараллеленного алгоритма для моделируемой системы эстафетной схемы.
1. Scott Meyers Effective Modern C++: 42 Specific Ways to Improve Your Use of C++11 and C++14.
2. Scott Meyers. Effective Modern C++. O’Reilly, 2015.MPI: A Message Passing Interface Standard Version 2.2. [Электронный ресурс]: Режим доступа: http://www.mpi-forum.org/docs/mpi-2.2/mpi22-report.pdf.
3. Wilkinson B., Allen M. Parallel programming techniques and applications using networked workstations and parallel computers. - Pearson Education, 2005. - p. 468.
4. Антонов А. С. Параллельное программирование с использованием технологии OpenMP: учебное пособие / А. С. Антонов. - М.: Изд-во МГУ, 2012. - 77 с.
5. Березкин Б. И., Березкин С. Б. Начальный курс C и C++. Москва «Диалог-Мифи», 2005 г.
6. Вилюнов В. Н. Газовая динамика двухфазного течения в соплах. Издательство Томского университета. 1986 г. URL : http://vital.lib.tsu.ru/vital/access/ manager/Repository/vtls:000095140
7. Воеводин В. В. Вычислительная математика и структура алгоритмов. - Москва: Издательство МГУ, 2006. - 112 с.
8. Гергель В.П. Теория и практика параллельных вычислений - Национальный Открытый Университет "ИНТУИТ" - 2016 - ISBN: 978-594774-645-7 - Текст электронный // ЭБС Лань — URL: https://e.lanbook.com/book/100527
9. Гринько Г. В., Сафронов А.И. Внутренняя баллистика ствольной системы эстафетной схемы // Материалы III научно-практической всероссийской конференции (школы-семинара) молодых ученых, 2017. pp. 132-134.
10. Дягтерев М. Е. Высокоскоростной патрон с разделенным пороховым зарядом «Искра-М». Российский оружейный журнал «Калашников» Оружие, боеприпасы, снаряжение, №3, Санкт- Петербург: ООО «Азимут» 2011, с.11
11. Дягтерев М. Е. Высокоскоростные пулевые патроны «Искра-М» для гладкого ствола». Российский оружейный журнал «Калашников» Оружие, боеприпасы, снаряжение, №4, Санкт- Петербург: ООО «Азимут» 2014, с.62-67.
12. Малявко А. А. Параллельное программирование на основе технологий OpenMP, MPI, CUDA. - Новосибирск: Изд-во НГТУ, 2015. - 116 с. ISBN 978-5-7782-2614-2.
13. Малявко А. А. Параллельное программирование на основе технологий OpenMP, MPI, CUDA. 2-е изд., испр. и доп. Учебное пособие для академического бакалавриата М. : Издательство Юрайт, 2019-129-Высшее образование-978-5-534-11827-8: - Текст электронный // ЭБС Юрайт - https://biblio-online.ru/book/parallelnoe-programmirovanie-na-osnove-tehnologiy- openmp-mpi-cuda-446247
14. Миллер Р., Боксер Л. Последовательные и параллельные алгоритмы. - М.: Бином. Лаборатория знаний, 2006. - с. 406
15. Немнюгин С., Стесик О. Параллельное программирование для многопроцессорных вычислительных систем - СПб.: БХВ-Петербург, 2002.
...