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

УДК 004.046

П.Д. Щербаков

магистрант,

кафедра «Электронно-вычислительные машины и системы», ФГБОУ ВО «Волгоградский государственный технический университет»

В.Н. Аралин

магистрант,

кафедра «Электронно-вычислительные машины и системы», ФГБОУ ВО «Волгоградский государственный технический университет»

С.И. Кирносенко

канд. техн. наук, ст. преподаватель, кафедра «Электронно-вычислительные машины и системы», ФГБОУ ВО «Волгоградский государственный технический университет»

АНАЛИЗ СОВРЕМЕННЫХ ТЕХНОЛОГИЙ ДЛЯ СОЗДАНИЯ ДИНАМИЧЕСКОЙ СИСТЕМЫ, ОБЛАДАЮЩЕЙ ГРАФИЧЕСКОЙ СРЕДОЙ, ОБРАБАТЫВАЮЩЕЙ БОЛЬШОЙ ОБЪЕМ

ЭКСПЕРИМЕНТАЛЬНЫХ ДАННЫХ

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

Ключевые слова: параллельные вычисления, производительность, GPU.

P.D. Scherbakov, Volgograd State Technical University

V.N. Aralin, Volgograd State Technical University

S.I. Kirnosenko, Volgograd State Technical University

АNALYSIS TECHNOLOGY TO CREATE A DYNAMIC SYSTEM HAVING A GRAPHICAL ENVIRONMENT,

HANDLE LARGE AMOUNT OF EXPERIMENTAL DATA

Abstract. Based on the analysis of modern graphics API and the specific system in which they are used, the analysis of components in order to select the optimal variant for implementation. A concept of creating a software product and its further modernization. Identifies key tasks that you need to build such a program. The specificity of distributed computing, considered nuances to improve speed and accuracy of the system.

Keywords: parallel computing, performance, GPU.

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

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

1. КОНЦЕПЦИЯ СОЗДАНИЯ СИСТЕМЫ

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

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

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

1. обработка и вычисление большого объема данных,

2. отображение вычисленных данных,

3. соблюдение точности в ходе вычисления.

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

После реализации программы на платформе Windows следующими шагами по улучшению качества и работоспособности программы будет модернизация кода с целью создания кроссплатформенности продукта и разделения программы на несколько модулей - для возможности работы по сети, разместив серверную часть на мощном вычислительном компьютере, а клиентскую часть - даже на низкопроизводительном ПК, с подключением к серверу по сети.

2. ОБРАБОТКА ДАННЫХ

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

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

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

3. СРАВНИТЕЛЬНЫЙ АНАЛИЗ ТЕХНОЛОГИЙ ДЛЯ ГРАФИЧЕСКОГО ПРЕДСТАВЛЕНИЯ

ДАНЫХ

Заложенные внутри графического процессора механизмы параллелизма позволяют использовать видеокарту как эффективный параллельный вычислитель. На данный момент широкое распространение имеют два графических прикладных программных интерфейса, в силу своей актуальности и постоянного развития: OpenGL - компании Silicon Graphics и DirectX -корпорации Microsoft. Оба API предоставляют доступ к функциям аппаратного ускорения 3D-графики.

DirectX - набор API функций, разработанных специально для платформы Windows, представляющий низкоуровневый интерфейс к аппаратным средствам компьютера. Этот набор функций не требует привязки к аппаратным средствам и, как следствие, он не требует создания аппаратно-зависимого программного кода. DirectX состоит из нескольких компонентов:

• irectX Graphics (отвечает за управление графическим выводом данных в 2D и 3D формате);

• DirectInput (поддержка устройств ввода-вывода);

• DirectPlay (работа с сетью);

• DirectSound (взаимодействие со звуковой картой);

• DirectShow (работа с цифровой фото и видео техникой).

DirectX API основывается на технологии COM - компонентная модель объектов. Не имея стандартизированного бинарного представления, классы на чистом C++ не могут быть использованы из других языков программирования. В частности, каждый компилятор использует свой индивидуальный метод декорирования имён. COM же позволяет работать с объектно-ориентированной концепцией из любого языка, его поддерживающего [2]. Доступ к COM-объектам осуществляется по интерфейсам, причём их может быть несколько в одном таком объекте. Механизм интерфейсов обладает обратной совместимостью, это значит что программы, использующие объекты DirectX8, будут функционировать и с DirectX9.

Рисунок 1 - Механизм взаимодействия приложения с видеокартой

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

В Direct3D 10 произошло весомое количество изменений. К сожалению, Direct3D 10 перестал быть обратно совместимым с Direct3D 9, т.е. теперь для переноса программы на новый API необходимо переписать весь код, относящийся к рендерингу.

OpenGL - это спецификация, разрабатываемая некоммерческой организацией Khronos Group, являющаяся кроссплатформенным программным интерфейсом для написания приложений, использующих двумерную и трёхмерную компьютерную графику. Основная причина появ-

ления OpenGL - необходимость создания универсального интерфейса для создания графических приложений, независимо от аппаратного обеспечения и операционной системы (в отличие от DirectX). OpenGL может быть использован из любого языка, который поддерживает вызов функций native библиотек.

По сути, OpenGL представляет собой перечень функций и их поведение, который постоянно дополняется производителями оборудования и независимыми разработчиками. Самые стабильные и полезные дополнения со временем фиксируются, тем самым создавая новую версию спецификации. Сумма OpenGL 1.1 и новых расширений дает нам OpenGL 3.2. Получается, для программы может быть вообще безразлична версия OpenGL, главное - это какие доступны расширения. Версия OpenGL - есть просто способ указать, какой набор расширений гарантированно поддерживается. Это и является одним из самых важных различий с DirectX, т.к. он, по сути, фиксирован в рамках одной версии, а изменения или дополнения происходят при следующем релизе.

Microsoft провели серьезную модернизацию своего API в DirectX10. Помимо добавления современного дизайна, произошел отказ от рендеринга без подключения шейдеров и реализован переход к абсолютно новой модели работы с драйвером. Конкретнее говоря, реализация DirectX10 теперь может состоять не только из kernel-space часть, а и user-space, что, в свою очередь, будет экономить время на переключение между ними. В отличие от разработки Microsoft, OpenGL была разведена на две части: user-space и kernel-space. Нельзя не заметить, что DirectX модернизируется на преимущества своего прямого конкурента. Но OpenGL тоже не стоит на месте, начиная с третьей версии появилась deprecation model, а устаревший рендеринг фиксированных функций, а также основанный на glBegin и glEnd, были удалены, как и многие другие неактуальные вещи.

С точки зрения разработки, удобнее разобраться сперва с DirectX, причина тому проста - Microsoft предоставляет очень качественный SDK, а затем разобраться с OpenGL (это будет очень просто после Direct3D). К сожалению, такой вещи, как SDK, для OpenGL нет, поэтому осваивать с нуля будет сложнее.

4. ТОЧНОСТЬ РЕАЛИЗАЦИИ ПРОГРАММЫ

Один из наиболее эффективных методов для упрощения работы с графическим представлением расчетных данных является Алгоритм Дугласа-Пекера. Это алгоритм, позволяющий уменьшить число точек кривой, аппроксимированной большей серией точек.

Основная идея алгоритма состоит в том, чтобы по данной ломаной, в нашем случае состоящий из нескольких сотен тысяч точек, аппроксимирующей кривую, построить ломаную с гораздо меньшим числом точек, при используемом масштабе отображения и разрешении экрана компьютера. Алгоритм определяет расхождение, которое вычисляется по максимальному расстоянию между исходной и упрощённой кривыми [6]. Упрощенная кривая является подмножеством точек, которые выбираются из исходной кривой. Реализуется данный алгоритм как рекурсивно, так и итерационно.

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

Для удобства поддержания актуальности исследуемых процессов рекомендуется реализовать интерфейс для подключения новых расчётных функций через DLL-интерфейс. Его задача - определять добавленный файл в папку с программой и работать напрямую с функциями, заложенными в нём, путем передачи данных через каналы ввода-вывода. Такой механизм не только упростит работу пользователя, но и повышает быстродействие программного продукта.

о

а

1

с

2

3

4

Рисунок 2 - Сглаживание кусочно-линейной кривой алгоритмом Дугласа-Пекера

ЗАКЛЮЧЕНИЕ

В заключение приведем некоторые отличительные особенности данной работы:

- выявлены основные проблемы, связанные с методикой проведения расчетов, разработаны методы, способствующие решить эти трудности путем распределения вычислений;

- рассмотрены основные API для реализации графической оболочки программы, выявлены кардинальные различия и преимущества этих технологий;

- использованы различные механизмы повешения точности отображения и расчета данных программой;

- выделены дальнейшие перспективы развития и модернизации программного продукта.

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

Список литературы:

1. DirectX Software Development Kit [Электронный ресурс], 2016. - Режим доступа: https://www.microsoft.com/en-us/download/confirmation.aspx? id=6812.

2. Сравнение OpenGL и Direct3D [Электронный ресурс], 2016. - Режим доступа: http://habrahabr.ru/post/79257/.

3. Urs Ramer, «An iterative procedure for the polygonal approximation of plane curves» // Computer Graphics and Image Processing. - 1972. - 1 (3). - P. 244-256.

4. Попов А.А. DirectX 10 - это просто. Программируем графику на С++. - СПб.: БХВ-Петербург, 2008. - 464 с.

5. Райт, Ричард-мл., Липчак, Бенджамин. OpenGL. Суперкнига. - М.: Вильямс, 2006. -

1040 с.

6. Алгоритм Рамера - Дугласа - Пекера [Электронный ресурс] // Википедия: свободная энцикл. - Электрон. дан. - [Б. м.], 2016. - Режим доступа: https://ru.wikipedia.org/wiki/ Алгоритм_Рамера_-_Дугласа_-_Пекера.