JSLab. Максим Климишин. "Трансдюсеры, CSP каналы, неизменяемые структуры данных"GeeksLab Odessa
28.03.15. Одесса. Impact Hub Odessa. Конференция JSLab.
Максим Климишин. "Трансдюсеры, CSP каналы, неизменяемые структуры данных"
Эффективное использование новых возможностей JavaScript для построения клиентских и серверных приложений. Как применить современные функциональные инструменты для написания более простого и надежного кода.
Подробнее:
http://geekslab.co/
https://www.facebook.com/GeeksLab.co
https://www.youtube.com/user/GeeksLabVideo
JSLab. Максим Климишин. "Трансдюсеры, CSP каналы, неизменяемые структуры данных"GeeksLab Odessa
28.03.15. Одесса. Impact Hub Odessa. Конференция JSLab.
Максим Климишин. "Трансдюсеры, CSP каналы, неизменяемые структуры данных"
Эффективное использование новых возможностей JavaScript для построения клиентских и серверных приложений. Как применить современные функциональные инструменты для написания более простого и надежного кода.
Подробнее:
http://geekslab.co/
https://www.facebook.com/GeeksLab.co
https://www.youtube.com/user/GeeksLabVideo
Исследования программно-конфигурируемых сетей в Оренбургском государственном ...ARCCN
Доклад Шухмана А.Е., Оренбургский государственный университет, на семинаре "Технологии программно-конфигурируемых сетей в научной и образовательной среде"
Доклад В.Аленькова "Подходы к архитектуре управления жизненным циклом сложного инженерного объекта" на 46 заседании Русского отделения INCOSE 13 июля 2011г. (1/2)
Formal Methods in Robotics
Dmitry Mordvinov, Yury Litvinov, Saint Petersburg State University, Saint Petersburg
12 - 14 November 2015
Tools and Methods of Program Analysis in St. Petersburg
Исследования программно-конфигурируемых сетей в Оренбургском государственном ...ARCCN
Доклад Шухмана А.Е., Оренбургский государственный университет, на семинаре "Технологии программно-конфигурируемых сетей в научной и образовательной среде"
Доклад В.Аленькова "Подходы к архитектуре управления жизненным циклом сложного инженерного объекта" на 46 заседании Русского отделения INCOSE 13 июля 2011г. (1/2)
Formal Methods in Robotics
Dmitry Mordvinov, Yury Litvinov, Saint Petersburg State University, Saint Petersburg
12 - 14 November 2015
Tools and Methods of Program Analysis in St. Petersburg
Victor Kuzmin - How to organize service development for several mobile platforms
Транзакционная память (on Russian)
1. Транзакционная память
Синхронизация без блокировок
Конференция:
Обработка информации и математическое моделирование
Вычислительные системы
Докладчик: Егоров Б.В., МГ-13
Научный руководитель: Курносов М.Г., кафедра ВС
СибГУТИ, 2014
2. Синхронизация параллельных процессов
Для корректного обращения к общему ресурсу параллельных процессов необходима
синхронизация. В настоящий момент активно исследуются методы синхронизации:
• эффективная организация критических секций
• алгоритмы без блокировок
2/8
3. Транзакционная память
Фрагмент параллельной программы выделяется
в транзакцию, выполняемую атомарно:
/* Move item from one list to another */
int move(list *from, list *to) {
__transaction_atomic {
node *n = pop(from);
push(to, n);
}
}
3/8
7. Выводы
Транзакционная память - перспективная технология, предлагающая альтернативу
существующим методам синхронизации.
• использование технологии зачастую упрощает написание параллельных программ;
• позволяет более рационально использовать аппаратное обеспечение.
7/8
Одной из остро стоящих проблем параллельного программирования является разработка эффективных методов синхронизации параллельных процессов (ветвей параллельных алгоритмов и программ). В частности, в мире активно ведутся работы по созданию эффективных методов организации критических секций в параллельных программах для многопроцессорных вычислительных систем с общей памятью (SMP/NUMA-системы, GPU, Intel Xeon Phi). Критическая секция (Critical section) — это фрагмент параллельной программы (указанный программистом), который в любой момент времени выполняется только одним потоком. Такие секции позволяют «защитить» в параллельных программах конкурентный доступ к общей структуре данных.
Критическая секция (Critical section) — это фрагмент параллельной программы (указанный программистом), который в любой момент времени выполняется только одним потоком. Такие секции позволяют «защитить» в параллельных программах конкурентный доступ к общей структуре данных.
Критические секции реализуются при помощи семафоров или их частного случая — мьютексов (mutex, mutual exclusion), которые позволяют реализовать важнейшее свойство критических секций — взаимное исключение (исключается одновременное выполнение кода критической секции двумя потоками).
При входе в критическую секцию один из потоков захватывает мьютекс и продолжает выполнение. Остальные потоки вынуждены ожидать, пока поток не освободит мьютекс при выходе из критической секции. Таким образом, критическая секция — это участок последовательного выполнения параллельной программы и одна из основных причин низкой масштабируемости параллельных программ.
Для некоторых параллельных алгоритмов и программ возможно создать их версии, не использующие мьютексов — алгоритмы без блокировок (lock free algorithms). Это возможно благодаря наличию в составе наборов инструкций современных процессоров атомарных операций (atomic operations), которые на аппаратном уровне выполняются потокобезопасно (threadsafe) даже в многопроцессорной системе).
В настоящее время активно развивается альтернативный подход, позволяющий минимизировать время нахождения потоков в состоянии ожидания освобождения мьютекса, а именно технология транзакционной памяти (transactional memory).
Идея транзакционной памяти заключается в выделении фрагмента параллельной программы в транзакцию, которая выполняется атомарно. При этом потоки работают параллельно до тех пор, пока не обращаются к одному участку памяти одновременно.
Плюсы
простота: для использования нужно лишь отметить блоки кода, использующие общую память, как транзакцию;
высоко конкурентна: потоки работают параллельно, пока не обращаются к одному адресу памяти одновременно.
Минусы
возможно снижение производительности - ТП не является “серебряной пулей”
ограниченность действий: в транзакции можно использовать лишь действия, эффект от которых можно отменить;
сложность отладки.
GCC Является системой гибридной транзакционной памяти, поскольку большинство реализаций аппаратной ТМ используют принцип наибольшего усилия (best effort).
Haskell изначально отделяет функции с побочными эффектами от чистых функции, поэтому реализация ПТП проста.
В транзакции позволяется: чтение транзакционнной переменной; запись в транзакционную переменную. Система типов блокирует иные действия
STM в языке Clojure реализована с помощью управления конкурентным доступом с помощью версионности (MultiVersion Concurrency Control, MVCC).
MVCC предусматривает хранение множественных логических версий данных, используемых в транзакции.
В 2008 году появился первый экспериментальный процессор с поддержкой транзакционной памяти Rock от компании Sun Microsystems. Первая вычислительная система с аппаратной реализацией технологии — Sequoia с архитектурой BlueGene/Q — установлена в 2011. В 2013 компания Intel выпустила серию промышленных процессоров поколения Haswell с расширениями транзакционной синхронизации набора инструкций x86.
В данной работе проведён анализ эффективности аппаратной реализации транзакционной памяти в Intel Haswell в применении к реальным вычислениям. В качестве примера реальной задачи было выбрано конкурентное заполнение гистограммы данных, поскольку решение аналогичной проблемы зачастую требуется во многих задачах высокопроизводительных вычислений (расчёт двухточечной функции корреляции в астрофизике, поразрядная сортировка) [1]. Кроме того, заполнение гистограммы легко поддаётся распараллеливанию путём разделения пространства данных равномерно на все рабочие потоки.
Для исследования эффективности технологии при различном объёме входных данных генерировалась фиктивная структура данных с информацией о пикселях изображения. Далее проводилось заполнение гистограммы яркостей пикселей в конкурентных потоках программы с замером общего времени работы потоков.
На графиках представлены..
Исследование показало, что использование транзакционной памяти может быть простым и эффективным. В поставленном эксперименте для синхронизации доступа с помощью данной технологии требуется лишь отметить цикл итерации по пикселям изображения как транзакцию, дальнейшие действия берёт на себя аппаратное обеспечение и библиотека времени выполнения.