Магистр ДонНТУ Алтынпара Евгений Олегович

Алтынпара Евгений Олегович
Факультет: Вычислительной техники и информатики
Специальность: Программное обеспечение автоматизированных систем
Тема выпускной работы: Решение задач большой размерности на кластере
Руководитель: доцент, к.т.н. Ладыженский Юрий Валентинович

Реферат по теме выпускной работы
Введение:

С развитием науки стало возможным решение сверхсложных вычислительных задач. Они решаются на суперкомпьютерах.

Создаются вычислительные кластеры, которые позволяют решать сложные задачи намного быстрее, используя преимущества параллельной обработки данных. В связи с этим, исследования в сфере параллельных вычислений сегодня становятся приоритетным направлением. Одной из наиболее интересных направлений становится обработка больших объемов видеоданных и изображений на кластере.

Удачной платформой для исследований и разработки систем по обработке видеоизображений является Microsoft Compute Cluster Server 2003. Она является лидером среди вычислительных кластеров под Microsoft Windows и уже сейчас достаточно сильно совместима, готова к интеграции c вычислительными кластерами с основой на Linux.

Тема обработки видеоизображений в данный момент только начинает исследоваться, исследования в данной сфере есть, но еще очень много  конкретных задач по обработке видеоизображений (как оптимально обработать большой объем данных, какой оптимальный алгоритм по распознаванию объектов в системах на базе вычислительных кластеров и прочее).

Для решения этих задач необходимо разрабатывать специальные алгоритмы, организовывать специальные вычислительные сети (кластеры), разрабатывать интерфейсы по обработке и передаче сообщений между узлами кластера. Такие исследования могут внести неоценимый вклад в развитие науки и техники.

Актуальность темы:

В настоящее время эффективность использования обработки больших объемов видеоизображений в хозяйственных и исследовательских целях не вызывает сомнений, а спектр задач, решаемых с применением результатов обработки видеоизображений, непрерывно расширяется.

Цель проекта - создание новой, инновационной системы по обработке больших объемов данных (видеоизображений) на кластере Microsoft Compute Cluster Server 2003 с использованием библиотеки компьютерного зрения OpenCV.
       Разрабатываемая программная система может служить для обработки различных видеоданных, применима к множеству актуальных задач по обработке видео (наблюдение за движением автомобилей, слежение в аэропортах, развлекательных центрах, анализ видеозаписей спортивных матчей и прочее).

Предполагаемая научная новизна:

Научная новизна разрабатываемой системы заключается  в том, что в данный момент это первая в мире система которая используется вычислительный кластер Microsoft Compute Cluster Server 2003 для обработки больших объемов видеоданных с помощью библиотеки компьютерного зрения OpenCV.

На основании изученных материалов, поиска материалов в интернет было выявлено, что большая часть параллельных вычислений по обработке видеоизображений разрабатываются с нуля, что не всегда эффективно как по части алгоритмов, так и по времени затрачиваемому на разработку алгоритмов.

В сфере распознавания видеоизображений в данный момент достаточно мало исследований. Это связанно с их сложностью, а также трудоемкостью в исследованиях.

Перспективной средой для реализации системы параллельной обработки видеоинформации является MS Compute Cluster Server[1]. MS CCS 2003 представляет собой интегрированную платформу для поддержки высокопроизводительных вычислений на кластерных системах. MS CCS состоит из операционной системы Windows Server 2003 и Microsoft Compute Cluster Pack (CCP) набора интерфейсов, утилит и инфраструктуры управления. Встроенным средством программирования на MS CCS кластере является MS Message Passing Interface (MPI)  — один из стандартов разработки приложений HPC[2].

Для обработки видеоизображений будет использоваться библиотека компьютерного зрения OpenCV, библиотека с открытым кодом, большинство алгоритмов эффективны, и хорошо описаны. Такая комбинация (Microsoft Compute Cluster Server 2003 и OpenCV) позволит добиться больших результатов, и получить симбиоз из 2 хорошо зарекомендовавших технологий.

Практическая ценность результатов работы:

Разрабатываемая программная среда позволит быстро и эффективно разрабатывать приложения по обработке и анализу видеоизображений большого размера на вычислительном кластере Microsoft Compute Cluster Server.

Исследования по теме:

Программная среда включает подкомпоненты и разработанную структуру для параллельных расчетов. В состав входят:

  • для написания кода с использованием технологий параллельного программирования используется интерфейс от Microsoft – Message Passing Interface (MPI).
  • для обработки видеоизображений и манипуляции видеоданными используется библиотека компьютерного зрения OpenCV.
  • среда для разработки программного комплекса Microsoft Visual Studio 2008.
  • для отладки приложений использующих MPI используется встроенный в Microsoft Visual Studio 2008 debugger.

Для обработки видеоизображений в разрабатываемой программной среде используется библиотека OpenCV[3]. Это библиотека алгоритмов компьютерного зрения, обработки изображений и численных алгоритмов общего назначения.

Основными операциями для вычислений в разрабатываемой системе являются - базовые операции над многомерными числовыми массивами, базовые функции 2D графики, базовые операции над изображениями (фильтрация, геометрические преобразования, преобразование цветовых пространств и др.), анализ изображений (выбор отличительных признаков, морфология, поиск контуров, гистограммы), анализ движения, слежение за объектами, обнаружение объектов. Разрабатываемая система должна принимать на вход большие объемы видеоданных, обрабатывать их параллельно, используя методы библиотеки OpenCV. Текущая реализация OpenCV насчитывает около 500 готовых методов, из указанных выше операций для вычислений реализованы почти все. На вход системы подаются несколько изображений, либо данные в виде видео файла.

В зависимости от того как будут подаваться данные, можно построить различную параллельную архитектуру программной системы. Для данной программной системы на рис.1 видеоданные разбиваются на части и подаются на каждый Node порционно, расчеты ведутся параллельно. Каждый элемент MS Windows Computer Cluster Server включает себя библиотеку MPI и графическую библиотеку OpenCV. Для управления обменом данных между узлами разрабатывается управляющий узел, он следит за каждым узлом, анализирует, разбивает и передает блоки данных.

В схеме конвейерной программной среды на рис. 2, видеоданные передаются между вычислительными узлами по мере необходимости вычислений. Ускорение происходит за счет того, что на всех вычислительных узлах всегда выполняются вычисления. Управляющий узел следит за загруженностью каждого узла, в случае необходимости данных i-м узлом – ждет поступление этих данных, отправляет их i-тому узлу.

Рисунок 1 - Архитектура программной системы с параллельным распределением данных для расчетов.
Рисунок 1 - Архитектура программной системы с параллельным распределением данных для расчетов.

Рисунок 2 - Архитектура программной системы с конвейерной передачей данных
Рисунок 2 - Архитектура программной системы с конвейерной передачей данных

За время разработки программной среды наработана база позволяющая строить сложные системы по обработке видеоданных на кластере Microsoft. Рассмотрим более подробно структуру системе на примере программного кода.


Рисунок 3 - Структура программной системы.
Рисунок 3 - Структура программной системы.

Рассмотрим систему более подробно. При старте происходит инициализация интерфейса MPI с помощью функции  MPI_Init(&argc,&argv).

Далее необходимо узнать количество вычисляющих узлов (доступных процессоров) на кластере – узнаем с помощью метода MPI_Comm_size(MPI_COMM_WORLD,&iCount) в который первый элемент передается глобальный коммуникатор интерфейса MPI(коммуникатор по умолчанию, содержит информацию о класстере на котором запущен и его элементах), второй параметр - переменная которая на выходе получит количество узлов.

Для определения текущего номера узла используется метод MPI_Comm_rank(MPI_COMM_WORLD,&iRank). Следует помнить, что узлы на кластере нумеруются не по порядку расположения в сети, а в случайном порядке при запуске кластера. Зная номер текущего узла мы можем определить к какому типу относиться он в иерархии нашей системы. При разработке програмного комплекса узел с №0 определяется управляющим узлом, а все узлы с номер большим 0 считаются исполняющими узлами.

Необходимо оговорить 2 момента, структуру управляющего узла и структуру исполняющего узла. В системе есть 1 управляющий узел и n-1 исполяющих узлов (n – число узлов составляющих кластер).

Управляющий узел. При работе всей системы очень важным является равномерное распределение нагрузки между всеми элементами вычислительного кластера. Поэтому вначале в управляющем блоке происходит расчет распределения нагрузки между узлами.

Процесс расчета наргрузки выглядит следующим образом:

  • Количество вычислительных узлов n
  • Количество изображений m
  • Среднее распределение m/n

Пример:

20 вычислительных узлов.
Количество изображенный 1000 шт.
Среднее распределение = 1000/5 = 200 шт.на 1 узел
Пример данного распределения, мы можем наблюдать на анимации ниже.
Рисунок 4 - Схема распределения нагрузки между 5 узлами (количество кадров: 6, повторов: 5, продолжительность кадров: 200мс)
Рисунок 4 - Схема распределения нагрузки между 5 узлами (количество кадров: 6, повторов: 5, продолжительность кадров: 200мс)

Если количество видеоизображений не кратно количеству узлов, то оставшиеся изображения распределяются по 1 штуке между узлами начиная с 0 узла.

После анализа нагрузки управляюший узел выполняет считывание нужной для обработки информации(видеоизображений).После этого происходит рассылка данных между исполняющими узлами. Для этой операции используется метод int MPI_Send(void *buf, int count, MPI_Datatype type, int dest, int tag, MPI_Comm comm), где:

  • buf — адрес буфера памяти, в котором располагаются данные отправляемого сообщения;
  • count — количество элементов данных в сообщении;
  • type — тип элементов данных пересылаемого сообщения;
  • dest — ранг процесса, которому отправляется сообщение;
  • tag — значение-тег, используемое для идентификации сообщения;
  • comm — коммуникатор, в рамках которого выполняется передача данных.

Исполняющий узел. Базируется на выполнении 5 функций. Расчет времени выполнения, прием данных, сохранение данных на локальный жесткий диск, считывание данных и их фильтрация.

Обзор результатов:

В результате проведенных исследований были следующие экспериментальные данные - продолжительность сохранения и фильтрации 1 изображения. Вследствие чего можно рассчитать временные характеристики для вычислительного кластера. Мы получим значения «идеальные», в учет не берется время передачи данных по сети, время на отправку данных, различные задержки при расчетах и при передаче данных. Мы получили величину 0,7секунд - для 1 компьютера, для нескольких - умножаем на количество вычисляющих узлов. Таким образом, получим теоретические данные для разрабатываемой системы.


Фильтрация 1 изображения 0.7 сек
Количество изображений 10000 Шт
Количество процессоров (1.86) 1 Шт
Количество процессоров (1.86) 10 Шт
Количество процессоров (1.86) 20 Шт
Время на фильтрацию для 1 116.66 Мин
Время на фильтрацию для 10 11.66 Мин
Время на фильтрацию для 20 5.83 Мин
Таблица 1 - Теоретические результаты расчетов в исследуемой системе.

Зависимость времени расчетов от количества вычислительных узлов при фильтрации изображений. На графике мы видим линейный рост, в реальности график изменит свою форму. Это связано с тем что время затрачиваемое на передачу данных на каждый узел, будет разным и при больших объемах данных, будет колебаться время передачи.


Рисунок 5. График зависимости времени расчета от количества узлов на кластере Microsoft Compute Cluster Server 2003
Рисунок 4 - График зависимости времени расчета от количества узлов на кластере Microsoft Compute Cluster Server 2003

Более точные результаты будут получены при дальнейшей разработке и исследовании системы, расчета характеристик экспериментальным путем.

Выводы:

В разрабатываемой системе необходимы язык описания задач, разбиение системы на подзадачи, монитор управления обработкой изображения, оптимизация распределения нагрузки между узлами.

Благодаря архитектуре, основанной на MS CCS и графической библиотеке OpenCV, разрабатываемая среда снижает временные затраты на обработку видео данных и имеет широкие функциональные возможности.

К периоду защиты магистерской работы мы сможем получить теоретическую базу, практические результаты по исследованию системы, а также функционирующий программный продукт, готовый для запуска на Microsoft Compute Cluster Server 2003.

Список литературы:
  1. Microsoft Windows Compute Cluster Server 2003. Руководство рецензента [Публикация Microsoft] – май 2006г. - http://www.microsoft.com
  2. Технологии - MPI: The Message Passing Interface – Parallel.ru
  3. OpenCV библиотека алгоритмов компьютерного зрения - Wikipedia
  4. Seinstra F.J., Koelma D. Accurate Performance Models of Parallel Low Level Image Processing Operations Based on a Simple Abstract Machine /University of Amsterdam - The Netherlands, 2005 (https://eprints.kfupm.edu.sa).
  5. Bradski G.R., Kaehler A. Learning OpenCV - Computer Vision with the OpenCV Library /United States of America Sebastopol, 2008 (http://oreilly.com/), 1-141c.
  6. CS101 «Введение в методы программирования», CS105 «Дискретная математика», CS220 «Архитектура ЭВМ», CS225 «Операционные системы», CS304 «Методы вычислений» (http://www.winhpc.ru/).
  7. Гергель В.П. Теория и практика параллельных вычислений, http://www.intuit.ru/
  8. Nicolescu C., Jonker P. Parallel low-level image processing on a distributed-memory system /Delft University of Technology - The Netherlands, 2000 (www.springerlink.com/).
  9. Nicolescu C., Jonker P. A data and task parallel image processing environment /Delft University of Technology - The Netherlands, 2000 (www.citeseerx.ist.psu.edu/)
  10. Интернет ресурс с технической документацией и поддержкой библиотеки OpenCV http://sourceforge.net/projects/opencvlibrary/