Параллелизм (информатика) - Concurrency (computer science)
В Информатика, параллелизм - это способность различных частей или единиц программы, алгоритма или задачи выполняться в неупорядоченном или частичном порядке, не влияя на конечный результат. Это позволяет выполнять параллельное выполнение параллельных модулей, что может значительно повысить общую скорость выполнения в многопроцессорных и многоядерных системах. В более технических терминах параллелизм относится к свойству разложимости программы, алгоритма или проблемы на независимые от порядка или частично упорядоченные компоненты или единицы.[1]
Ряд математических моделей был разработан для общих параллельных вычислений, включая Сети Петри, технологические расчеты, то параллельная машина с произвольным доступом модель, актерская модель и Reo Координационный язык.
История
В качестве Лесли Лэмпорт (2015) отмечает: «В то время как параллельная программа выполнение рассматривалось в течение многих лет, информатика параллелизма началась с Эдсгер Дейкстра основополагающая статья 1965 года, в которой взаимное исключение проблема. ... В последующие десятилетия наблюдался огромный рост интереса к параллелизму, особенно в распределенные системы. Оглядываясь назад на истоки этой области, можно выделить фундаментальную роль, которую сыграл Эдсгер Дейкстра ».[2]
вопросы
Поскольку вычисления в параллельной системе могут взаимодействовать друг с другом во время выполнения, количество возможных путей выполнения в системе может быть чрезвычайно большим, и конечный результат может быть неопределенный. Одновременное использование общих Ресурсы может быть источником неопределенности, приводящей к таким проблемам, как тупиковые ситуации, и ресурсный голод.[3]
Дизайн параллельных систем часто влечет за собой поиск надежных методов для координации их выполнения, обмена данными, выделение памяти, и планирование выполнения, чтобы минимизировать время отклика и максимизировать пропускная способность.[4]
Теория
Теория параллелизма была активной областью исследований в теоретическая информатика. Одним из первых предложений было Карл Адам Петри плодотворная работа над Сети Петри в начале 1960-х гг. За прошедшие годы было разработано множество формализмов для моделирования и рассуждений о параллелизме.
Модели
Был разработан ряд формализмов для моделирования и понимания параллельных систем, в том числе:[5]
- В параллельная машина с произвольным доступом[6]
- В актерская модель
- Вычислительные мостовые модели, такие как объемная синхронная параллель (BSP) модель
- Сети Петри
- Расчет процесса
- Расчет коммуникационных систем (CCS)
- Связь последовательных процессов (CSP) модель
- π-исчисление
- Кортежные пространства, например, Линда
- Простое параллельное объектно-ориентированное программирование (СОВОК)
- Рео Координационный Язык
Некоторые из этих моделей параллелизма в первую очередь предназначены для поддержки рассуждений и спецификации, в то время как другие могут использоваться на протяжении всего цикла разработки, включая проектирование, реализацию, проверку, тестирование и моделирование параллельных систем. Некоторые из них основаны на передача сообщений, в то время как другие имеют разные механизмы параллелизма.
Распространение различных моделей параллелизма побудило некоторых исследователей разработать способы объединения этих различных теоретических моделей. Например, Ли и Сангиованни-Винчентелли продемонстрировали, что так называемая модель «маркированного сигнала» может использоваться для обеспечения общей основы для определения денотационная семантика множества различных моделей параллелизма,[7] в то время как Нильсен, Сассоне и Винскель продемонстрировали, что теория категорий может использоваться для обеспечения одинакового единого понимания различных моделей.[8]
Теорема представления параллелизма в модели акторов обеспечивает довольно общий способ представления параллельных систем, которые закрыты в том смысле, что они не получают сообщений извне. (Другие системы параллелизма, например, технологические расчеты можно смоделировать в модели акторов с помощью протокол двухфазной фиксации.[9]) Математическое обозначение замкнутой системы S строится все более и более точные приближения из начального поведения, называемого ⊥S используя функцию аппроксимации поведения прогрессS построить обозначение (значение) для S следующее:[10]
- ОбозначитьS ≡ ⊔i∈ω прогрессSя(⊥S)
Таким образом, S можно математически охарактеризовать с точки зрения всех его возможных вариантов поведения.
Логика
Различные виды темпоральная логика[11] может использоваться, чтобы помочь рассуждать о параллельных системах. Некоторые из этих логик, например линейная темпоральная логика и логика дерева вычислений, позволяют делать утверждения о последовательностях состояний, через которые может проходить параллельная система. Другие, такие как логика вычислительного дерева действий, Логика Хеннесси-Милнера, и Лампорта временная логика действий, строят свои утверждения из последовательностей действия (изменения состояния). Основное применение этой логики - написание спецификаций для параллельных систем.[3]
Упражняться
Параллельное программирование охватывает языки программирования и алгоритмы, используемые для реализации параллельных систем. Параллельное программирование обычно считается более общим, чем параллельное программирование потому что он может включать произвольные и динамические шаблоны коммуникации и взаимодействия, тогда как параллельные системы обычно имеют заранее определенный и хорошо структурированный шаблон коммуникации. Основные цели параллельного программирования включают: правильность, спектакль и надежность. Параллельные системы, такие как Операционные системы и Системы управления базами данных обычно предназначены для работы в течение неопределенного времени, включая автоматическое восстановление после сбоя, и не прекращают работу неожиданно (см. Контроль параллелизма ). Некоторые параллельные системы реализуют форму прозрачного параллелизма, при которой параллельные вычислительные объекты могут конкурировать за один ресурс и совместно использовать его, но сложность этой конкуренции и совместного использования скрыта от программиста.
Поскольку они используют общие ресурсы, параллельные системы в целом требуют включения каких-то арбитр где-то в их реализации (часто в базовом оборудовании), чтобы контролировать доступ к этим ресурсам. Использование арбитров дает возможность неопределенность в параллельных вычислениях что имеет серьезные последствия для практики, включая правильность и производительность. Например, арбитраж вводит неограниченный недетерминизм что вызывает проблемы с проверка модели потому что это вызывает взрыв в пространстве состояний и может даже привести к тому, что модели будут иметь бесконечное количество состояний.
Некоторые модели параллельного программирования включают сопроцессы и детерминированный параллелизм. В этих моделях потоки управления явно урожай их временные рамки, либо к системе, либо к другому процессу.
Смотрите также
- Чу пространство
- Клиент – сервер сетевые узлы
- Clojure
- Кластер узлы
- Контроль параллелизма
- Параллельные вычисления
- Параллельное объектно-ориентированное программирование
- Шаблон параллелизма
- D (язык программирования)
- Распределенные системные узлы
- Эликсир (язык программирования)
- Erlang (язык программирования)
- Go (язык программирования)
- Гордон Паск
- Международная конференция по теории параллелизма (КОНКУР)
- OpenMP
- Параллельные вычисления
- Разделенное глобальное адресное пространство
- Процессы
- Проект Птолемея
- Rust (язык программирования)
- Сноп (математика)
- Потоки
- X10 (язык программирования)
Рекомендации
- ^ Лэмпорт, Лесли (июль 1978 г.). «Время, часы и порядок событий в распределенной системе» (PDF). Коммуникации ACM. 21 (7): 558–565. Дои:10.1145/359545.359563. Получено 4 февраля 2016.
- ^ Лэмпорт, Лесли. «Лекция Тьюринга: Компьютерные науки о параллелизме: первые годы (Сообщения ACM, том 58, № 6, июнь 2015 г.)». ACM. Получено 22 марта 2017.
- ^ а б Кливленд, Рэнс; Скотт Смолка (декабрь 1996 г.). «Стратегические направления в исследовании параллелизма». Опросы ACM Computing. 28 (4): 607. Дои:10.1145/242223.242252.
- ^ Кэмпбелл, Колин; Джонсон, Ральф; Миллер, Аде; Тоуб, Стивен (август 2010). Параллельное программирование с Microsoft .NET. Microsoft Press. ISBN 978-0-7356-5159-3.
- ^ Фильман, Роберт; Дэниел Фридман (1984). Скоординированные вычисления - инструменты и методы для распределенного программного обеспечения. Макгроу-Хилл. ISBN 978-0-07-022439-1.
- ^ Келлер, Йорг; Кристоф Кесслер; Джеспер Трэфф (2001). Практическое программирование PRAM. Джон Уайли и сыновья.
- ^ Ли, Эдвард; Альберто Сангиованни-Винчентелли (декабрь 1998 г.). «Платформа для сравнения моделей вычислений» (PDF). IEEE Transactions по CAD. 17 (12): 1217–1229. Дои:10.1109/43.736561.
- ^ Могенс Нильсен; Владимиро Сассоне; Глинн Винскель (1993). «Взаимосвязи между моделями параллелизма». Школа / Симпозиум REX.
- ^ Фредерик Кнабе. Распределенный протокол для связи на основе каналов с Choice PARLE 1992.
- ^ Уильям Клингер (Июнь 1981 г.). «Основы актерской семантики». Докторская диссертация по математике. Массачусетский технологический институт. HDL:1721.1/6935. Цитировать журнал требует
| журнал =
(помощь) - ^ Роско, Колин (2001). Модальные и временные свойства процессов.. Springer. ISBN 978-0-387-98717-0.
дальнейшее чтение
- Линч, Нэнси А. (1996). Распределенные алгоритмы. Морган Кауфманн. ISBN 978-1-55860-348-6.
- Таненбаум, Эндрю С .; Ван Стин, Маартен (2002). Распределенные системы: принципы и парадигмы. Прентис Холл. ISBN 978-0-13-088893-8.
- Курки-Суонио, Рейно (2005). Практическая теория реактивных систем. Springer. ISBN 978-3-540-23342-8.
- Гарг, Виджай К. (2002). Элементы распределенных вычислений. Wiley-IEEE Press. ISBN 978-0-471-03600-5.
- Маги, Джефф; Крамер, Джефф (2006). Параллелизм: модели состояний и программирование на Java. Вайли. ISBN 978-0-470-09355-9.
- Дистефано, С., Брунео, Д. (2015). Количественные оценки распределенных систем: методологии и техники (1-е изд.). Сомерсет: John Wiley & Sons Inc.ISBN 9781119131144
- Бхаттачарья, С. С. (2013; 2014;). Справочник по системам обработки сигналов (Второй; 2; 2-й 2013; ред.). Нью-Йорк, штат Нью-Йорк: Springer, 10.1007 / 978-1-4614-6859-2 ISBN 9781461468592
- Вольтер, К. (2012; 2014;). Оценка устойчивости и оценка вычислительных систем (1. Aufl.; 1; ed.). Лондон; Берлин ;: Springer. ISBN 9783642290329