Система визуализации результатов MPI-тестирования коммуникационной среды вычислительных комплексов
Разработка нового подхода к выяснению архитектуры программ, основанного на синтетических тестах. Реализация визуализатора тестов, проведение сравнение эффективности разработанного визуализатора с существующими средствами трехмерной визуализации.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | статья |
Язык | русский |
Дата добавления | 26.04.2019 |
Размер файла | 625,6 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
4
Московский государственный университет им. М.В. Ломоносова
Россия, 119991 ГСП-1, Москва, Ленинские горы, 1
Система визуализации результатов MPI-тестирования коммуникационной среды вычислительных комплексов
П.С. Банников,
А.Н. Сальников
Эффективная программа, как правило, учитывает архитектуру того вычислителя, для которого она была написана. Но выяснение архитектуры может стать проблемой для разработчика программ. Зачастую документация к вычислителю позволяет получить лишь поверхностные, недостаточные знания. В связи с этим в статье предлагаются подход к выяснению архитектуры, основанный на синтетических тестах, а также система визуализации результатов тестов. Система визуализации ориентирована на наглядное отображение данных в режиме реального времени, обладает полезным дополнительным функционалом. Проводится также сравнение реализованной системы с существующими аналогами.
Ключевые слова: суперкомпьютер; тесты коммуникаций; MPI; визуализация.
1. ВведениеРабота проводится при поддержке грантов РФФИ: 11-07-00756-а, 11-07-00614-а и госконтрактов по ФЦП "Научные и научно-педаго-гические кадры инновационной России": П873,П1258, П1317.
© Банников П. С., Сальников А. Н., 2012
Программа, написанная для многопроцессорных систем, имеет наибольшую эффективность, если она учитывает архитектуру этих систем. Топология - физическое расположение процессоров и коммуникаций между ними - является определяющим фактором эффективности лишь теоретически, поскольку коммуникации предполагаются идеальными. Считается, что время передачи сообщения от одного процессора до другого полностью определяется лишь количеством коммутаторов, а время передачи сообщения между двумя соседними коммутаторами - постоянное. Для повышения производительности программ, использующих интерфейс передачи сообщений (MPI), рекомендуется учитывать пропускную способность самих каналов коммуникационной среды. Для этой цели проводится серия синтетических MPI-тестов: заданное число процессоров обменивается сообщениями с переменной длиной. В качестве параметров тесты принимают число процессоров, шаг длины сообщений и тип передачи (широковещательные или "каждый каждому"). Проводится несколько таких тестов для усреднения результатов. Результатом одного тестирования является набор трехмерных матриц: матрицы усредненных значений задержек (время передачи одного MPI-сообщения) и матрица дисперсий (разброса) значений задержек. В качестве средних значений выбираются средние арифметические, минимумы и/или медианы значений по нескольким тестам.
Полученные трехмерные матрицы дают некоторые практические знания о реальном состоянии коммуникационной системы того многопроцессорного комплекса, на котором будет запускаться программа, и, как следствие, появляется возможность восстановления "истинной" (с точки зрения тестов) топологии комплекса. С помощью результатов тестирования можно провести более точное распределение вычислений по процессорам, что, как правило, ведет к увеличению производительности программы.
Однако просмотр результатов тестирования сложен для восприятия. При малом числе процессоров возможен анализ плоской структуры трехмерных матриц (например, последовательная запись двумерных матриц для каждой длины сообщения в файл). Ясно, что данный метод имеет пределы применимости. Поэтому при больших размерностях на помощь приходят автоматизированные средства визуализации данных. Перед визуализатором - системой визуализации - встают следующие проблемы:
1) работа с массивными данными;
2) отображение двух матриц одновременно. Этот пункт подразумевает одновременную визуализацию матрицы задержек и матрицы дисперсий одинаковой размерности либо отображение сравнения матриц одинаковой размерности;
3) визуализация в режиме реального времени.
В статье предлагается реализация такого визуализатора, а также проводится сравнение эффективности разработанного визуализатора с существующими средствами трехмерной визуализации.
архитектура программа тест трехмерный визуализатор
2. Подход к реализации
Представленные во введении проблемы, в сущности, сводятся к двум основным задачам: оптимизация количества потребляемой памяти и ускорение визуализации.
2.1 Потребление памяти
Как правило, входные файлы читаются один раз целиком в оперативную память. Этот способ обладает важным достоинством: значительное увеличение скорости работы по сравнению с чтением малых порций данных из файла по запросу. Однако ограниченность размера оперативной памяти - серьезный недостаток способа. Например, файл, содержащий трехмерную матрицу размерами 2048х2048х100 (3.2 ГБ) - достаточно провести тест со 100 различными длинами сообщений на суперкомпьютере с 2048 процессорами - не поместится в 2 ГБ оперативной памяти.
С учетом специфики задачи предлагается следующий способ: вместо массива чисел с двойной точностью в оперативной памяти хранится массив целых неотрицательных чисел, задающих цвета соответствующих ячеек матрицы. Из трех компонент RGB-представления нужно лишь две, что позволяет ещё больше экономить память. В итоге размер потребляемой памяти уменьшается в 4 раза по сравнению с первоначальным. Однако данные из входного файла "потеряны", и при надобности приходится читать весь файл заново. В защиту данного способа выступает то, что ситуация повторного чтения возникает относительно редко, т. е. время жизни "цветовых" данных достаточно велико. Главным достоинством способа является возможность использования видеокарт с небольшим количеством оперативной памяти, что расширяет пределы применимости всей системы визуализации.
2.2 Скорость и качество визуализации
В рассматриваемой задаче визуализируемый объем имеет регулярную структуру.
Каждая клетка исходной трехмерной матрицы отображается "точкой" - полупрозрачным объектом некоторой заданной формы и размеров.
Для качественной визуализации трехмерных матриц используется алгоритм рэйкастинга для объемов [1]. Выделяют следующие шаги алгоритма рэйкастинга:
1) "бросание" луча;
2) сэмплирование;
3) раскраска;
4) комбинирование цветов.
Заранее предполагается, что визуализируемый объем представлен в виде набора точек в узлах некоторой решетки и разбит на слои, выровненные по самому объему.
На шаге (1) лучи испускаются из позиции так называемой "камеры" до каждого пикселя конечного изображения. Ищется пересечение луча с примитивом, ограничивающим визуализируемый объем. Если пересечение найдено, ищется пересечение луча с ближайшим к "камере" слоем объема. Точка пересечения необязательно совпадает с какой-либо точкой слоя, поэтому на шаге (2) определяются точки объема, ближайшие к точке пересечения. На шаге (3) точке пересечения присваивается цвет, получившийся в результате интерполяции цветов ближайших соседей этой точки. Если используются источники света, на цвет раскрашиваемой точки оказывается влияние посредством выбранной локальной модели освещения. После этого луч движется дальше, и ищется его пересечение со следующим слоем объема. На шаге (4) цвета всех точек пересечения одного луча и слоёв объема комбинируются в порядке от ближней точки к дальней на основе определенной функции смешивания; вовлекается полупрозрачность элементов объема.
К недостаткам алгоритма рэйкастинга относится медленная скорость его работы из-за необходимости частого поиска пересечений. Для уменьшения количества поисков пересечений рекомендуется использование ускоряющих структур, таких как регулярная трехмерная решётка. В рассматриваемой задаче сам визуализируемый объём выступает в роли ускоряющей структуры.
Достоинством алгоритма рэйкастинга, помимо высокого качества конечного изображения, является возможность совершенно независимо проводить расчеты для каждого пикселя изображения. Отсюда следует естественный параллелизм алгоритма, что широко используется в реализации системы визуализации.
Для осуществления прохождения луча по трехмерной решетке используется алгоритм 3DDA [2]. К достоинствам алгоритма относятся численная устойчивость, относительная простота реализации и достаточно высокая скорость работы. Под численной устойчивостью понимается, главным образом, корректная работа алгоритма даже в тех случаях, когда аппаратура выдает исключения для чисел вещественной арифметики с плавающей запятой.
3. Реализация визуализатора
Система визуализации разрабатывается как расширение функциональности кроссплатформенной программы Network Viewer 2 [3], входящей в проект PARUS [4], на трехмерный случай. Здесь и далее система визуализации будет именоваться как "Network Viewer (2)".
Входные файлы с матрицами могут быть одного из двух форматов: бинарные (на основе NetCDF) и текстовые (структурированные определенным образом).
Трехмерные матрицы визуализируются в виде трехмерных решеток, в узлах которых расположены "точки". Значение в клетке матрицы однозначно соответствует прозрачности "точки". Поддерживаются несколько форм "точек":
*куб как естественно получающаяся при визуализации трехмерной решетки фигура;
*шар с постоянной интенсивностью;
*шар с интенсивностью, максимальной в центре и квадратично убывающей к границе.
Для обеспечения отображения в реальном времени привлекаются ресурсы графических процессоров (GPU). Визуализация на GPU проходит с использованием технологии OpenCL. Однако если видеокарта не поддерживает указанную технологию, визуализация автоматически переходит на центральный процессор (CPU). В этом случае задействуется многоядерность CPU с помощью технологии OpenMP. Таким образом, результаты визуализации можно просмотреть практически на любом персональном компьютере.
Network Viewer 2 работает в одном из следующих режимов:
*Визуализация только матрицы задержек.
Матрицей задержек назовем матрицу, содержащую усредненные значения задержек при передаче MPI сообщений.
Значения в клетках матрицы отображаются на спектр одного цвета.
*Визуализация матрицы задержек и матрицы дисперсий (с одинаковыми размерностями).
Матрицей дисперсий назовем матрицу, содержащую величины отклонений от средних значений.
Матрицы комбинируются друг с другом и визуализируются как одна матрица. Величины задержек отображаются на спектр одного цвета, величины отклонений - на спектр другого цвета. Если величина отклонения превышает величину задержки, данная клетка рисуется только цветом для отклонений.
*Визуализация сравнения двух матриц задержек одинаковых размерностей.
Опять же матрицы комбинируются друг с другом и визуализируются как одна. Положительная разность значений в клетках матриц с одинаковыми индексами отображается на спектр одного цвета, отрицательная - на спектр другого цвета.
Для обеспечения наглядности визуализации разработан дополнительный функционал:
*перемещение, поворот, масштабирование трехмерного объекта;
*установка так называемой "камеры" как внутри, так и за границами трехмерного объекта;
*отображение в цветовое пространство только тех значений, которые попали в заданный пользователем диапазон;
*визуализация оболочек трехмерного объема задаваемой толщины (также служит для ускорения визуализации);
*построение объемов "2-го уровня": визуализация только тех клеток матрицы, которые попали в заданный пользователем диапазон значений.
Реализация на GPU выполнена через "ядра". В спецификации OpenCL "ядро" определяется как функция, работающая на устройстве (в данном случае - на видеокарте). На текущий момент написано 6 "ядер": 3 "ядра" для реализации построения оболочек объема и 3 "ядра" для реализации построения объемов "2-го уровня". Каждое из трех "ядер" соответствует определенной форме "точки" объёма. Большое количество "ядер" объясняется намерением минимизировать количество команд потока управления (например, ветвлений), которые отрицательно сказываются на производительности. За выбор и запуск "ядер" отвечает центральный процессор.
Реализация на CPU выполнена через функции языка С++ с использованием технологии OpenMP. Количество функций совпадает с количеством OpenCL-"ядер" по той же причине, что и в реализации на GPU. Выбор активной функции осуществляется через указатели на функции.
4. Сравнение результатов с аналогами
Проводится сравнение качества получившегося изображения и скорости работы программы Network Viewer 2 с существующими кросс-платформенными программами, разработанными для схожих целей: ParaView 3.14.1 [5] и VisIt 2.4.2 [6]. Данные программы являются свободно распространяемыми, с открытым исходным кодом; обладают богатым функционалом для обеспечения наглядности визуализации, а также работают в режиме реального времени.
Машина, на которой проводились сравнения, имеет 4-ядерный процессор AMD Phenom II с 2 ГБ оперативной памяти и видеокарту NVIDIA GeForce GT240 с 1 ГБ памяти.
Всем трем программам на вход подавался NetCDF-файл, содержащий матрицу с результатами теста коммуникационной среды суперкомпьютера "Ломоносов", установленного в МГУ им. М.В.Ломоносова. В тесте производился обмен MPI-сообщениями между 500 процессорами со 100 различными длинами сообщений (матрица 500х500х100).
Результаты работы программ Network Viewer, ParaView и VisIt представлены на рис. 1, 2 и 3 соответственно:
Рис. 1. "Ломоносов", 500х500х100. Network Viewer
Рис. 2. "Ломоносов", 500х500х100. ParaView 3.14.1
Рис. 3. "Ломоносов", 500х500х100. VisIt 2.4.2
VisIt 2.4.2 распознавал во входном файле не трёхмерную структуру, а двумерную, поэтому для корректности результатов сравнения было решено воспользоваться встроенными средствами самого VisIt 2.4.2: к двумерной структуре применялось геометрическое преобразование "Extrude" размером 100. В частности, это объясняет ярко выраженные полосы на рис. 3. Результаты работы программ сведены в следующую таблицу:
Таблица 1. Результаты теста с суперкомпьютера "Ломоносов", 500х500х100
ParaView 3.14.1 |
VisIt 2.4.2 |
Network Viewer 2 |
|||
OpenMP |
OpenCL |
||||
Отрисовка (1 раз), FPS |
1 |
60 |
11 |
37 |
|
Отрисовка, FPS |
31 |
67 |
105 |
||
Подготовка (1 раз), с |
8 |
? |
1.39 |
||
Подготовка, с |
0.28 |
? |
0.68 |
||
Потребление памяти, МБ |
200+ |
? |
50+ |
Программы запускались на одних и тех же данных несколько раз подряд, и было замечено, что время первого запуска сильно отличается от времени последующих запусков. VisIt 2.4.2 не предоставляет данных о потреблении памяти и времени считывания входного файла, поэтому в таблице стоят символы "?".
Как видно из таблицы, Network Viewer 2 требует в 4 раза меньше памяти, чем ParaView 3.14.1, а визуализация на GPU в Network Viewer 2 проходит в 1.7-3 раза быстрее, чем в ParaView и VisIt. Реализация на CPU, однако, уступает обеим программам в 3-6 раз.
В следующем тесте программам ParaView и VisIt на вход подавался один NetCDF-файл, содержащий матрицу с результатами теста коммуникационной среды суперкомпьютера "Европа". Размеры матрицы - 2048х2048х25. Программе Network Viewer 2 на вход подавалось два файла такого размера и задавался режим работы "матрица задержек + матрица дисперсий". Ввиду того, что ни ParaView 3.14.1, ни VisIt 2.4.2 не поддерживают режим комбинирования матриц, представлен только результат работы Network Viewer 2 на рис. 4.
Рис. 4. "Европа", 2048х2048х25. Network Viewer 2
При работе в VisIt 2.4.2 снова было применено преобразование "Extrude" размером 25.
Результаты работы программ сведены в следующую таблицу:
Таблица 2. Результаты теста с суперкомпьютера "Европа", 2048х2048х25
ParaView 3.14.1 |
VisIt 2.4.2 |
Network Viewer 2 |
|||
OpenMP |
OpenCL |
||||
Отрисовка (1 раз), FPS |
- |
37 |
6.5 |
5 |
|
Отрисовка, FPS |
- |
64 |
135 |
||
Подготовка (1 раз), с |
19 |
? |
27.2 |
||
Подготовка, с |
15 |
? |
25.7 |
||
Потребление памяти, МБ |
800+ |
? |
200+ |
Комментарии те же, что и к первой таблице, с той лишь разницей, что в ParaView 3.14.1 не удалось получить изображение. Возросшее число кадров в секунду при реализации на OpenCL (135 против 105) объясняется малой "толщиной" матрицы в направлении взгляда.
Заключение
Рассмотрена важная проблема, встающая перед разработчиками программ для многопроцессорных систем: оптимальное распределение вычислений для получения максимальной эффективности программ. Для этих целей была создана система тестирования коммуникационных сред многопроцессорных комплексов, основанная на передаче MPI-сообщений. Анализ результатов тестирования затруднен, когда задано относительно большое число процессоров и различных длин сообщений. На помощь приходят средства автоматической визуализации результатов.
В статье предложена реализация системы визуализации, работающей в режиме реального времени и обеспечивающей наглядность отображаемых данных. Проведено сравнение работы созданного визуализатора с работой существующих программ: ParaView и VisIt. Показано, что реализация, опирающаяся на работу с видеокартой, превосходит по скорости и ParaView, и VisIt. Однако визуализация на центральном процессоре уступает обеим программам. Также стоит отметить, что самое качественное (с позиции зрительного восприятия) изображение генерируется ParaView, но изображение, полученное ParaView, уступает по наглядности (уровню детализированности) изображениям, полученным VisIt и Network Viewer 2.
Список литературы
1.Pawasauskas J. "Volume Visualization With Ray Casting" // CS 563 - Advanced Topics in Computer Graphics, 1997. [Электронный ресурс]. URL:
http://web.cs.wpi.edu/~matt/courses/cs563/talks/powwie/p1/ray-cast.htm
2.Алгоритм 3DDA // [Электронный ресурс]. URL: http://www.ray-tracing.ru/articles182.html
3.Сальников А.Н., Андреев Д.Ю., Лебедев Д.Ю. Инструментальная система для анализа характеристик коммуникационной среды вычислительного кластера на основе функций стандарта MPI // Вестн. Моск. ун-та. 2012. №1. С.39-48.
4.Salnikov A.N. PARUS: A Parallel Programming Framework for Heterogeneous Multiprocessor Systems // Lecture Notes in Computer Science. 2006. Vol.4192. P.408-409.
5.ParaView // [Электронный ресурс]. URL: http://www.paraview.org/paraview/project/about.html.
6.VisIt // [Электронный ресурс]. URL: https://wci.llnl.gov/codes/visit/about.html.
Размещено на Allbest.ru
...Подобные документы
Подбор игрового движка и описание его основных характеристик. Разработка структуры, алгоритма и интерфейса программы. Проектирование иерархии классов. Выделение типового приема визуализации. Тестирование правильности работы программного обеспечения.
курсовая работа [3,1 M], добавлен 19.01.2017Анализ средств визуализации. Разработка программы-расширения для визуализатора инженерных и научных расчетов Compaq Array Visualizer на языке Фортран. Оценка экономической эффективности и конкурентоспособности созданного программного обеспечения на рынке.
дипломная работа [335,4 K], добавлен 10.09.2010Особенности разработки и реализации модулей двухмерной и трехмерной визуализации. Основные задачи трехмерного модуля управления. Анализ функций модуля управления ParamColorDrawer. Характерные особенности схемы функционирования программного средства.
реферат [2,2 M], добавлен 07.03.2012Назначение и возможности разработанного приложения для визуализации картографической информации. Хранимые процедуры, функции и триггеры. Взаимодействие пользователя с приложением. Описание экранной формы по работе с картами. Визуализация карты в MS Visio.
курсовая работа [2,1 M], добавлен 14.08.2014Принципы программирования и приоритеты использования библиотеки OреnG1, ее архитектура, описание математического аппарата и проекции. Разработка процедуры визуализации трехмерной сцены, подсистемы управлениями событиями и руководства пользователя.
курсовая работа [1,0 M], добавлен 26.06.2011Возможности библиотеки OpenGL, создание матрицы и эффекта тумана. Разработка процедуры визуализации трехмерной модели "Корабль", интерфейса пользователя и подсистемы управления событиями. Логическая структура и функциональная декомпозиция проекта.
курсовая работа [507,2 K], добавлен 02.07.2011Программирование с использованием библиотеки ОреnGl: возможности, работа с матрицами, синтаксист команд, освещение, спецификация материалов, создание эффекта тумана. Разработка визуализации трехмерной сцены. Информационное и программное обеспечение.
курсовая работа [39,2 K], добавлен 23.06.2011Программирование приложения с использованием библиотеки OpenGL и функции для рисования геометрических объектов. Разработка процедуры визуализации трехмерной сцены и интерфейса пользователя. Логическая структура и функциональная декомпозиция проекта.
курсовая работа [1,1 M], добавлен 23.06.2011Рассмотрение истории развития психологического тестирования. Практическая разработка программы по обработке результатов опросов: составление математической, функциональной моделей решения задачи, соответствующие им блок-схемы и программная реализация.
курсовая работа [714,9 K], добавлен 25.01.2010Основы метода Монте-Карло и его применение. Разработка и тестирование программного модуля для ПК BRAND, позволяющего строить двумерные и трехмерные изображения для сложных геометрических объектов для обеспечения контроля за качеством сборки конструкций.
дипломная работа [5,2 M], добавлен 10.10.2015Анализ предметной области. Сравнительный анализ систем визуализации трёхмерных объектов. Обоснование выбора среды программирования. Разработка базы данных. Архитектура программного продукта. Алгоритм шифрования Blowfish с обратной связью по шифр-тексту.
дипломная работа [5,3 M], добавлен 22.11.2015Функциональные возможности библиотеки OpenGL. Разработка процедуры визуализации трехмерной сцены, интерфейса пользователя и подсистемы управления событиями с целью создания приложения для построения динамического изображения 3D-модели объекта "Самолет".
курсовая работа [1,7 M], добавлен 28.06.2011Изучение возможностей программы "Поверхность": рассмотрение методов построения изолиний, диаграмм Вороного, профиля, интерполированного графика, трехмерной визуализации, поверхностей методом триангуляции Делоне и проведение расчета зон прямой видимости.
краткое изложение [3,6 M], добавлен 11.02.2010Основы программирования с использованием библиотеки OpenGL. Приложение для построения динамического изображения модели объекта "Батискаф": разработка процедуры визуализации трехмерной схемы, интерфейса пользователя и подсистемы управления событиями.
курсовая работа [1,4 M], добавлен 26.06.2011Построение систем визуализации моделей раскроя и их модификации. Анализ способов и методов создания универсального хранилища данных, на примере построения динамически формируемого информационного файла. Графические возможностей языка высокого уровня С.
научная работа [355,5 K], добавлен 06.03.2009Освоение методов манипуляции параметрами SVG изображений при помощи JavaScript и возможности по анимации в современных браузерах. Интерфейс и структура модуля визуализации данных. Определение аномальных данных и их определение, реализованные типы.
курсовая работа [1,7 M], добавлен 20.05.2014Архитектура и история создания операционной системы Android. Язык программирования Java. Выбор средства для реализации Android приложения. Программная реализация Android приложения. Проведение тестирования разработанного программного обеспечения.
курсовая работа [167,8 K], добавлен 18.01.2017Разработка и программная реализация сайта и базы данных, наполнение базы данных тестовой информацией о товарах. Инструментальные средства создания сайта. Организация тестирования сайта, модуль визуализации интерфейса. Создание запросов в базе данных SQL.
курсовая работа [1,4 M], добавлен 24.12.2012Значение геоинформационных систем для ведения государственного земельного кадастра. Разработка трехмерной визуализации в 3D ландшафта с. Тугулук; природные и социально-экономические условия. Сравнительный анализ ГИС-продуктов MapInfo и VerticalMapper.
дипломная работа [3,0 M], добавлен 13.06.2014Универсальная подпрограмма по записи элементов и атрибутов из таблицы XML в различные массивы, в зависимости от раздела. Алгоритм трехмерной визуализации. Классы разбора таблицы XML по элементам и атрибутам. Алгоритмы работы с двухмерными объектами.
дипломная работа [425,9 K], добавлен 06.03.2013