Что такое детерминированный параллелизм? - PullRequest
7 голосов
/ 24 февраля 2011

Я слышал, что существует 3 вида параллелизма.

  1. Детерминированный параллелизм
  2. Параллелизм при передаче сообщений
  3. Параллелизм общего состояния

Я знаю # 2 (= модель актера) и # 3 (= общие потоки), но не # 1.Что это?

Ответы [ 2 ]

7 голосов
/ 13 марта 2011

Детерминированный параллелизм - это модель параллельного программирования, в которой программы, написанные в этой модели, имеют следующее свойство: для заданного набора входных данных выходные значения программы одинаковы для любого расписания выполнения.Это означает, что выходные данные программы зависят исключительно от входных данных программы.

Существуют способы обеспечить это свойство.Одним из способов является так называемое программирование с одним присваиванием, при котором переменные не нужно инициализировать, а можно назначать не более одного раза.Чтение неинициализированной переменной останавливается до тех пор, пока ей не будет присвоено значение (возможно, каким-то другим потоком).Язык программирования Mozart поддерживает их.

Другой способ - использовать анализ владения, чтобы определить, какие потоки «владеют» различными ссылками, и убедиться, что ни один поток не записывает ссылку в одно и то же «время»,так что нет данных гонок.

0 голосов
/ 24 февраля 2011

Я раньше не слышал этот термин, но сопрограммы приходят на ум. Они не обеспечивают «истинного» параллелизма в том смысле, что в любой конкретный момент времени выполняется только одна подпрограмма, но они параллельны в том смысле, что группа взаимодействующих сопрограмм может добиться прогресса, не дожидаясь, пока отделка.

...