Научная статья на тему 'Параллельный алгоритм одного метода восстановления табличных данных'

Параллельный алгоритм одного метода восстановления табличных данных Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
186
67
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ПАРАЛЛЕЛЬНЫЙ АЛГОРИТМ / ВОССТАНОВЛЕНИЕ ТАБЛИЧНЫХ ДАННЫХ / ПАРАЛЛЕЛЬНЫЕ ВЫЧИСЛИТЕЛЬНЫЕ СИСТЕМЫ / АППРОКСИМАЦИЯ / ГРАФИЧЕСКИЙ ПРОЦЕССОР / КОМПЬЮТЕРНАЯ ГРАФИКА

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Масальских Александр Владимирович

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

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Масальских Александр Владимирович

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Параллельный алгоритм одного метода восстановления табличных данных»

Известия Тульского государственного университета Естественные науки. 2014. Вып. 3. С. 167-177 Прикладная математика и информатика

УДК 519.6

Параллельный алгоритм одного метода восстановления табличных данных

А. В. Масальских

Аннотация. Рассмотрен подход распараллеливания одного алгоритма восстановления табличных векторнозначных данных для многопроцессорных вычислительных систем с общей и распределенной памятью. Параллельный алгоритм для систем с общей памятью не накладывает никаких дополнительных расходов при распараллеливании. Параллельный алгоритм для систем с распределенной памятью предполагает передачу дополнительного объема исходных данных, оценка которого приведена в статье. Полученный алгоритм апробирован на некоторых задачах компьютерной графики: передискретизации цифровых изображений, реконструкции параметрических поверхностей, сглаживанию карты высот на системах с симметричной мультипроцессорностью и на графическом процессоре видеокарты. Численный эксперимент показал корректность работы параллельного алгоритма и подтвердил ожидаемый прирост в скорости вычислений по сравнению с последовательным алгоритмом.

Ключевые слова: параллельный алгоритм, восстановление табличных данных, параллельные вычислительные системы, аппроксимация, графический процессор, компьютерная графика.

1. Введение

Цифровая обработка информации посредством ЭВМ во многих задачах предполагает вычислительные алгоритмы, оперирующие табличными данными. В виде табличных данных может храниться разнообразная оцифрованная информация, при обработке которой возникает необходимость восстановления значений в точках, которые отсутствуют в исходной таблице. Отдельными примерами хранения информации таким образом являются цифровые растровые изображения, текстуры, трехмерные объекты и т.д. Информация о таких объектах может быть представлена в виде двумерной таблицы векторов некоторой размерности. Для решения задачи восстановления часто применяются методы приближения сплайнами [1,2]. Однако с ростом размерности векторов растет трудоемкость алгоритмов

восстановления на базе сплайнов. Актуальной проблемной областью является построение вычислительных алгоритмов для параллельных вычислительных систем. Применение сплайн-методов в распределенных алгоритмах [3] сопряжено с определенными вычислительными сложностями.

В работах Додонова Н.Ю. и Жука В.В. [4-8] рассмотрен подход к построению агрегатов восстановления, на базе которого построен конкретный алгоритм восстановления табличных данных [9, 10], не требующий предварительных расчетов. В данной работе предлагается подход для распараллеливания алгоритма восстановления табличных данных, изложенного в работе [9]. Применяемый подход не добавляет никаких дополнительных накладных расходов для параллельных вычислительных систем с общей памятью по сравнению с последовательным алгоритмом. Для параллельных вычислительных систем с распределенной памятью (например, кластеров) также получен эффективный параллельный алгоритм, не требующий существенных дополнительных вычислений. Параллельный алгоритм апробирован на некоторых задачах компьютерной графики.

2. Распараллеливание алгоритма метода восстановления

табличных данных

В статье [9] построен агрегат восстановления векторнозначного отображения, заданного таблично. Постановка задачи состоит в следующем. Пусть A = {fk,m} — матрица известных значений отображения f : R2 ^ Rp в узлах Bk,m = {uk = khi,v, = mh2} прямоугольной сетки в R2. Ставится задача построить отображение g(u,v) требуемой гладкости, близкое к f. В прикладном смысле исходными данными будет двумерный массив (с индексами, соответствующими сетке Bk,m) векторов. Размерность векторов исходного массива равняется p и подбирается исходя из конкретной решаемой прикладной задачи. Агрегат, восстанавливающий значение векторнозначного отображения в одной точке пространства параметров, имеет следующий вид [9, с.238]:

V(f; u, v) = f (ki,mi)¥(ki - 1, mi - 1) - f (ki, m-2)$(ki - 1, m2)--f (k2, mi)¥(k2, mi - 1) + f (k2, m-2)$(k2, m,2)] +

m2-i

+ Y1 f (ki,m + 1) - 7(kbm)]¥(ki - 1, m) +

m=mi m2-i

+ Y1 f (k2,m) - f(k2,m + 1)]¥(k2,m) +

m=mi

к2-1

+ ^ [7+ 1, Ш1) - /(Л, Ф(Л, Ш1 - 1) +

к=кт

к2-1

+ 2 7(Л' Ш2) - 7(Л + 1, Ф(Л, Ш2) +

к=к1

+ ^ 7(Л + 1,т + 1) - 7(Л,т + 1)-

к=кх,к2 —1,1 т=т1,Ш2-1,1

-/(Л + 1, т) + / (Л, т)] Ф(Л, т),

(1)

1

где Ф(Л,т) = Ф(, , Ф(и^) = /Ф^ £ * + «) * + и)

Л1 = тах{Л : Л ^ и - а}, Л2 = тт{Л : и + а ^ Л}, т1 = тах{т : т ^ V - а}, т2 = т1п{т : и + а ^ т}. Ф1 и Ф2 — первообразные некоторых финитных ядер, в данном случае, ядра Стеклова второго порядка (подробнее см. [9, с. 236]). Чтобы дать определение /, нам понадобится ввести дополнительные обозначения, которые будут использованы в дальнейшем. Пусть П(и^;а) = [и - а,и + а] х [V - а^ + а], П(и^;а) — наименьший прямоугольник с вершинами Вкт, для которого выполняется включение П(и^; а) Э П(и^; а). Тогда

На рис. 1 визуализированы для фиксированной точки (и, V) прямоугольники П(и^; а)(внутренний) и П(и^; а)(внешний), индексы Л1,Л2,т1,т2. По построению агрегата V (/; и^) для вычисления в фиксированной точке (и, V) используются известные значения из матрицы А, лежащие в прямоугольнике П(и, V; а).

Далее будем решать задачу восстановления отображения д(и, V) в узлах новой, более мелкой сетки Ск,т = {ик = = тЛ,4}. Восстановленные

значения отображения д(и, V) в узлах сетки Ск,т образуют матрицу В = = {^к,т}. Для получения выходных данных, требуется пересчитать по формуле (1) значения агрегата V(/; и^) в каждом необходимом узле сетки Ск,т. В практическом плане важна возможность параллельного вычисления выходной матрицы В.

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

о

Вк,т £ П(ж, а), Вк,т £ П(ж,а).

П(и,у;а)

1 1 1 П(ц,у;а)

1

1 1 1 1 1

1

к, и-а и и+а к2

Рис. 1. Визуализация прямоугольников П(и, V; а) и коэффициентов

к 1, к2, т1, т2

перед расчетами передать в память вычислителя. Рассмотрим сначала вариант параллельного вычисления выходной матрицы для систем с общей памятью (например, для систем с симметричной мультипроцессорностью). Из формулы (1) следует, что вычисление в любой точке зависит только от исходных значений матрицы А. Из этого следует, что вычисления значения д(и, V) во всех требуемых узлах сетки Скт независимы. Поэтому мы можем разбить множество таких узлов сетки Скт произвольным образом на подмножества, каждое из которых будем обсчитывать на отдельном вычислителе. Учитывая доступность исходной матрицы А на каждом вычислителе, такое распараллеливание достигается без дополнительных вычислительных затрат.

В случае систем с распределенной памятью, вычислители не имеют доступа к исходной матрице А. Поэтому изложенный выше подход требует пересмотра. В работе [9] было показано свойство локальности алгоритма вычисления агрегата V(/; и, V), которое мы будем использовать для распараллеливания алгоритма восстановления матрицы В. Из формулы (1) следует, что для вычисления значения агрегата V(/; и, V) в конкретной точке (и, V), необходимы значения исходной матрицы А, принадлежащие прямоугольнику П(и, V; а). Тогда, для того чтобы произвести на вычислителе расчет значений агрегата V на подмножестве {игузлов сетки Ск,т, необходимо передать на вычислитель значения исходной матрицы А, принадлежащие объединению соответствующих прямоугольников П(иг, а). Можно показать что оптимальными в плане объёма

передаваемых вычислителям данных, являются разбиения множества узлов сетки Ск,т, на множество взаимно неналегающих прямоугольников Щ. Определим, какую именно часть исходной матрицы А необходимо передать на вычислитель для обсчёта одного такого прямоугольника. Зафиксируем произвольный прямоугольник из разбиения Пц, пусть, не уменьшая общности, его вершины лежат в узлах Вк,т координатной сетки (кг2,Шг2), (к^т^), (к^ш^), (кз,^). Пусть Пи — прямоугольник с вершинами (к^2 — а,Шг2 — а), (к^2 — а,ш^3 + а), (к3 + а, — а), (кз + а, Шгз + а), положим Пл — минимальный прямоугольник с вершинами в узлах сетки Вк,т: (кц,тц), (кц,Шг4), (кг4,Шц), (кг4,Шг4), включающий в себя Пл. Тогда для вычисления значения агрегата V(/;п,ь) во всех точках сетки Ск,т из прямоугольника Пц требуется знать все исходные значения из матрицы А, принадлежащие прямоугольнику Пц (на рис. 2: внутренний прямоугольник — Пл, средний прямоугольник —Пл, внешний прямоугольник —П л).

п г

- -

- ПЦ

Пп -

Пц 1 1 1 1 I-1

кп -а+кй к12 кз а+кз к4

Рис. 2. Визуализация прямоугольников П с указанием их границ

Таким образом, распараллеливание не внесло дополнительных вычислительных расходов по сравнению с последовательным алгоритмом. В случае с параллельным алгоритмом для параллельных вычислительных систем с распределенной памятью, добавились некоторые накладные расходы при передаче частей исходной матрицы данных вычислителям (их объём зависит от способа разбиения на прямоугольники П^), которые легко оценить. Достаточно сосчитать сколько раз узлы сетки Вк,т исходной матрицы А входят в прямоугольники П и вычесть из полученного значения размер матрицы А. Полученное значение и будет показывать

объем дополнительных данных, являющихся накладными расходами на распараллеливание алгоритма. Рассмотренные параллельные алгоритмы, если пренебречь временем на передачу данных, и принять скорость доступа к памяти бесконечной, имеют асимптотическую сложность 0(N/M), где N — количество обсчитываемых точек, M — количество вычислителей (подробнее

об асимптотической сложности алгоритмов см. в [11, 12]). Учитывая отсутствие необходимости взаимосвязанных операций, выполняемых на разных вычислителях (не считая служебных операций при работе с памятью), полученный алгоритм имеет теоретическое ускорение Sk = T\/T^, близкое к k, где T\ — время работы последовательного алгоритма на одном вычислителе, Tk — время работы параллельного алгоритма на k вычислителях(подробнее об ускорении и критериях оценок параллельных алгоритмов см. в [13-15]). Оценки времени работы и ускорения при распараллеливании в условиях реальных вычислительных систем, требуют более сложных инструментов оценки и привязку к архитектуре конкретной вычислительной системы.

3. Примеры применения алгоритма к задачам компьютерной

графики

Предложенный параллельный алгоритм реализован для систем с симметричной мультипроцессорностью и для расчетов на графическом процессоре видеокарты (GPU) с использованием механизма геометрических шейдеров [16]. Архитектура современных GPU подразумевает большое количество вычислительных ядер, что делает целесообразным использование параллельного алгоритма для расчетов. В качестве стенда для расчетов использовались SMP система на базе процессора Intel core i7-2600K (4 ядра с технологией Hyper Threading), SMP система на базе двух процессоров AMD Opteron 6276 (16 ядер каждый), GPU NVidia GTX 590 (1024 вычислительных ядра).

Задача восстановления табличных векторнозначных данных в зависимости от размерности векторов в таблице, может иметь различную прикладную трактовку. Так, если размерность p = 1, данная задача может возникать при необходимости сглаживания карты высот, реконструкции поверхности интенсивностей. В качестве примера сгенерирована случайная карта высот, после чего с использованием предлагаемого алгоритма восстановлены значения сглаженной карты высот на сетке с более мелким шагом (рис. 3). Для размерности векторов исходной таблица p = 2 задача соответствует сглаживанию двухкомпонентных текстур. При p = 3 предлагаемый алгоритм может применяться для передискретизации трехкомпонентных цветных изображений или для реконструкции поверхностей (подробнее о задаче реконструкции поверхностей см. [17]). С математической точки зрения поверхность — это отображение двумерной области в трехмерное пространство. Исходная таблица

векторов соответствующая трехмерной поверхности, может быть получена вычислительным путем или же с помощью некоторого пространственного сканирования. В качестве примера, взята параметрическая поверхность, известная как поверхность Боя (Boy's surface). Исходной матрицей является двумерная матрица каждым элементом которой является трехмерный вектор координат точки поверхности. На рис. 4 представлен результат восстановления поверхности предложенным алгоритмом на более мелкой сетке пространства параметров.

Рис. 3. Визуализация применение алгоритма для сглаживания случайной

карты высот

Рис. 4. Визуализация реконструкции предлагаемым методом поверхности Боя. Слева: визуализация исходной таблицы точек поверхности. Справа: визуализация восстановленной таблицы точек поверхности на более мелкой сетке пространства параметров

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

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

Рис. 5. График зависимости времени выполнения программы от количества потоков выполнения на различных аппаратных SMP платформах

Дадим краткие пояснения к приведенным данным. Платформа на базе процессора Intel core i7-2600k имеет более высокую производительность в пересчете на одно ядро, ввиду высокой тактовой частоты и производительности подсистемы памяти. Резкое уменьшение времени работы программы наблюдается при запуске вычислений вплоть до 4 потоков, что обуславливается архитектурой процессора с 4 физическими ядрами. При увеличении количества вычислительных потоков с 4 до 8 наблюдается незначительное уменьшение времени работы, что объясняется наличием технологии Hyper Threading в данном процессоре. Дальнейшее увеличение количества потоков не оказывает существенного влияния на время работы. Поведение SMP системы с двумя процессорами AMD Opteron 6276 показывает резкое ускорение вплоть до 8 вычислительных потоков и не столь значительно ускорение вплоть до 32 вычислительных потоков. Полученные результаты обусловлены архитектурой 32-ядерной системы, упирающейся в производи-тельность подсистемы оперативной памяти. Таким образом, фактическое ускорение параллельного алгоритма на 4-ядерной SMP системе составило: Si4 = Тц/Тц = 25222/6360 = 3, 97, что весьма близко к теоретическому ускорению приведенному выше. Для двухпроцессорной системы с 32 вычислительными ядрами, фактическое

ускорение составило: Sa32 = Tai/Ta32 = 56150/5441 = 10, 32, что объясняется

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

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

4. Заключение

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

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

1. De Boor C. A practical guide to splines. New York: Springer, 1978. 392 p.

2. Завьялов Ю.С., Квасов Б.И., Мирошниченко В.Л. Методы сплайн-функций. М.: Наука, 1980. 352 с.

3. Cheng F. and Goshtasby A. A parallel B-spline surface fitting algorithm // ACM Trans. Graphics. 1989. V. 8. №. 1. P. 41-50.

4. Dodonov N.Yu. On analogs of Steklov averages for functions defined on convex compact sets in Rm // Journal of Mathematical Sciences. 2006. V. 132. № 4. P. 379-399.

5. Dodonov N.Yu. On uniform approximation of abstract functions by aggregates of summatory type on a rectangle // J. of Mathematical Sciences. 2007. V. 142. № 1. P. 1788-1805.

6. Dodonov N.Yu. On uniform approximation of abstract functions on convex polygons // Journal of Mathematical Sciences. 2007. V. 144. № 6. P. 4592-4611.

7. Додонов Н.Ю. О равномерном приближении на R2 непрерывных банаховозначных функций // Вестник СПбГУ. Сер. 1. 2005. Вып. 2. С. 11-24.

8. Dodonov N.Yu., Zhuk V.V. On uniform approximation in R2 of continuous functions of two variables with bounded variation in the sense of Hardy // J. of Mathematical Sciences. 2004. V. 123. № 3. P. 3184-3211.

9. Додонов Н.Ю., Масальских А.В. Реконструкция параметрических поверхностей, заданных таблично, посредством сдвигов и сжатий одной функции // Изв. ТулГУ. Естественные науки. 2014. Вып. 1. Ч. 1. С. 232-248.

10. Додонов Н.Ю., Масальских А.В. Применение одного класса агрегатов приближения сумматорного типа для реконструкции параметрических поверхностей // Изв. ТулГУ. Естественные науки. 2014. Вып. 2. С. 59-75.

11. Introduction to Algorithms. / T.H. Cormen [et al.]. MIT Press, 2009. 1312 p.

12. Sanjeev A., Boaz B. Computational Complexity: A Modern Approach. Cambridge University Press, 2009. 594 p.

13. Pacheco P. An Introduction to Parallel Programming. Elsevier, 2011. 392 p.

14. Rauber T., Runger G. Parallel Programming: for Multicore and Cluster Systems. Springer Science and Business, 2013. 529 p.

15. Воеводин В.В., Воеводин В.В. Параллельные вычисления. БХВ-Петербург, 2002. 602 с.

16. OpenGL Programming Guide: The Official Guide to Learning OpenGL, Version 4.3 (8th Edition). / D. Shreiner [et al.]. US: Addison-Wesley, 2013. 984 p.

17. Implicit Curves and Surfaces: Mathematics, Data Structures and Algorithms: Mathematics, Data Structures and Algorithms. / A. Gomes [et al.]. London: Springer, 2009. 366 p.

Масальских Александр Владимирович ([email protected]), аспирант, тьютор, кафедра компьютерных технологий, факультет информационных технологий и программирования, Санкт-Петербургский национальный исследовательский университет информационных технологий, механики и оптики.

Parallel algorithm of one tabular data reconstructing method

A. V. Masalskikh

Abstract. This paper describes the approach to parallelization of one reconstructing algorithm of vector tabular data. This approach applied to multiprocessors systems with shared and distributed memory. Implementation of described algorithm for shared memory systems imposes no additional expenses when parallelizing. Implementation for systems with distributed memory involves the transfer of the additional volume of input data. Estimation for extra volume is given in the paper. The obtained algorithm is tested on some problems of computer graphics: resampling of digital images, reconstruction of parametric surfaces, smoothing the height map. Algorithm tested on systems with symmetric multiprocessor and on the GPU. The numerical experiment shows the correctness

of the parallel algorithm and confirmed the expected increase in computing speed compared with the sequential algorithm.

Keywords : parallel algorithm, tabular data reconstruction, parallel computing, data approximation, GPU, computer graphics.

Masalskikh Alexander ([email protected]), postgraduate student, tutor, department of computer technologies, faculty of information technologies and software engineering, Saint-Petersburg National Research University of Information Technologies, Mechanics and Optics.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Поступила 18.09.2014

i Надоели баннеры? Вы всегда можете отключить рекламу.