ВВЕДЕНИЕ 5
1 ОБЗОР СОВРЕМЕННОГО СОСТОЯНИЯ ТЕХНОЛОГИЙ ПОСТРОЕНИЯ
РАСПРЕДЕЛЁННЫХ ВЫЧИСЛИТЕЛЬНЫХ СИСТЕМ 7
1.1 Обзор технологий построения распределённых вычислительных систем 7
1.2 Обзор моделей коммуникации в распределённых вычислительных системах 8
1.3 Анализ модели акторов 11
1.4 Анализ модели взаимодействующих последовательных процессов 15
1.5 Сравнительный анализ и выделение недостатков моделей распределенных
вычислительных систем 17
1.6 Выводы и результаты по разделу 1 19
2 ПРОЕКТИРОВАНИЕ РАСПРЕДЕЛЕННОЙ ВЫЧИСЛИТЕЛЬНОЙ СИСТЕМЫ ДЛЯ
ОБРАБОТКИ ВИДЕОПОТОКА 20
2.1 Прогнозирование производительности распределённой вычислительной системы для обработки видеопотока 20
2.2 Проектирование системы обработки видеопотока в распределённой вычислительной системе 23
2.2.1 Проектирование подсистемы балансировки нагрузки 24
2.2.2 Проектирование подсистемы упорядоченного слияния 25
2.3 Выводы и результаты по разделу 2 25
3 РЕАЛИЗАЦИЯ РАСПРЕДЕЛЁННОЙ ВЫЧИСЛИТЕЛЬНОЙ СИСТЕМЫ ДЛЯ
ОБРАБОТКИ ВИДЕОПОТОКА 26
3.1 Выбор библиотеки для обработки видеопотока 26
3.2 Выбор языка программирования для реализации распределённой вычислительной
системы 29
3.3 Разработка алгоритма обработки видеопотока в распределённой вычислительной
системе 31
3.4 Разработка алгоритма балансировки нагрузки 32
3.5 Разработка алгоритма упорядоченного слияния 35
3.6 Анализ эффективности разработанной распределённой вычислительной системы
обработки видеопотока 36
3.7 Выводы и результаты по разделу 3 39
ЗАКЛЮЧЕНИЕ 40
СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ 41
Приложения должны быть в работе, но в настоящий момент отсутствуют.
В данной работе рассматривается применение распределённой архитектуры для обработки видеопотока, с целью увеличения эффективности.
Под видеопотоком понимается последовательность отдельных кадров или изображений, которые расположены в определённом порядке. В ряде случаев, эти кадры можно обрабатывать независимо друг от друга. То есть, задачу можно свести к обработке изображений с сохранением порядка результатов обработки.
Алгоритмы обработки изображений получают на вход изображение — фотографию или кадр видео, а на выходе дают новое изображение или набор характеристик, связанных со входным изображением. Обычно, системы обработки изображений рассматривают изображения как двумерные массивы, и применяют к ним заранее заданные методы обработки.
В последнее время растёт необходимость в обработке видеопотоков. Беспилотные автомобили и летательные аппараты анализируют видеопотоки с камер для получения сведений об окружающей обстановке и ориентации в пространстве.
В системах автоматического управления транспортными средствами, повышены требования ко времени отклика и к надёжности системы: слишком высокая задержка может привести к аварии. В то же время, является высоким и количество обрабатываемой информации.
Появляется необходимость в создании систем с крайне высокой производительностью. Для этого применяют параллельные и распределенные архитектуры.
Одной из моделей, применяемых для описания параллельных и распределенных систем, является модель акторов. Акторы — это универсальные вычислительные примитивы. Они могут выполнять вычисления, и обмениваться сообщениями и создавать новых акторов. Каждый актор может существовать на отдельном компьютере, и наоборот, несколько акторов могут выполняться на одном и том же. Таким образом, система акторов может быть распределена по компьютерной сети.
Целью данной работы работы является повышение эффективности обработки видеопотока. Для достижения поставленной цели необходимо решить следующие задачи:
1. Выбрать технологию построения распределённой вычислительной системы.
2. Спроектировать распределённую вычислительную систему для обработки видеопотока.
3. Реализовать распределённую вычислительную систему для обработки видеопотока.
4. Провести анализ эффективности реализованной распределённой вычислительной системы для обработки видеопотока
В основной части работы были выполнены следующие задачи, необходимые для достижения поставленной цели:
1. Были рассмотрены и сравнены различные технологии для создания распределённых систем. Для построения системы была выбрана модель акторов.
2. Была спроектирована распределённая вычислительная система для обработки видеопотока, были выделены три подсистемы: балансировки нагрузки, обработки и упорядоченного слияния.
3. Спроектированная система была реализована на основе библиотеки Akka, которая реализует модель акторов, и библиотеки JavaCV (обёртка над OpenCV) для обработки изображений. Были рассмотрены алгоритмы балансировки нагрузки и реализован алгоритм упорядоченного слияния.
4. Был проведён анализ эффективности реализованной распределённой вычислительной системы. При более сложных преобразованиях, система показала больший прирост производительности, который соответствовал закону Амдала. При простых преобразованиях, ускорение производительности было меньше и соответствовало универсальному закону масштабируемости. Стоит также отметить, что в условиях различной производительности узлов, наиболее эффективным алгоритмом балансировки нагрузки оказался динамический.
Разработка в перспективе может применяться в системах управления беспилотными автомобилями или, с некоторыми доработками, в системах индексации баз данных изображений.
1. ГОСТ 2.105 - 95. Общие требования к текстовым документам [Текст]. - М.: Изд-во стандартов, 1996. - 29 с. - (Единая система конструкторской документации).
2. ГОСТ 7.1-2003. Библиографическая запись. Библиографическое описание документа.
3. ГОСТ 7.32-2001. Отчет о научно-исследовательской работе. Структура и правила оформления.
4. ГОСТ 7.82-2001. Библиографическая запись. Библиографическое описание электронных ресурсов.
5. ГОСТ 19.701 - 90. Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения (ИСО 5807-85) [Текст]. Введен 1992-01-01. - М.: Изд-во стандартов, 1992. - 14 с. - (Единая система программной документации).
Научная и методическая литература
6. Гонсалес Р. Цифровая обработка изображений / Р. Гонсалес, Р. Вудс. - Москва : Техносфера, 2012. - 1104 с.
7. Алпатов А. Н. Цветков В. Я. Проблемы распределенных систем // Перспективы науки и образования. - 2014. - no. 6 (12).
8. Таненбаум Э. Распределённые системы. Принципы и парадигмы / Э. Таненбаум, М. Ван Стеен. - СПб.: Питер, 2003. - 877 с.
9. М.С. Косяков. Введение в распределенные вычисления. -
СанктПетербург: НИУ ИТМО, 2014. - 155 с.
10. Высокопроизводительные вычисления для многоядерных
многопроцессорных систем / Гергель В.П. - Издательство Нижегородского госуниверситета, 2011 - 421c.
11. Реализация сценария «следуй за мной» беспилотной системы управления автомобилем-роботом на основе данных лидара и видеодатчика / Артёмкин В.В., Лукша С.С., Маликов А.Ю. // Вестник Рязанского государственного радиотехнического университета. - 2013. - №4-3(46).
12. Одерски, М. Scala. Профессиональное программирование / Одерски М., Спун Л., Веннерс Б. - 3-е изд. - СПб.: Изд-во Питер, 2018. - 688 с.
13. Джошуа Блох. Java. Эффективное программирование - Москва: Лори: Java «из первых рук», 2014. - 310 с.
14. Радченко Г.И. Распределенные вычислительные системы / Г.И. Радченко. - Челябинск : Фотохудожник, 2012. - 184 с.
Электронные ресурсы
15. Robert H. Loop Recognition in C++/Java/Go/Scala // Отчет результатов тестирования, опубликованный Google. [Электронный ресурс]. - Режим доступа: https://days2011.scala-lang.org/sites/days2011/files/ws3-1-Hundt.pdf(дата обращения: 20.05.2019).
16. Akka Documentation [Электронный ресурс]. - Режим доступа: https://doc.akka.io/. - (дата обращения: 20.05.2019).
17. Concurrency in Erlang &Scala: The Actor Model [Электронный ресурс]. - Режим доступа: https://rocketeer.be/articles/concurrency-in-erlang-scala/. - (дата обращения: 20.05.2019).
18. The Scala Programming Language [Электронный ресурс]. - Режим доступа: https://www.scala-lang.org. - (дата обращения: 20.05.2019).
19. OpenCV [Электронный ресурс]. - Режим доступа: https://opencv.org/. - (дата обращения: 20.05.2019).
20. JavaCV [Электронный ресурс]. - Режим доступа: https://github.com/bytedeco/javacv. - (дата обращения: 20.05.2019).
21. JavaCV 1.5 API [Электронный ресурс]. - Режим доступа: http://bytedeco.org/javacv/apidocs/. - (дата обращения: 20.05.2019).
22. AForge.NET[Электронный ресурс]. - Режим доступа: http://www.aforgenet.com/. - (дата обращения: 20.05.2019).
23. Трутнев Д.Р. Архитектуры информационных систем. Основы проектирования [Электронный ресурс]: Учебное пособие. - СПб.: НИУ ИТМО, 2012. - 66 с. - Режим доступа: http://window.edu.ru/resource/174/78174. - (дата обращения: 20.05.2019).
24. Parallel Programming Models [Электронный ресурс]: - Luis Moura e Silva and Rajkumar Buyya - Режим доступа: http://www.buyya.com/cluster/v2chap1.pdf. - (дата обращения: 20.05.2019).
25. Машинное зрение: понятия, задачи и области применения [Электронный ресурс]. - Электрон. дан. - Режим доступа: http://rusnauka.com/25_SSN_2009/Informatica/51050.doc.htm. - (дата обращения: 20.05.2019).
26. Системы компьютерного зрения: современные задачи и методы [Электронный ресурс]. - Электрон. дан. - Режим доступа: http://controleng.ru/innovatsii/sistemy-komp-yuternogo-zreniya-sovremenny- ezadachi-metody/. - (дата обращения: 20.05.2019).
Литература на иностранных языках
27. Gunther Neil J., Subramanyam Shanti, Parvu Stefan. A Methodology for Optimizing Multithreaded System Scalability on Multi-cores // CoRR. — 2011. — Vol. abs/1105.4301.
28. King, A. J. M. Communicating Sequential Processes in High Performance Computing. - 2015.
29. D. Kashyap, J. Viradiya, A Survey of Various Load Balancing Algorithms in Cloud Computing // International Journal of Scientific & Technology Research, Vol. 3, Iss. 11. - 2014.
30. G. M. Amdahl. Validity of the single processor approach to achieving large scale computing capabilities. // Proc. AFIPS Conference, Reston, VA, vol. 30, pp. 483-485, April 1967.
31. Stroustrup B. The C++ Programming Language / B. Stroustrup Addison- Wesley - 4th Edition - 2013 - 1346 c.