Студопедия
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Параллельная обработка

Читайте также:
  1. Алюминий и его сплавы. Классификация алюминиевых сплавов. Деформируемые алюминиевые сплавы. Дуралюмины, термическая обработка дуралюминов. Примеры, маркировка.
  2. Вопрос №12 хлорирование, озонирование, ультрафиолетовая и термическая обработка.
  3. Гипс. Обработка гипса, свойства. Применение. Способы изменения скорости затвердевания и прочности гипса. Хранение гипса
  4. Жаропрочные А стали. Термообработка аустенитных сталей.
  5. Защита персональных данных работника. Понятие, обработка, хранение и использование персональных данных.
  6. ИЗМЕРЕНИЯ И ОБРАБОТКА РЕЗУЛЬТАТОВ.
  7. Информационное обеспечение экономического анализа. Систематизация и обработка экономической информации
  8. ЛАБОРАТОРНАЯ РАБОТА 13. УКАЗАТЕЛИ. ДИНАМИЧЕСКИЕ СТРУКТУРЫ ДАННЫХ. ОБРАБОТКА ДВУХСВЯЗНЫХ СПИСКОВ
  9. Лекция 3. Результаты измерений и их погрешности. Обработка результатов прямых измерений
  10. Металлобработка

Лекция 5. Асинхронные процессы.

Определение

Процессы называются параллельными, если они существуют одновременно. Параллельные процессы могут работать совершенно независимо друг от друга или они могут быть асинхронными — это значит, что им необходимо периодически синхронизироваться и взаимодействовать.

 

Решение этих проблем иллюстрируется на примерах параллельных программ, написанных с применением нотации, аналогичной, хотя и не идентичной, нотации параллельного Паскаля, языка программирования, который разработал Бринк Хансен.

 

Еще один популярный язык параллельного программирования, созданный на базе Паскаля,— это язык Модула, разработанный Никлаусом Виртом и средства параллельного программирования, реализованные в новом языке Ада.

Параллельная обработка

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

Если определенные операции логически можно выполнять параллельно, то компьютеры новых поколений будут физически выполнять их параллельно, даже если требуемая степень параллелизма будет при этом выражаться в тысячах или, быть может, даже миллионах параллельных процессов.

 

Параллельная обработка вызывает активный интерес по ряду причин. Люди, как правило, скорее способны концентрировать свое внимание на выполнении в каждый момент времени лишь одной операции, чем думать о параллельных вещах.

 

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

 

Асинхронные процессы должны периодически взаимодействовать друг с другом, причем эти взаимодействий могут быть достаточно сложными. В настоящей главе и в нескольких последующих мы рассмотрим много примеров взаимодействий между процессами.

 

Доказывать корректность для параллельных программ гораздо труднее, чем для последовательных.

 

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

5.3 Управляющая конструкция для указания параллелизма: Parbegin/Parend

 

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

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

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

Эти операторы всегда встречаются парами и обычно носят такие названия, как

parbegin/parend

(«начало/конец параллельного выполнения») или cobegin/coend («начало/конец совмещенного выполнения»). Будем использовать два оператора parbegin/parend, как рекомендует Дейкстра (рис. 5.1).

 

parbegin оператор 1;

оператор 2;

оператор n

parend

Рис. 5.1 Конструкция parbegin/parend для указания параллелизма.

Предположим, что в программе, где в данный момент выполняется единая последовательность команд, встречается первый оператор управляющей конструкции parbegin. Это приводит к тому, что единая цепочка управления разделяется на п отдельных самостоятельных цепочек — по одной для каждого внутреннего оператора данной конструкции.

Это могут быть простые операторы, вызовы процедур, блоки последовательных операторов с ограничителями begin/end или какие-либо комбинации этих элементов. Каждая из отдельных цепочек управления со временем завершается и приходит к конечному оператору parend» Когда, наконец, завершается последняя из всех этих параллельных цепочек, они снова сливаются в единую цепочку управления и программа проходит» точку parend.

 

В качестве примера рассмотрим следующее вычисление одного корня квадратного уравнения:

х: = (—b+(b**2—4*а*с)**0.5)/(2*а)

 

Этот оператор присваивания можно вычислить при помощи последовательного процессора (имеющего команду возведения в степень) следующим образом;

 

1 - b**2

2 - 4*а

3 - (4*а)*с

4 - (b**2)—(4*a*c)

5 - (b**2—4*a*c)**0.5

6 - —b

7 - (—b)+((b**2—4*a*c)**.5)

8 - 2*a

9 - (—b+(b**2—4*a*c)**0.5)/(2*a)

 

 

Здесь каждая из девяти указанных операций выполняется в последовательности, определяемой принятыми в системе правилами предшествования операторов.

 

А в системе, предусматривающей параллельную обработку, данное выражение может быть вычислено следующим образом:

parbegin

1 temp1: = —b;

temp2: = b**2;

temp3: = 4*a;

temp4: = 2*a

parend;

2 temp5: = temp3*c;

3 temp5: = temp2—temp5;

4 temp5: = temp5**0.5;

5 temp5: = templ+temp5;

6 x: = temp5/temp4

Здесь четыре операции, входящие в конструкцию parbegin/ parend, выполняются параллельно, а остальные пять операций по-прежнему приходится выполнять последовательно. Параллельное выполнение вычислений дает возможность значительно уменьшить реальное время решения задачи.




Дата добавления: 2015-02-16; просмотров: 98 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2025 год. (0.01 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав