SlideShare a Scribd company logo
Транзакционная память
Синхронизация без блокировок
Конференция:
Обработка информации и математическое моделирование
Вычислительные системы
Докладчик: Егоров Б.В., МГ-13
Научный руководитель: Курносов М.Г., кафедра ВС
СибГУТИ, 2014
Синхронизация параллельных процессов
Для корректного обращения к общему ресурсу параллельных процессов необходима
синхронизация. В настоящий момент активно исследуются методы синхронизации:
• эффективная организация критических секций
• алгоритмы без блокировок
2/8
Транзакционная память
Фрагмент параллельной программы выделяется
в транзакцию, выполняемую атомарно:
/* Move item from one list to another */
int move(list *from, list *to) {
__transaction_atomic {
node *n = pop(from);
push(to, n);
}
}
3/8
Реализации транзакционной памяти
Программные: GCC 4.7+, Haskell, Clojure
Аппаратные: Sun Rock (2008), IBM BlueGene/Q (2011), Intel Haswell (2013).
4/8
Анализ эффективности
Конкурентное заполнение гистограммы яркостей пикселей изображения в формате BMP.
Рассматривались различные методы синхронизации:
• взаимное исключение (mutex);
• атомарные операции процессора;
• транзакционная память.
Аппаратное обеспечение: Intel(R) Core(TM) i7-4770 с 8Гб оперативной памяти.
5/8
Результаты
6/8
Выводы
Транзакционная память - перспективная технология, предлагающая альтернативу
существующим методам синхронизации.
• использование технологии зачастую упрощает написание параллельных программ;
• позволяет более рационально использовать аппаратное обеспечение.
7/8
Спасибо за внимание!
8/8

More Related Content

Similar to Транзакционная память (on Russian)

О.В.Сухорослов "Параллельное программирование. Часть 2"
О.В.Сухорослов "Параллельное программирование. Часть 2"О.В.Сухорослов "Параллельное программирование. Часть 2"
О.В.Сухорослов "Параллельное программирование. Часть 2"
Yandex
 
Исследования программно-конфигурируемых сетей в Оренбургском государственном ...
Исследования программно-конфигурируемых сетей в Оренбургском государственном ...Исследования программно-конфигурируемых сетей в Оренбургском государственном ...
Исследования программно-конфигурируемых сетей в Оренбургском государственном ...
ARCCN
 
Bgp методякоби
Bgp методякобиBgp методякоби
Bgp методякобиMichael Karpov
 
Распределенная статистическая система машинного перевода (Distributed statist...
Распределенная статистическая система машинного перевода (Distributed statist...Распределенная статистическая система машинного перевода (Distributed statist...
Распределенная статистическая система машинного перевода (Distributed statist...
Ilya Nikitin
 
В.Аленьков -- подходы к архитектуре СУЖЦ (1/2)
В.Аленьков -- подходы к архитектуре СУЖЦ (1/2)В.Аленьков -- подходы к архитектуре СУЖЦ (1/2)
В.Аленьков -- подходы к архитектуре СУЖЦ (1/2)
Anatoly Levenchuk
 
О.В.Сухорослов "Параллельное программирование"
О.В.Сухорослов "Параллельное программирование"О.В.Сухорослов "Параллельное программирование"
О.В.Сухорослов "Параллельное программирование"
Yandex
 
Soft labs. достижима ли в c++ эффективность языка среднего уровня
Soft labs. достижима ли в c++ эффективность языка среднего уровняSoft labs. достижима ли в c++ эффективность языка среднего уровня
Soft labs. достижима ли в c++ эффективность языка среднего уровняLuxoftTraining
 
TMPA-2015: Formal Methods in Robotics
TMPA-2015: Formal Methods in RoboticsTMPA-2015: Formal Methods in Robotics
TMPA-2015: Formal Methods in Robotics
Iosif Itkin
 
MPIPerf: пакет оценки эффективности коммуникационных функций стандарта MPI
MPIPerf: пакет оценки эффективности коммуникационных функций стандарта MPIMPIPerf: пакет оценки эффективности коммуникационных функций стандарта MPI
MPIPerf: пакет оценки эффективности коммуникационных функций стандарта MPIMikhail Kurnosov
 
Lightweight Static Analysis for Data Race Detection in Operating System Kernels
Lightweight Static Analysis for Data Race Detection in Operating System KernelsLightweight Static Analysis for Data Race Detection in Operating System Kernels
Lightweight Static Analysis for Data Race Detection in Operating System Kernels
Iosif Itkin
 
Виртуалтрединг
ВиртуалтредингВиртуалтрединг
Виртуалтрединг
CEE-SEC(R)
 
Современна Программная инженерия. Системная инженерия
Современна Программная инженерия. Системная инженерияСовременна Программная инженерия. Системная инженерия
Современна Программная инженерия. Системная инженерияMarcus Akoev
 
Victor Kuzmin - How to organize service development for several mobile platforms
Victor Kuzmin - How to organize service development for several mobile platformsVictor Kuzmin - How to organize service development for several mobile platforms
Victor Kuzmin - How to organize service development for several mobile platformsAndrew Mayorov
 

Similar to Транзакционная память (on Russian) (14)

О.В.Сухорослов "Параллельное программирование. Часть 2"
О.В.Сухорослов "Параллельное программирование. Часть 2"О.В.Сухорослов "Параллельное программирование. Часть 2"
О.В.Сухорослов "Параллельное программирование. Часть 2"
 
Исследования программно-конфигурируемых сетей в Оренбургском государственном ...
Исследования программно-конфигурируемых сетей в Оренбургском государственном ...Исследования программно-конфигурируемых сетей в Оренбургском государственном ...
Исследования программно-конфигурируемых сетей в Оренбургском государственном ...
 
презентация6
презентация6презентация6
презентация6
 
Bgp методякоби
Bgp методякобиBgp методякоби
Bgp методякоби
 
Распределенная статистическая система машинного перевода (Distributed statist...
Распределенная статистическая система машинного перевода (Distributed statist...Распределенная статистическая система машинного перевода (Distributed statist...
Распределенная статистическая система машинного перевода (Distributed statist...
 
В.Аленьков -- подходы к архитектуре СУЖЦ (1/2)
В.Аленьков -- подходы к архитектуре СУЖЦ (1/2)В.Аленьков -- подходы к архитектуре СУЖЦ (1/2)
В.Аленьков -- подходы к архитектуре СУЖЦ (1/2)
 
О.В.Сухорослов "Параллельное программирование"
О.В.Сухорослов "Параллельное программирование"О.В.Сухорослов "Параллельное программирование"
О.В.Сухорослов "Параллельное программирование"
 
Soft labs. достижима ли в c++ эффективность языка среднего уровня
Soft labs. достижима ли в c++ эффективность языка среднего уровняSoft labs. достижима ли в c++ эффективность языка среднего уровня
Soft labs. достижима ли в c++ эффективность языка среднего уровня
 
TMPA-2015: Formal Methods in Robotics
TMPA-2015: Formal Methods in RoboticsTMPA-2015: Formal Methods in Robotics
TMPA-2015: Formal Methods in Robotics
 
MPIPerf: пакет оценки эффективности коммуникационных функций стандарта MPI
MPIPerf: пакет оценки эффективности коммуникационных функций стандарта MPIMPIPerf: пакет оценки эффективности коммуникационных функций стандарта MPI
MPIPerf: пакет оценки эффективности коммуникационных функций стандарта MPI
 
Lightweight Static Analysis for Data Race Detection in Operating System Kernels
Lightweight Static Analysis for Data Race Detection in Operating System KernelsLightweight Static Analysis for Data Race Detection in Operating System Kernels
Lightweight Static Analysis for Data Race Detection in Operating System Kernels
 
Виртуалтрединг
ВиртуалтредингВиртуалтрединг
Виртуалтрединг
 
Современна Программная инженерия. Системная инженерия
Современна Программная инженерия. Системная инженерияСовременна Программная инженерия. Системная инженерия
Современна Программная инженерия. Системная инженерия
 
Victor Kuzmin - How to organize service development for several mobile platforms
Victor Kuzmin - How to organize service development for several mobile platformsVictor Kuzmin - How to organize service development for several mobile platforms
Victor Kuzmin - How to organize service development for several mobile platforms
 

Транзакционная память (on Russian)

Editor's Notes

  1. Одной из остро стоящих проблем параллельного программирования является разработка эффективных методов синхронизации параллельных процессов (ветвей параллельных алгоритмов и программ). В частности, в мире активно ведутся работы по созданию эффективных методов организации критических секций в параллельных программах для многопроцессорных вычислительных систем с общей памятью (SMP/NUMA-системы, GPU, Intel Xeon Phi). Критическая секция (Critical section) — это фрагмент параллельной программы (указанный программистом), который в любой момент времени выполняется только одним потоком. Такие секции позволяют «защитить» в параллельных программах конкурентный доступ к общей структуре данных.
  2. Критическая секция (Critical section) — это фрагмент параллельной программы (указанный программистом), который в любой момент времени выполняется только одним потоком. Такие секции позволяют «защитить» в параллельных программах конкурентный доступ к общей структуре данных. Критические секции реализуются при помощи семафоров или их частного случая — мьютексов (mutex, mutual exclusion), которые позволяют реализовать важнейшее свойство критических секций — взаимное исключение (исключается одновременное выполнение кода критической секции двумя потоками). При входе в критическую секцию один из потоков захватывает мьютекс и продолжает выполнение. Остальные потоки вынуждены ожидать, пока поток не освободит мьютекс при выходе из критической секции. Таким образом, критическая секция — это участок последовательного выполнения параллельной программы и одна из основных причин низкой масштабируемости параллельных программ. Для некоторых параллельных алгоритмов и программ возможно создать их версии, не использующие мьютексов — алгоритмы без блокировок (lock free algorithms). Это возможно благодаря наличию в составе наборов инструкций современных процессоров атомарных операций (atomic operations), которые на аппаратном уровне выполняются потокобезопасно (threadsafe) даже в многопроцессорной системе). В настоящее время активно развивается альтернативный подход, позволяющий минимизировать время нахождения потоков в состоянии ожидания освобождения мьютекса, а именно технология транзакционной памяти (transactional memory).
  3. Идея транзакционной памяти заключается в выделении фрагмента параллельной программы в транзакцию, которая выполняется атомарно. При этом потоки работают параллельно до тех пор, пока не обращаются к одному участку памяти одновременно. Плюсы простота: для использования нужно лишь отметить блоки кода, использующие общую память, как транзакцию; высоко конкурентна: потоки работают параллельно, пока не обращаются к одному адресу памяти одновременно. Минусы возможно снижение производительности - ТП не является “серебряной пулей” ограниченность действий: в транзакции можно использовать лишь действия, эффект от которых можно отменить; сложность отладки.
  4. GCC Является системой гибридной транзакционной памяти, поскольку большинство реализаций аппаратной ТМ используют принцип наибольшего усилия (best effort). Haskell изначально отделяет функции с побочными эффектами от чистых функции, поэтому реализация ПТП проста. В транзакции позволяется: чтение транзакционнной переменной; запись в транзакционную переменную. Система типов блокирует иные действия STM в языке Clojure реализована с помощью управления конкурентным доступом с помощью версионности (MultiVersion Concurrency Control, MVCC). MVCC предусматривает хранение множественных логических версий данных, используемых в транзакции. В 2008 году появился первый экспериментальный процессор с поддержкой транзакционной памяти Rock от компании Sun Microsystems. Первая вычислительная система с аппаратной реализацией технологии — Sequoia с архитектурой BlueGene/Q — установлена в 2011. В 2013 компания Intel выпустила серию промышленных процессоров поколения Haswell с расширениями транзакционной синхронизации набора инструкций x86.
  5. В данной работе проведён анализ эффективности аппаратной реализации транзакционной памяти в Intel Haswell в применении к реальным вычислениям. В качестве примера реальной задачи было выбрано конкурентное заполнение гистограммы данных, поскольку решение аналогичной проблемы зачастую требуется во многих задачах высокопроизводительных вычислений (расчёт двухточечной функции корреляции в астрофизике, поразрядная сортировка) [1]. Кроме того, заполнение гистограммы легко поддаётся распараллеливанию путём разделения пространства данных равномерно на все рабочие потоки.
  6. Для исследования эффективности технологии при различном объёме входных данных генерировалась фиктивная структура данных с информацией о пикселях изображения. Далее проводилось заполнение гистограммы яркостей пикселей в конкурентных потоках программы с замером общего времени работы потоков. На графиках представлены..
  7. Исследование показало, что использование транзакционной памяти может быть простым и эффективным. В поставленном эксперименте для синхронизации доступа с помощью данной технологии требуется лишь отметить цикл итерации по пикселям изображения как транзакцию, дальнейшие действия берёт на себя аппаратное обеспечение и библиотека времени выполнения.