- •Министерство образования и науки российской федерации
- •«Самарский государственный технический университет»
- •Ю. В. Калмыков, а. В. Тараканов
- •Введение
- •1. Содержание и объем курсовой работы
- •2. Оформление курсовой работы
- •3. Распараллеливание обработки
- •4. Потоковая обработка информации
- •4.1. Организация потоковой обработки информации
- •4 14 .2. Построение программ коммутации
- •Программа коммутации
- •5. Организация параллельных
- •6. Пример создания мультипоточного
- •В качестве альтернативного способа достижения высокой скорости вычислений является написание программного кода на языке ассемблера.
- •7. Определение временных
- •Первоначально необходимо установить настройки среды программирования, как показано на рис. 7.1 – 7.3.
- •8. Порядок выполнения работы
- •9. Содержание расчетно-пояснительной
- •Сызрань 2010 Приложение п2
- •1) Функция изменения состояния синхронизирующего объекта события, устанавливающая его в состояние “Включено”.
- •Продолжение прил. П2
- •Продолжение прил. П2
- •Продолжение прил. П2
- •Окончание прил. П2
- •Продолжение прил. П3
- •Продолжение прил. П3
- •Продолжение прил. П3
- •Продолжение прил. П3
- •Продолжение прил. П3
- •Окончание прил. П3
- •Приложение п5
- •Продолжение прил. П5
- •Продолжение прил. П5
- •Окончание прил. П5
- •Приложение п6
- •Библиографический список
- •Оглавление
- •Системное программное обеспечение
- •443100, Г. Самара, ул. Молодогвардейская, 244. Главный корпус
- •446001, Г. Сызрань, ул. Советская, 45
4 14 .2. Построение программ коммутации
Рассмотрим выражение
(4.1)
и соответствующую ему бесскобочную запись
(4.2)
Информационный граф G, соответствующий счету значения выражения (4.2), приведен на рис. 4.2. Его вершины, обозначенные символом операции, соответствуют элементарным операциям, к которым отнесем и счет значения квадратного корня.
В соответствии с индивидуальным заданием необходимо построить информационный граф. В качестве примера рассмотрим выражение (4.1), где a = 6, b = 8, c = 26, d = 7, e = 32, f = 90, g = 5, h=283, i = 1, j = 22, k = 298, l = 52, m = 64, тогда информационный граф G будет иметь вид (рис 4.3). Рядом с вершинами графа указаны промежуточные значения вычислений.
Р и с. 4.2. Информационный граф G
Предположим, что без учета ПП ВС обладает однородным решающим полем, т. е. все вычислители ВС способны выполнять все операции.
Рис. 4.3
Пусть при неограниченном вычислительном ресурсе каждая вершина графа G закреплена за некоторым вычислителем (на рисунке указаны номера вычислителей). Выходы каждого вычислителя в соответствии с дугами в графе G соединены с входами других вычислителей.Величины, входящие в выражение, считываются из ОПД по их именам или адресам на входы вычислителей, которые первыми начинают их обработку. Пусть в процессе или после установления такой коммутации все вычислители получают возможность однократного выполнения операции тотчас же по появлении необходимых операндов на входе. Очевидно, в процессе счета значения данного выражения полностью будет использован принцип распараллеливания, и счет будет выполнен за минимальное время. При этом минимизации времени счета послужит и отсутствие задержки времени между получением промежуточных результатов и их дальнейшим использованием. Оно обеспечивается непосредственной передачей результатов на вычислители для дальнейшей обработки.
Пусть n – количество вычислителей в системе. Тогда неизбежно многократное использование одного вычислителя при счете значения сложного выражения. Если не организовать очередь на входе каждого вычислителя и не задать информацию, какому вычислителю и в какую очередь направлять результат после каждого выполнения операции, то коммутация вычислителей в соответствии с графом G станет невозможной.
Пусть каждый вычислитель Вi обладает буфером Бi, i=l, ..., n, состоящим из S адресуемых регистров для хранения назначаемых на вычислитель команд. Адреса регистров будем отождествлять с номерами очереди использования данного вычислителя.
Каждый регистр буфера вмещает полное количество операндов, которые с учетом некоммутативных операций (например, деления) располагаются в определенном порядке. В каждом регистре указывается также адрес результата, включающий номер вычислителя-преемника, номер очереди (адрес регистра в буфере), а также номер позиции этого результата в регистре в соответствии с типом той операции, в которой он будет использован.
Вычислитель Вi и очередь его использования s обозначим парой (i, s), которую в процессе формирования программы коммутации будем называть адресом вычислителя.
Условимся о следующем порядке использования вычислителей. Первоначально до коммутации вычислителей для счета значения данного выражения считаем все регистры буферов свободными, т. е. очереди незанятыми. Просматривая выражение, используем для коммутации вычислителей первую очередь каждого вычислителя в порядке увеличения их номеров. Если однократного использования вычислителей оказывается недостаточно, приступаем к их использованию во вторую очередь и т. д.
Одновременно с дальнейшим рассмотрением примера продемонстрируем принцип трансляции записи исходного выражения (4.2) в программу коммутации вычислителей решающего поля.
Пусть решающее поле содержит четыре вычислителя (рис. 4.4), где I – регистры буферов, – номер вычислителя, – номер очереди).
Учитывая обусловленный выше порядок использования вычислителей, а также то, что в каждой цепочке операций первая производится над одной или двумя величинами, имена которых указаны в предшествующей цепочке имен, наметим первый шаг их использования. Он соответствует выполнению первого яруса операций (второй ярус вершин в графе G).
Отразим это условной записью:
В скобках указаны: выполняемая операция, номер вычислителя, номер регистра-очереди. Конструкции, связанные стрелками, определяют команды программы коммутации в соответствии с использованием регистров буферов, отображенных на рис. 4.4.
Даная схема отражает порядок выполнения вычислений и на ее основе строится логика работы программы. Вместо четырех вычислителей обработка данных производится четырьмя тредами (прил. П3).
На основе схемы коммутации счета (см. рис. 4.4) и листинга программы (см. прил. П3) рассмотрим порядок вычисления выражения.
Первый тред – функция Thread1():
Запуск треда.
Сложение (a+b).
Установка объекта события s12 в состояние "включено". Этого события ожидает второй тред для продолжения вычислений. Таким образом, осуществляется синхронизация работы тредов.
Вычисление значения квадратного корня.
Вычитание (l - m).
Установка объекта события s13 в состояние "включено", так как результат вычислений первого треда ожидает третий тред.
Р и с. 4.4. Схема коммутации счета
Ожидание результатов вычислений третьего и четвертого тредов.
Вывод результата.
Переход с одного этапа вычислений на другой сопровождается выводом сообщения в ListBox. Аналогично работе первого треда осуществляется работа и остальных тредов.
Составлению схемы коммутации счета способствует написание программы коммутации.
Пусть программа коммутации (табл. 4.1) состоит из трехадресных командных слов, в которых указывается код операции , адреса А1 и А2 операндов, адрес результата А3. Каждый адрес может быть адресом ОПД или вычислителя (на что указывает тег). Тогда на основе анализа возможности выполнения первой операции из каждой цепочки операций можно записать первые пять команд программы.
При выполнении этих команд решающим полем организуется вызов величин а и b на первый регистр I11 (см. рис. 4.4) вычислителя 1, величин с и d на регистр I21 и т. д. Величина m поступает на второй регистр I12 вычислителя 1, так как все вычислители один раз использованы. Расположение операндов в регистрах соответствует порядку, в котором указаны их имена или адреса вырабатывающих их вычислителей в команде.
Для продолжения процесса составления программы коммутации предположим, что произошло выполнение первого яруса операций в графе G.
Таблица 4.1
