WWW.DISSERS.RU

БЕСПЛАТНАЯ ЭЛЕКТРОННАЯ БИБЛИОТЕКА

   Добро пожаловать!

 


На правах рукописи

                                                         

БАБИЧЕВ Сергей Леонидович

Статический анализ проблем синхронизации параллельных алгоритмов в вычислительных системах с общей памятью

Специальность 05.13.18- математическое моделирование, численные методы и комплексы программ

АВТОРЕФЕРАТ

диссертации на соискание ученой степени

кандидата физико-математических наук

Москва – 2012

Работа выполнена на кафедре

математических и информационных технологий

Московского физико-технического института

(государственного университета)

Научный руководитель:        

Коньков Константин Алексеевич

кандидат физико-математических  наук, доцент

Официальные оппоненты:

Тормасов Александр Геннадьевич

доктор физико-математических наук, кафедра теоретической и прикладной информатики Московского физико-технического института, заведующий кафедрой

Прохоров Сергей Петрович

кандидат физико-математических наук, доцент, Институт системного программирования РАН, ведущий научный сотрудник

Ведущая организация:

Вычислительный центр им. А. А. Дородницына РАН

Защита состоится  “____”  __________________ 2012 г. в ___ час. ___ мин.

на заседании диссертационного совета  Д 212.156.05  при Московском физико - техническом институте (государственном университете) по адресу: 141700, Московская обл., г. Долгопрудный, Институтский пер., 9, ауд. 903 КПМ.

С диссертацией можно ознакомиться в библиотеке МФТИ

Автореферат разослан “ ____  ”_____________________ 2012 г.

                         

Ученый секретарь

диссертационного совета

Федько Ольга Сергеевна

Общая характеристика работы

Актуальность проблемы

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

Цель исследований

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

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

  1. Исследование существующих подходов и моделей анализа параллельных алгоритмов и их применимости на практике.
  2. Разработка математических моделей, алгоритмов и программ, реализующих механизмы анализа параллельных алгоритмов на ошибки синхронизации, и обоснование их корректности.
  3. Реализация оригинальных высокоэффективных верифицированных алгоритмов для применения в библиотеках программ и комплексах программ.

Методы исследований

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

Практическая значимость

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

Научная новизна

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

Апробация работы

Научные и практические результаты диссертации доложены, обсуждены и получили одобрение специалистов на:

-        IL, L, LI, LII, LIII научных конференциях МФТИ (Москва, 2007-2011)

-        научных семинарах кафедры информатики МФТИ (Москва, 2007-2011)

- научных семинарах кафедры математических и информационных технологий МФТИ (Москва, 2007-2011)

- научном семинаре  ВЦ РАН (Москва, 2012)

- семинаре  группы сопровождения переносной вычислительной техники ОАО Альфа-Банк (Москва, 2008)

- научном семинаре отдела безопасности ОАО БИНБАНК (Москва, 2007)

- научно-практическом семинаре Департамента защиты информации ОАО «ТНК-BP Менеджмент» (Москва, 2010)

- семинаре административного отдела ООО «Прогресстех» (Москва, 2011)

- семинаре  отдела защиты информации «ОАО ЛУКОЙЛ» (Москва, 2009)

- научно-технических семинарах Департамента системной интеграции ОАО «Форт-Диалог» (Набережные Челны, 2009-2011)

- семинаре отдела ЭВТ ООО «Татнефть» (Нурлат, 2008) и других.

Публикации

По теме диссертации опубликовано 9 работ, в том числе две [8,9] - из списка изданий, рекомендованных ВАК РФ.

Личный вклад автора

Лично соискателем в опубликованных работах выполнено:

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

Структура работы

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

Содержание работы

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

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

Сети Петри – универсальный инструмент для моделирования дискретных систем. В данной работе сети Петри будут применяться для решения задачи обнаружения наличия тупиков в многопоточной вычислительной среде с совместными ресурсами.

Понятие сетей Петри

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

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

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

Свойства сетей Петри как средства анализа исполнительных потоков многопоточных программ.

  1. Последовательное исполнение

Переход может быть запущен только после запуска перехода

  1. Синхронизация

Переход может быть разрешён только при условии наличия маркеров в позициях и

  1. Слияние

Маркеры из нескольких позиций участвуют в переходе.

  1. Параллельное исполнение

Переходы и исполняются параллельно.

  1. Моделирование конфликтов

Совершение любого из переходов и делает невозможным совершение другого перехода

Определение наличия тупиков в сети Петри сводится к задаче определения одной из характеристик сети Петри – активности (liveness).

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

Для анализа тупиков в сети с начальной маркировкой применяется следующая классификация:

Активность уровня имеет переход , который никогда не может быть запущен.

Активность уровня имеет переход , который потенциально запустим, то есть существует такая допустимая и достижимая маркировка , в которой данный переход разрешён.

Активность уровня имеет переход , если для всякого целого существует последовательность запусков, в котором присутствует по крайней мере раз.

Активность уровня имеет переход , если существует бесконечная последовательность запусков, в которой присутствует неограниченно часто.

Активность уровня имеет переход , если для всякой   существует такая последовательность запусков , что разрешён в

Наличие в сети переходов с активностью с определённостью подтверждает наличие тупиков в моделируемой системе.

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

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

Подмножество позиций называется сифоном (syphon), если любой входящий переход в является также выходящим переходом в , то есть . Соответственно, есть ловушка (trap), если . Сифон (ловушка) называется минимальным, если он не содержит других сифонов (ловушек).

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

Метод дерева достижимости заключается в рекурсивном применении алгоритма добавления узла в дерево достижимости.

Метод сведения к задаче математического целочисленного программирования основывается на следующем:

Введём две функции от сифона :

                       (1)

где есть общее количество маркеров в , то есть, .

                       (2)

где есть матрица инцидентности сети Петри, - маркировка сети, и есть вектор.

называется уравнением состояния сети. Из базовой теории сетей Петри следует, что любая достижимая маркировка удовлетворяет уравнению состояния, но обратное неверно.

Сифон есть потенциальный тупик тогда и только тогда, когда .

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

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

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

Пусть есть множество минимальных сифонов, которые не содержат маркированных ловушек. Сеть Петри не содержит тупиков, если , где

               (3)

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

                               (4)

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

(4) – задача линейного программирования и может быть разрешена за полиномиальное время. Использование линейного программирования требует проверки всех минимальных сифонов и эффективность данного метода зависит от их количества.

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

Пусть

       - множество переходов сети Петри,

        есть множество направленных дуг,

       ,

       ,

       ,                                                

       ,

       ,

       ,

       ,

       ,

       ,

Сеть Петри не содержит тупиков, если .

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

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

Если есть способ быстро определить все минимальные сифоны и минимальные ловушки в сети Петри, то задача обнаружения тупиков сводится к задаче обнаружения сифонов, не содержащих маркированных ловушек.

Алгоритм Кордона использует методы динамического программирования для определения всех минимальных сифонов в сети Петри.

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

Общая идея алгоритма состоит в следующем:

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

Условия ограничения определяются следующей леммой:

Лемма ограничения

Пусть есть сеть Петри и . Множество сифонов , не содержащее равно , где есть множество сифонов редуцированной сети , содержащих .

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

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

Алгоритм 1 -

  1. если такая, что , тогда
  2. если такая, что , тогда идти к шагу 3 иначе return P
  3. , идти к шагу 1

Алгоритм 2 -

  1. если такая, что или идти к шагу 2 иначе идти к шагу 3
  2. ; идти к шагу 1
  3. если тогда
  4. если тогда
  5. если тогда , идти к шагу 3 иначе идти к шагу 5

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

Алгоритм 3 -

  1. если и такая, что , тогда идти к шагу 3 иначе идти к шагу 4
  2. ; идти к шагу 2
  3. если то
  4. если то
  5. ; идти к шагу 8

Этот алгоритм может возвращать в качестве выходного значения также минимальные ловушки.

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

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

Примитив типа Mutex

Примитив типа Mutex представляет собой средство взаимоисключения вычислительных потоков и имеет следующие операции:

WaitAndLock - ожидать освобождения с немедленным захватом

Release - освобождение

Рис. 1. Схема сети Петри примитива Mutex

Примитив Mutex можно представить в виде сети Петри - см. рис. 1.

Наличие в позиции P1 маркера показывает, что Mutex находится в свободном состоянии. Эта позиция должна использоваться совместно несколькими вычислительными потоками. При появлении маркера в позиции P0 и наличии маркера в позиции P1 становится возможным переход T0, маркер в позиции P0 теперь не присутствует, что делает невозможным осуществление переходов, зависящих от наличия маркера в позиции P1.

После захвата маркера вычислительный поток исполняет код критической секции (позиция P2), исполняется переход T1, который передаёт маркер в позицию P1, делая тем самым возможным осуществление связанных с наличием маркера в этой позиции переходов.

Данная сеть Петри соответствует общепринятой семантике примитива Mutex.

Примитив типа Event

Примитив типа Event используется для установления факта возникновения какого-либо события, может находиться в двух состояниях - сигнальном и несигнальном и к нему применимы следующие операции:

Set - установить объект в сигнальное состояние

Reset - установить объект в несигнальное состояние

Wait - ожидать наступления сигнального состояния.

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

Рис. 2. Схема сети Петри примитива Event

На рис. 2 изображена сеть Петри для примитива Event.

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

Операция Reset в данной модели начинается помещением маркера в позицию P6, входную позицию операции. Завершение операции Reset определяется появлением маркера в позиции P8. Эта операция переводит объект Event в несигнальное состояние в независимости от первоначального состояния объекта.

Позиция P3 является входной позицией для операции Wait. Если в позиции P3 уже имеется маркер, то метод Wait завершается успехом немедленно. Если в позиции P3 маркера не имеется, то исполнение операции Wait задерживается до появления маркера в этой позиции.

В работе доказана теорема о том, что представленная сеть Петри для примитива Event соответствует семантике данного примитива.

Исследование свойств совокупной сети Петри

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

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

Грамматический анализ осуществляется с помощью LALR(1) автомата, генерируемого программой bison по описанию синтаксических правил входного языка. При грамматическом анализе создаются структуры данных, требуемые как для семантического анализа, так и для генерации кода - таблица символов и синтаксическое дерево. После построения синтаксического дерева для построения совокупной сети Петри модели по таблице символов строится скелетная часть создаваемой сети Петри а по синтаксическому дереву добавляются необходимые связи переходами и позициями а так же добавляются необходимые для этого переходы и позиции. Для этого используется оригинальный алгоритм реперных точек, описанный в диссертации.

Этап оптимизации анализирует сгенерированную сеть Петри и удаляет из неё избыточные фрагменты. Алгоритм этапа оптимизации описан в диссертации. 

Классический пример задачи, содержащей тупики, представлен на формализованном языке описания модели следующим образом:

shared mutex m1;

shared mutex m2;

shared thread firstThread {

  forever {

  m1.wait;

  @work1;

  m2.wait;

  @work2;

  m2.release;

  m1.release;

  }

}

shared thread secondThread {

  forever {

  m2.wait;

  @work1;

  m1.wait;

  @work2;

  m1.release;

  m2.release;

  }

}

По данному исходному коду сформирована сеть Петри, показанная на рис. 3.

Рис. 3. Сеть Петри, сформированная по описанию задачи на формализованном языке описания модели.

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

Были проверены на наличие или отсутствие тупиков большое количество известных примеров, в том числе Apache deadlock bug #42031, проблема обедающих философов и другие. Результаты проверки подтвердили соответствие результатов верификации теоретическим.

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

Пул вычислительных потоков (ПВП)

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

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

Требования, накладываемые на реализацию ПВП:

  1. должны быть поддержаны языки программирования C и C++;
  2. время, затрачиваемое на накладные расходы, должно быть как можно более малым;
  3. реализация должна быть максимально переносимой и поэтому все синхронизирующие примитивы должны быть стандартными и реализуемыми на разных операционных системах;
  4. не должно быть значительных периодов активного ожидания;
  5. должна быть возможность использования механизма в ядре операционной системы.

Организация ПВП и методы работы с пулом

Возможны два принципиально разных методов организации ПВП - со статическим планированием и с динамическим планированием.

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

В данной работе принят механизм статического планирования.

Оптимизация использования ПВП

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

Описание алгоритма функционирования обработки запросов ввода/вывода

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

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

Рис. 3. Синтезированная сеть Петри для задачи пула облегчённых вычислительных потоков с одним дополнительным потоком.

Модель первичного потока и одного потока пула может быть описана на формализованном языке описания модели следующим образом:

shared mutex DataLockMutex;

shared event DataReadyEvent;

shared event ResultReadyEvent;

thread mainThread {

  forever {

  DataLockMutex.wait;

  DataReadyEvent.set;

  @work1;

  ResultReadyEvent.wait;

  DataLockMutex.release;

  ResultReadyEvent.reset;

  }

}

thread PoolThread1 {

  forever {

  DataReadyEvent.wait;

  @work2;

  DataReadyEvent.reset;

  ResultReadyEvent.set;

  }

}

Данная модель была транслирована в сеть Петри, результат показан на рис. 3.

Были рассмотрены случаи с дополнительными потоками от одного до семи. При переводе модели с четырьмя дополнительными потоками в эквивалентную сеть Петри количество позиций составило 66, а количество переходов – 54. В диссертации доказана теорема об отсутствии тупиков в модели ПОВП.

Апробация модели.

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

Рис. 4. Схема преобразования операций ввода-вывода.

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

Рис. 5. Оптимизированная схема преобразований ввода/вывода.

Рис. 6 Изменение производительности в зависимости от количества вычислительных ядер для одной из групп алгоритмов.

Результаты

Для различных криптографических алгоритмов была измерена скорость криптографического преобразования и использованием ПВП с тремя дополнительными вычислительными потоками на вычислительной системе, состоящей из процессора Intel i5-2500K, работающего на тактовой частоте 4000 мегагерц с отключенным механизмом TurboBoost.

На рис. 6 показано изменение производительности в зависимости от количества используемых вычислительных ядер. Можно сделать вывод о хорошей масштабируемости использованного механизма пула вычислительных потоков для решения данной задачи.

В заключении сформулированы основные результаты диссертационной работы.

Основные результаты работы

  1. Для моделирования ряда синхронизирующих примитивов построены новые оригинальные сети Петри, достаточно полно выражающие семантику данных примитивов. Доказано соответствие построенных сетей Петри семантике примитивов синхронизации.
  2. Разработан формализованный язык описания модели, разработаны и реализованы алгоритмы и программы для синтеза совокупных сетей Петри по описанию модели параллельных вычислительных потоков на формализованном языке.
  3. Реализованы следующие методы для анализа синтезированной сети Петри на отсутствие тупиков: дерева достижимости,  минимальных сифонов и ловушек и на основе сведения к задаче математического целочисленного программирования.
  4. Разработана и реализована в виде алгоритма и программы оригинальная модель пула облегчённых вычислительных потоков для применения в приложениях, требующих минимальной латентности в параллельной обработке, например, при обработке запросов ввода-вывода. Доказана теорема об отсутствии тупиков в модели.
  5. Разработаны, реализованы и верифицированы параллельные алгоритмы обработки массивов данных, динамически поступающих в программную систему.
  6. Проведен ряд вычислительных экспериментов, показавших высокую эффективность предложенных алгоритмов и их хорошую масштабируемость.
  7. Предложенные алгоритмы реализованы в виде комплекса программ.

Публикации по теме диссертации:

  1. Бабичев С. Л., Головатский М. А., Коньков А. К., Царин А. А., Коньков К. А. Защита информации в операционной среде Microsoft Windows. // Современные проблемы фундаментальных и прикладных наук. Часть VII. Прикладная математика и экономика: Труды XLVIII конференции МФТИ./ М.- Долгопрудный,  2005- С. 151.
  2. Семененко В. Л., Бабичев С. Л., Бобьяков А. С., Коньков А. К., Коньков К. А., Телицын М. А.  Защита корпоративной информации от внутренних угроз на основе метода доверенной загрузки системы //  Современные проблемы фундаментальных и прикладных наук: Труды 50-й научной конференции МФТИ/ М.- Долгопрудный,  2007- С. 174-175. 
  3. Бабичев С. Л., Коньков А. К., Коньков К. А. Дополнительная защита ресурсов операционной системы методом криптографической защиты данных // Сборник научных трудов МФТИ. Моделирование процессов обработки информации/ М.:МФТИ, - 2007- С. 251-259.
  4. Бабичев С. Л., Бобьяков А. С., Коньков А. К., Коньков К. А. Математическая модель защищенной компьютерной системы под управлением Windows// Современные проблемы фундаментальных и прикладных наук: Труды 51-й научной конференции МФТИ./ М.-Долгопрудный,  2008- Т 2.  С. 56-57.
  5. Бабичев С. Л., Бобьяков А. С., Коньков А. К., Коньков К. А. Эффективное использование ресурсов вычислительных систем при решении задач информационной безопасности.// Современные проблемы фундаментальных и прикладных наук. Часть VII Управление и прикладная математика: Труды 52-й научной конференции МФТИ./ М.-Долгопрудный,  2009- Т 3.  С.7-8.
  6. Бабичев С. Л., Коньков А. К., Коньков К. А. Об оптимальном использовании ресурсов вычислительной системы для реализации модифицированной защищенной среды.// Современные проблемы фундаментальных и прикладных наук. Часть VII Управление и прикладная математика.: Труды 53-й научной конференции МФТИ./ М.-Долгопрудный,  2010- Т 2, С.11-13
  7. Бабичев С. Л., Коньков А. К., Коньков К. А. Автоматизированный анализ проблем синхронизации параллельных алгоритмов в вычислительных системах с общей памятью.// Проблемы фундаментальных и прикладных естественных и технических наук в современном информационном обществе. Управление и прикладная математика: Труды 54-й научной конференции МФТИ./  М.-Долгопрудный-Жуковский.  2011- Т 2.  С.48-49.
  8. Бабичев С. Л., Коньков А. К.,  Коньков К. А. Использование пула вычислительных потоков со статическим планированием для оптимизации подсистемы защищённых виртуальных носителей модифицированной защищённой среды.// Труды МФТИ, 2012-  Т. 4, № 15(3)- С.10-19.
  9. Бабичев С. Л., Коньков А. К., Коньков К. А. Применение сетей Петри для диагностирования проблем синхронизации в вычислительных системах с общей памятью.// Труды МФТИ, 2012- Т. 4, № 14(2)- C.13-20.

Бабичев Сергей Леонидович

 

 

 

СТАТИЧЕСКИЙ АНАЛИЗ ПРОБЛЕМ СИНХРОНИЗАЦИИ ПАРАЛЛЕЛЬНЫХ АЛГОРИТМОВ В ВЫЧИСЛИТЕЛЬНЫХ СИСТЕМАХ С ОБЩЕЙ ПАМЯТЬЮ

АВТОРЕФЕРАТ

Подписано в печать 11.03.2012 Формат 60 84 1/16. Усл. печ. л. 1,0.

Тираж _80_ экз. Заказ № 727.

Федеральное государственное бюджетное образовательное учреждение

высшего профессионального образования «Московский физико-технический институт (государственный университет)»

Отдел оперативной полиграфии «Физтех-полиграф»

141700, Московская обл., г. Долгопрудный, Институтский пер., 9






© 2011 www.dissers.ru - «Бесплатная электронная библиотека»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.