Научная статья на тему 'Распараллеливание процесса рекурсивных вычислений в задаче дихотомического разбиения куба'

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

CC BY
192
16
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
DICHOTOMY / RECURSIVE ALGORITHM / PROCESS PARALLELIZING / DOUBLED FULL BINARY TREE

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Губина Екатерина Николаевна, Толок Алексей Вячеславович, Толок Наталия Борисовна

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

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

Recursive calculations process parallelizing for cube dichotomy fragmentation

An approach to data structure description simplifying data processing and increasing application efficiency is presented. Principle of the binary addressing is used for cube dichotomy data structuring.

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

№ 4 (34) 2011

Е. Н. Губина, магистрант кафедры Компьютерных систем Московского государственного технологического университета «СтАНКИН» А. В. Толок, докт. техн. наук, профессор, заведующий кафедрой Инженерной графики Московского

государственного технологического университета «СтАНКИН» Н. Б. Толок, канд. техн. наук, начальник отдела ПО ООО «Норберт», Москва

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

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

Введение

Графические системы аналитического моделирования, работающие с построениями воксельных графических представлений, сталкиваются с двумя основными проблемами: скорость обработки геометрической информации и ограниченная оперативная память (ОП) для хранения воксельного графического образа. Особенно остро эти вопросы возникают в связи с применением рекурсивных алгоритмов деления ограниченных областей моделируемого объекта [1]. При этом геометрическим объектом разбиения является, как правило, кубическая область. Можно ли отнести такое разбиение к дихотомическому?1

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

1 Работа выполнена при частичном финансировании ГК № 02.740.11.0488.

Очевидно, что распараллеливание рекурсивного процесса не является простым вопросом, поскольку древовидная структура предусматривает поуровневое распределение потоков с захватом «ожидающих узлов», увеличивающимся на каждом уровне итерации [2].

К тому же специфика подобных алгоритмов — в активном применении ОП для загрузки 3D-массива графической информации, которое уже на относительно малой глубине дихотомического разбиения требует гигабайты ОП. Решение проблемы «через жесткий диск» приводит к увеличению и без того дефицитного времени обработки данных.

Постановка задачи

Эффективный алгоритм организации параллельных вычислений дихотомического разбиения куба должен:

1) иметь удобную структуру представления для реализации процесса распараллеливания;

2) укладываться в имеющиеся ограничения на ОП, выделяемую для его работы;

3) максимально полно использовать имеющиеся в его распоряжении ресурсы процессора.

№ 4(34) 2011

Принцип организации данных дихотомического разбиения

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

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

Рис. 1. Двухэтапное удвоение единичного отрезка

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

Рис. 2. Сдвоенное полное бинарное дерево двухэтапного удвоения единичного отрезка

Рисунок 2 наглядно представляет последовательность возрастания двоичного кода при последовательном переборе проходов по всем веткам сдвоенного полного бинарного дерева слева направо. Таким образом, каждый бит трехбитовой комбинации характеризует начало или конец отрезка на каждом этапе удвоения, а вся битовая тройка — логическую последовательность формируемого одномерного массива [0,7]. А значит, можно говорить о том, что целочисленная последовательность, формируемая битовой комбинацией, представима сдвоенным полным бинарным деревом и применима для описания дихотомических структур (рис. 2).

Принцип организации дихотомически | делимого 3D-массива данных ^

Будем полагать, что количество подобластей при половинном делении области Дз равно 2", где п — размерность области оо разбиения. Рассмотрим случай дихотомического разбиения куба в евклидовом про- |

1-Я ^О

странстве Е , принципы реализации которого сохраняются в пространствах как мень- ^ шей, так и большей размерности Е.

Количество элементов трехмерного массива I, содержащего результаты выполнения алгоритма итерационного уточнения окрестности точки в пространстве Е3 посредством дихотомического разбиения, зависит от количества разбиений э и рассчитывается как I = 2". Определим индексную организацию формируемого массива в трех направлениях (/,у,к) (рис. 3). Длина индексного направления, выбранного вдоль одной из сторон куба, составляет ^2™" единиц. Таким образом, размер массива определяется как / х у х к, где /,у,к = [0,^2™ -1].

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

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

^ 85

-ч ПРИКЛАДНАЯ ИНФОРМАТИКА

№ 4 (34) 2011 ' -

применяемого в известных подходах, заполнение массива осуществляется в обратном порядке, начиная с элемента с индексами i = j = k = . Причины, по которым был выбран именно такой порядок, обсудим позднее. Предварительно рассмотрим начальные этапы формирования динамического массива.

На первом этапе трехмерный элемент (на рисунке — куб) подразделяется на восемь равных элементов (рис. 1). Таким образом, для организации индекса потребуется 3 бита (от 000 до 111). Проиндексируем массив так, чтобы последовательность нулей и единиц отражала трехмерное положение элементов объекта в соответствии с направлениями осей i,j, k. На рисунке 3 видно, что нулевое значение соответствующего бита для индексов [/',j, k] определяет расположение куба непосредственно на координатной g оси (подобно координатам узлов единичного куба). Логический десятичный номер поэлементного заполнения m для рассмотренного 5 случая можно определить как

| m = 2n - o10(i, j,k),

£ где o10(i, j, k) — функция перехода к десятич-

sg ному значению комбинации двоичного кода,

¡и образуемого группировкой значений эле-

S| ментов [/',/', k].

со

Ц На втором этапе уточнения трехмерной

|| сцены осуществляется разбиение областей,

| которым в массиве соответствуют элементы

1 от 000 до 111, на восемь равных элементов | методом половинного деления. Рисунок 4 | отображает динамическое развитие масси-

5 ва при переходе ко второму этапу уточне-

Ьс

¡1 ния трехмерной области. При этом происхо-

2 дит увеличение размера массива в два раза §■ вдоль каждой оси. Для наглядности на рис. 4

6 логическая очередность заполнения мас-^ сива отражена последовательным набором | значений, где элементы с 9 по 16 суть эле-| менты последующего дихотомического раз-<| биения. Элемент 9 является итерационным | потомком элемента 1, поскольку отражает £ ту же самую область, только уже в уточнен-

ном виде за счет деления итерационного предка на восемь частей. Процесс итерационного уточнения трехмерной области предусматривает последовательную обработку итерационных предков 1,...,8 с последовательным отражением результатов деления в итерационных потомках 9.....16.

Такой порядок заполнения позволяет сохранять данные, полученные на предыдущей итерации, в первых ячейках матрицы до тех пор, пока не заполнятся все свободные ячейки значениями следующей итерации. Далее элементы текущей итерации (16) «вытесняют» значения предыдущей итерации (1,...,8) в первых ячейках куба, и происходит переход к новой итерации с соответствующим удвоением размера массива по индексным осям. Это позволяет сохранять связь с предыдущей итерацией до требуемого предела, т. е. заполнения ячеек последнего подкуба, хранящего информацию предыдущей итерации.

Рис. 4. Организация логической последовательности заполнения динамического массива «от последнего элемента к первому»

86 j

ПРИКЛАДНАЯ ИНФОРМАТИКА /-

' № 4 (34) 2011

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

Структурность бинарного представления чисел (рис. 2) позволяет создать промежуточное представление данных логического заполнения в виде двоичного кода.

Значения от 0 до 7 посредством трехбитовой комбинации описывают разбиение элемента на подэлементы. Значения от 8 до 127 отображаются в шестизначный код, где первая тройка значений задает расположение элементов куба-предка, а вторая тройка значений — элементы кубиков-потомков, полученных в результате деления элемента куба-предка. Таким образом, структура битового представления динамического массива может быть описана последовательностью трехбитовых комбинаций. Число этих комбинаций означает уровень вложенности рекурсивного вызова процедуры динамического заполнения массива последовательно возрастающей размерности. Например, битовая комбинация 001 011 001 означает второй куб на третьем уровне уточнения, четвертый куб на втором уровне уточнения и второй куб на первом уровне уточнения. На рис. 5 результирующий элемент отмечен самым темным тоном.

Логическая структура трехмерного массива отображается на физическую структуру памяти компьютера индексацией (I,¡, к).

0 1 2

1

2

3

4

5

6

7

Например, местоположение выделенного элемента массива на рис. 5 задается индексами (0,2,7).

Рассмотрим переход от предлагаемого бинарного представления к индексному представлению и наоборот. Индексное представление элемента массива определяется как:

I = I (24лГ, ¡ = I (2^э,

к = ¿(2Кз,

п=Ц3

n=L/3

п=Ц3

где /3п, иззп-1, К33л-2 — значения элементов для л-й трехбитовой комбинации, п = L /3 — количество итераций алгоритма уточнения области, L — размерность вектора бинарного представления элемента динамического массива. Например, для элемента 001 011 001 индексы I, ¡, к получат значения:

I = (2 • 0)2 + (2 • 0)1 + (2 • 0)0 = 0 + 0 + 0 = 0,

\ = (2 • 0)2 + (2 • 1)1 + (2 • 0)0 = 0 + 2 + 0 = 2, к = (2 • 1)2 + (2 • 1)1 + (2 • 1)0 = 4 + 2 +1 = 7.

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

0 = 0 0 0

2 = 0 1 0

7 = 1 1 1

Рис. 5. Пример положения элемента при битовом сочетании 001 011 001

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

Схема распараллеливания рекурсивных вычислений

На рисунке 6 показан принцип распределения ресурсов процессора для простейшего случая бинарного дерева с двухраз-

I

иа эё

й«

0

1

аа

I £

Ч......87

-ч ПРИКЛАДНАЯ ИНФОРМАТИКА

№ 4 (34) 2011 ' -

00 1 00 00 00 00

00 \ 00 00 00 01

00 1 01 10 11 00

00 00 00 00

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

01 01 10 10

10 11 00 01

00 00 00 00

10 11 11 11

11 00 01 10

00 11 11

Рис. 6. Распределение процессов при двухразрядной бинарной адресации

.та

И I

I

12 $

1 ¡5

8

ч $

I

ч со

I

со

а £

12 I

0 &

!

1

I I

I

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

В предложенном представлении данных в виде кубического массива для организации вычислений выберем схему параллельного использования вычислительных ресурсов в виде «темпорированного» дерева в концентрической форме развития (рис. 7). У такого дерева входные данные и результаты вычислений находятся в корневой вершине, а вычислительный процесс развивается от корня к листьям, а затем обратно. Решение задачи сводится к разворачиванию графа полученного дерева на кластере с закреплением ответвлений за отдельными процессорами.

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

В представленном дереве входные данные и результаты вычислений находятся в глав-

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

э = 2™ кЬ,

где п = 3 — размерность пространства, I — количество итераций, к — количество компонент массива (например, при исследовании функции в системе РАНОК [4] — признак принадлежности поверхности и четыре компоненты нормали, т. е. к = 5), Ь = 2 — количество байт для каждой компоненты массива.

Рис. 7. Схема параллельного распределения

вычислительных ресурсов кластера для рекурсивного алгоритма в системе РАНОК

88 ,

ПРИКЛАДНАЯ ИНФОРМАТИКА /-

' № 4 (34) 2011

После этого отправляется запрос на выделение требуемого объема ОП в кластере и вычисляется необходимое количество процессоров под этот объем. Отсюда следует, что использование ресурсов кластерной системы позволяет решить проблему с недостатком ОП путем представленного выше распределения вычислительных потоков (условие 2).

От главного узла данные массива передаются в первый подуровень (восьми процессорам) для выполнения первого этапа деления и нахождения логических (десятичных) номеров кубов. До конца деления вся первоначальная информация хранится в кубе, именуемом битовым кодом (адресом), например 010. На нем же идет процесс вычисления подкуба с тем же кодом (адресом подкуба — 010), которое по окончании деления заполняется информацией. Этот подход позволяет хранить и использовать битовые адреса для управления работой всех процессоров без потери данных при сбоях.

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

Такой способ представления параллельного процесса вычисления рекурсивным ме-

тодом также позволяет использовать весь |

вычислительный ресурс кластера, если ^

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

подгружая их для ускорения расчетов. Дз

Заключение

л

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

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

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

1. Толок А. В. Применение воксельных моделей в процессе автоматизации математического моделирования // Автоматика и телемеханика. № 6. 2009. С. 167 - 180.

2. Малашонок Г. И, Валеев Ю. Д. Организация параллельных вычислений в рекурсивных символьно-численных алгоритмах [Электронный ресурс] URL: http://omega.sp.susu.ac.ru/books/conference/ PaVT2008/papers/full_papers/016.pdf.

3. Толок А. В., Толок Н. Б. Математическая модель организации динамического формирования массива данных в процессе работы алгоритма итерационного уточнения трехмерной области // Фiзико-матем. науки, Бюлопчы науки. Всник Запорiзького Державного уыверситету: Збiрник наукових статей. № 1. Запорiжжя: ЗДУ, 2001. С. 101- 104.

4. Максименко-Шейко К. В., Толок А. В., Шейко Т. И. R-функции в аналитическом проектировании с применением системы «РАНОК» // Вестник МГТУ «Станкин». Научный рецензируемый журнал. М.: МГТУ «Станкин». № 4 (12). 2010. С. 139 - 151.

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