Выпуск 3 - 2014
(499) 755 50 99 http://mir-nauki.com
Мир Науки
научный интернет-журнал
УДК 681.3.06
Ветчинов Ярослав Олегович
ФГБОУ ВПО «Комсомольский-на-Амуре государственный технический университет»
Россия, Комсомольск-на-Амуре Кафедра «Прикладная математика и информатика»
Магистр
E-Mail: [email protected]
Исследование и программная реализация параллельных алгоритмов сглаживания полигональных поверхностей
Аннотация. В работе рассмотрен процесс распараллеливания последовательного алгоритма сглаживания полигональных поверхностей Ду-Сабина. Рассмотрен способ распараллеливания «Метод ветвей и границ», а также реализация его при помощи технологии OpenMP.
Ключевые слова: алгоритм Ду-Сабина; OpenMP; метод ветвей и границ.
1
02KMN314
Выпуск 3 - 2014 (499) 755 50 99
http://mir-nauki.com
Основные определения
Полигональные объекты- объекты, основанные на сетке полигонов, из которых состоит поверхность этих объектов.
Полигональной поверхностью называется набор выпуклых многоугольников и прямолинейных отрезков, таких, что каждый отрезок принадлежит по крайней мере одному выпуклому многоугольнику, но не более чем двум выпуклым многоугольникам.
Сглаживание - технология, используемая для устранения эффекта «зубчатости», возникающего на краях одновременно выводимого на экран множества отдельных друг от друга плоских, или объёмных изображений.
Алгоритм Ду-Сабина
Рассмотрим алгоритм Ду-Сабина. В схеме Ду-Сабина вершина, окруженная n гранями, разбивается на n вершин, каждая из которых соответствует одной грани (см. рисунок 1).
контрольная ячейка М1 ячейка М2 конечная
ячейка М0 поверхность
Рис. 1. Последовательное деление по схеме Ду-Сабина
Схема Ду-Сабина, обрабатывая многогранник, создает для каждой грани с n вершинами Vj , где 1 < j < n, новый набор вершин Wi , где 1 < i < n, используя следующее уравнение:
ячейка М2
2
W.
i = 2 VJ • а
j
j = i
(1)
где вес aij задается следующей системой уравнений:
n + 5
а,,- = <
3 + 2 cos( 2% ( i - j ) / n) 4n
i = J
i * j
(2)
Новый многогранник получается, соединением вершин новых граней Fe, Ff и Fv так, как показано на рисунке 2.
2
02KMN314
Мир Науки Выпуск 3 - 2014
(499) 755 50 99 http://mir-nauki.com
Рис. 2. Три грани (показаны штриховой линией) Fe, Ff Fv
Для распараллеливания данных вычислений целесообразно использовать метод ветвей и границ. Существует несколько подходов к распараллеливанию методом ветвей и границ, в данной работе мы следовали следующему подходу. Выделенный процессор, называемый мастер-процессором, управляет равномерным распределением задач по остальным процессорам, называемых рабочими. При этом он может как производить ветвления так и управлять остальными процессорами. Каждый рабочий процессор получает подзадачу или набор подзадач. После выполнения определенного количества ветвлений или получения определенного количества подзадач, процессор посылает сообщение мастеру, что предел достигнут. Мастер находит свободный процессор и пересылает ему часть подзадач. В случае если свободного процессора нет, задачи хранятся на мастере до тех пор, пока один из процессоров не сообщит об окончании решения всех своих подзадач.
В алгоритме Ду-Сабина был распараллелен процесс вычисления новых граней. Для этого была применена технология OpenMP. OpenMP-современная, постоянно дополняющаяся библиотека языка C/C++, позволяющая довольно быстро получить из последовательного алгоритма параллельный. В программе технология OpenMP представляет собой набор различных директив препроцессора #pragma omp. В своей основе данная технология как раз реализует метод ветвей и границ. Программа начинается с последовательной области - сначала работает один процесс (нить), при входе в параллельную область порождается ещё некоторое число процессов, между которыми в дальнейшем распределяются части кода. По завершении параллельной области все нити, кроме одной (нити-мастера), завершаются, и начинается последовательная область. В программе может быть любое количество параллельных и последовательных областей. Кроме того, параллельные области могут быть также вложенными друг в друга. В отличие от полноценных процессов, порождение нитей является относительно быстрой операцией, поэтому частые порождения и завершения нитей не так сильно влияют на время выполнения программы.
В результате выполненной работы была получена параллельная программа, реализующая алгоритм сглаживания Ду-Сабина. Программа была протестирована на 2-ядерном компьютере, запускалась с разным числом рабочих потоков. Результаты работы представлены на рисунке 3.
3
02KMN314
Выпуск 3 - 2014
(499) 755 50 99 http://mir-nauki.com
Мир Науки
Метод параллельных ветвей. Алгоритм Ду-
Сабина
250 200 S ® 150 01 S S 100 (0 X 50 0
£
ту
¥
f
Номер сглаживания
1 поток 0,001298 0,006535 0,057531 0,74319 12,433414 217,475699
2 потока 0,001766 0,006495 0,05878 0,748212 12,403665 205,2211539
3 потока 0,001794 0,006785 0,059343 0,745284 12,411027 196,011902
4 потока 0,001621 0,006573 0,05928 0,744609 10,944538 172,434683
Рис. 3. Зависимость скорости работы программы от числа потоков
При сравнении результатов работы программы для 1 и для 4 потоков, видим, что программа получила ускорение приблизительно в 1,25 раза.
4
02KMN314
Мир Науки Выпуск 3 - 2014
(499) 755 50 99 http://mir-nauki.com
ЛИТЕРАТУРА
1. Шикин, Е.В. Компьютерная графика. Полигональные модели / Е. В. Шикин, А. В. Боресков. — М.: «ДИАЛОГ-МИФИ», 2000. - 464 с.
2. Антонов, А.С. Параллельное программирование с использованием технологии OpenMP /А.С.Антонов. —М.:МГУ.-2009. - 78 с.
5
02KMN314
Выпуск 3 - 2014
(499) 755 50 99 http://mir-nauki.com
Мир Науки
Yaroslav Vetchinov
Komsomolsk-on-Amur state technical University Russia, Komsomolsk-on-Amur E-Mail: [email protected]
Research and software implementation of parallel algorithms
for smoothing polygonal surfaces
Abstract. In this paper we consider the process for parallelizing sequential algorithm of smoothing polygonal surfaces Doo-Sabin. A method of parallelization "branch and bound method," as well as the implementation of it with with OpenMP.
Keywords: Doo-Sabin algorithm; OpenMP; branch and bound method.
REFERENCES
1. Shikin, E.V. Komp'juternaja grafika. Poligonal'nye modeli / E. V. Shikin, A. V. Boreskov. — M.: «DIALOG-MIFI», 2000. - 464 s.
2. Antonov, A.S. Parallel'noe programmirovanie s ispol'zovaniem tehnologii OpenMP /A.S.Antonov. —M.:MGU.-2009. - 78 s.
6
02KMN314