1 / 17

ТЕОРИЯ И ПРАКТИКА МНОГОПОТОЧНОГО ПРОГРАММИРОВАНИЯ

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

talmai
Download Presentation

ТЕОРИЯ И ПРАКТИКА МНОГОПОТОЧНОГО ПРОГРАММИРОВАНИЯ

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

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

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

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

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

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

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

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

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

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

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

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

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

  15. Неблокирующая реализация алгоритма очереди • Исследование неблокирующих • реализаций алгоритмов – одно из • приоритетных направлений • для дальнейшей работы. • массив intq[N], inttail,inthead. • 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;} } 15

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

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

More Related