ТЕОРИЯ И ПРАКТИКА МНОГОПОТОЧНОГО ПРОГРАММИРОВАНИЯ Тема 15 Методика разработки и анализа неблокирующих алгоритмов. Д.ф.-м.н., профессор А.Г. Тормасов Базовая.

Презентация:



Advertisements
Похожие презентации
ТЕОРИЯ И ПРАКТИКА МНОГОПОТОЧНОГО ПРОГРАММИРОВАНИЯ Тема 11 Свойства примитивов по отношению к числам консенсуса Д. ф.- м. н., профессор А. Г. Тормасов Базовая.
Advertisements

ТЕОРИЯ И ПРАКТИКА МНОГОПОТОЧНОГО ПРОГРАММИРОВАНИЯ Тема 6 Проблемы и специфика параллельного программирования Д. ф.- м. н., профессор А. Г. Тормасов Базовая.
АЛГОРИТМЫ И СТРУКТУРЫ ДАННЫХ АЛГОРИТМЫ И СТРУКТУРЫ ДАННЫХ Лекции для студентов-заочников 2 курса, специальность (Прикладная информатика)
О конформности Си-программ Михаил Посыпкин ИСП РАН.
ТЕОРИЯ И ПРАКТИКА МНОГОПОТОЧНОГО ПРОГРАММИРОВАНИЯ Тема 1 Введение Д. ф.- м. н., профессор А. Г. Тормасов Базовая Кафедра « Теоретическая и Прикладная Информатика.
Управление процессами 3.Взаимодействие процессов: синхронизация, тупики 3.1.Разделение ресурсов 3.2.Взаимное исключение Проблемы реализации взаимного.
МГУ имени Ломоносова, механико-математический факультет, кафедра вычислительной математики Исследование проблемы переполнения буферов в программах Пучков.
Алгоритмизация и требования к алгоритму Алгоритм и алгоритмизация Алгоритм и алгоритмизация.
Управление процессами 3.Взаимодействие процессов: синхронизация, тупики 3.1.Разделение ресурсов 3.2.Взаимное исключение Проблемы реализации взаимного.
Введение в теорию сетевого планированияВведение в теорию сетевого планирования.
Так С 1- С 4 представляют собой составное задание, или так называемый мини - тест. Он включает фрагмент источника и четыре вопроса - задания на его анализ.
« Автоматизация процесса поиска потенциальных взаимных блокировок в моделях многопоточного программного обеспечения » « Автоматизация процесса поиска потенциальных.
1 Массивы 2 Опр. Массивом называется совокупность однотипных данных, связанных общим именем. Основные характеристики массива: 1. Имя массива 2. Тип компонентов.
ФГОБУ ВПО "СибГУТИ" Кафедра вычислительных систем Алгоритмы поиска Преподаватель: Доцент Кафедры ВС, к.т.н. Поляков Артем Юрьевич © Кафедра вычислительных.
МАССИВЫ 4 Определение 4 Описание 4 Обращение к элементам массива 4 Связь массивов с указателями 4 Примеры программ.
Что нужно знать: динамическое программирование – это способ решения сложных задач путем сведения их к более простым задачам того же типа динамическое.
Переменная - это величина, которая имеет имя, тип и значение. Значение переменной может меняться во время выполнения программы. В компьютерах каждая переменная.
Урок развивающего контроля. Деятельностная цель: формирование у учащихся способностей к осуществлению контрольной функции. Содержательная цель: контроль.
Урок развивающего контроля. Деятелъностная цель: формирование у учащихся способностей к осуществлению контрольной функции. Содержательная цель: контроль.
ХНУРЭ, кафедра ПО ЭВМ, Тел , Лекции Н.В. Белоус Факультет компьютерных наук Кафедра ПО ЭВМ, ХНУРЭ Компьютерная.
Транксрипт:

ТЕОРИЯ И ПРАКТИКА МНОГОПОТОЧНОГО ПРОГРАММИРОВАНИЯ Тема 15 Методика разработки и анализа неблокирующих алгоритмов. Д.ф.-м.н., профессор А.Г. Тормасов Базовая кафедра «Теоретическая и Прикладная Информатика», МФТИ

Тема Методика анализа процесса соисполнения асинхронных параллельных алгоритмов Разрешенные и не разрешенные условия гонок в программах Условия корректности алгоритмов Машинный анализ алгоритмов 2Кафедра информатики МФТИ

Анализ алгоритмов Проблема наличия состояний конкурентного доступа к памяти (состояний гонки), приводящих к некорректной работе многопоточных алгоритмов. Недостатки использования блокировок Эффективность исполнения Взаимоблокировки, блокирование потоков из-за ошибки Проблемы существующих методов детектирования состояний гонки Сложность формального доказательства, построение заново для нового алгоритма Ситуация, приводящая к некорректной работе, может возникать очень редко Ситуация, не приводящая к некорректной работе, может определяться как ошибочная Необходим метод детектирования состояний гонки, приводящих к некорректной работе многопоточных алгоритмов Универсальный Автоматизируемый Учитывающий специфику многопоточного алгоритма и аппаратной платформы 3

4 Модель исполнения потоков N потоков исполнения, - атомарная инструкция на архитектуре x86 N+1 набор ячеек памяти - ячейки памяти, доступные только из i-го потока, i=1..N - ячейки общей памяти, доступные из всех N потоков S – состояние исполнения потоков – совокупность значений всех ячеек памяти – линеаризованная история исполнения ( - одна из инструкций ) p – функция корректности, учитывающая специфику решаемой задачи Задается извне Критерий наличия состояний гонки, приводящих к некорректной работе алгоритма. Формально определяет правильность решения задачи. Допустимый вариант - условия на значения после завершения работы потоков Не учитываются исключительные ситуации – прерывания, ошибки доступа к памяти и т.д.

5 Анализ инструкций потоков Классификация инструкций: Операции чтения. Поток считывает значение одной из общих ячеек памяти. Обозначение – R. Операции записи. Поток записывает значение в одну из общих ячеек памяти. Обозначение – W. Другие операции. Операции, не входящие ни в один из вышеописанных классов. Обозначение – X. Обозначение, где i – номер общей ячейки памяти, j – номер потока исполнения (например, ). Рассмотрим две операции в разных потоках и. Лемма. Состояние исполнения S после выполнения операций может зависеть от их порядка, если j=k Такие операции – некоммутирующие. A=R, B=W A=W, B=R A=W, B=W

6 Моделирование соисполнения двух потоков Два потока исполнения Функция корректности задана в виде, где - состояние исполнения после завершения работы потоков (результирующее состояние исполнения). - начальная вершина, - конечная. Уровень вершины - i+j. Ориентированный путь из начальной вершины в конечную - полный путь. Всего таких путей, а. Лемма. Существует взаимно-однозначное соответствие между вариантами совместного исполнения потоков и полными путями в соответствующем графе совместного исполнения потоков. Дуги, где j=1,…,n+1 - представляют i-ую операцию, выполняемую первым потоком. Дуги, где i=1,…,k+1 - представляют j-ую операцию, выполняемую вторым потоком. Полный путь представляет соответствующий ему вариант совместного исполнения потоков. Граф совместного исполнения потоков – ориентированный граф

Классы эквивалентности путей на графе 7

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

Оценка числа классов эквивалентности 9

Анализ графа совместного исполнения 10 Для анализа достаточно вычислить результирующие состояния исполнения S только для одного представителя каждого из классов. Удалив из графа дуги, которые не входят в полные пути, соответствующие выбранным представителям классов, получим редуцированный граф совместного исполнения потоков. Результирующее состояние исполнения потоков может быть вычислено в неопределенных коэффициентах, двигаясь от начальной вершины графа к конечной (подробнее метод будет рассмотрен на примерах). Чтобы определить, возможно ли возникновение неразрешенного состояния гонки, остается проанализировать полученное состояние S с помощью функции корректности p. Рассуждения достаточно просто обобщить на случай фиксированного числа потоков, большего двух.

11 Методика анализа Построение графа совместного исполнения потоков Поиск эквивалентных путей на графе Анализ представителя каждого из классов эквивалентности с помощью функции корректности p Ответ на вопрос о правильной работе многопоточного алгоритма

Примеры. Изменение ячейки в двух потоках 12 Представление состояния исполнения потоков S в виде совокупности векторов (a,b,c), где a – это значение ячейки памяти, b – считанное значение ячейки, которым оперирует первый поток, c – считанное значение ячейки, которым оперирует второй поток. - модификация считанного значения, c помощью функции f. Первый поток выполняет Второй поток выполняет Начальное состояние исполнения (m,-,-). Функция корректности p – требование константности результирующего состояния исполнения потоков. Число вариантов исполнения 20, анализируемых 4.

Примеры. Транзакционное изменение двух ячеек 13 Функция корректности p – требование константности результирующего состояния исполнения потоков. Число вариантов исполнения 28, анализируемых 4.

14 Ветвления в алгоритмах. Алгоритм Петерсона Усложнение анализа. В функции корректности p могут быть указаны условия на одновременную достижимость участков кода. Существует алгоритм, уменьшающий сложность перебора, за счет использования ранее доказанных свойств коммутирующих операций. A1: ready[0]=1; A2: turn=1; A3: while ( ready[1] && A4: turn==1); A5: //действие 1 A6: ready[0]=0; B1: ready[1]=1; B2: turn=0; B3: while ( ready[0] && B4: turn==0); B5: //действие 2 B6: ready[1]=0;

15 Неблокирующая реализация алгоритма очереди Исследование неблокирующих реализаций алгоритмов – одно из приоритетных направлений для дальнейшей работы. массив int q[N], int tail, int head. head содержит номер первого элемента tail – номер свободной ячейки, следующей за последним элементом Корректная работа параллельного добавления элементов при начальном состоянии N > 2, q[0] = c, q[1] = 0, q[2] = 0, head = 0, tail = 1. … while (1) { A1(B1): t=tail; A2(B2): if (t == N) return 0; A3(B3): if (q[t] != NULL) { A4(B4): CAS(tail, t, t+1); continue;} A5(B5): if (CAS(q[t], NULL, x)) { A6(B6): CAS(tail, t, t+1); return 1;} }

Выводы Предложена методика анализа конкурентного исполнения программ Ее можно автоматизировать Развитие – перестановки операций, связанные с аппаратной платформой; циклы; обобщение на n потоков Приглашаю желающих заниматься этой темой в качестве НИР. 16

(с) А. Тормасов, г. Базовая кафедра «Теоретическая и Прикладная Информатика» ФУПМ МФТИ crec.mipt.ru_ Для коммерческого использования курса просьба связаться с автором. Теоретическая и Прикладная Информатика, МФТИ17