Вопрос 1. Количественные характеристики, используемые при измерении параметров ВС. Наименование параметра 1. Тактовая частота. 2. Быстродействие над целыми числами. 3. Быстродействие над числами с плавающей точкой. 4. Емкость памяти Единицы измерения и соотношения между ними 1МГц=106 Гц 1ГГц=103МГц=109Гц 1 MIPS (Million Instructions Per Second)=106 оп/сек. 1GIPS=109 оп/сек. 1 FLOPS(Floating point Operations Per Second) 1MFLOPS=106 FLOPS; 1GFLOPS=109 FLOPS; 1TFLOPS=1012 FLOPS; 1PFLOPS=1015 FLOPS; 1Kbit=210 bit; 1Kbyte=210 byte; 1Mbit=220 bit;1Mbyte=220 byte; 1Gbit=230 bit; 1Gbyte=230 byte; 1Tbit=240 bit; 1Tbyte=240 byte; 1Pbit=250 bit; 1Pbyte=250 byte; 1 Примечания Определение быстродействия вычислителя. Номинальное быстродействие процессора (быстродействие по Гибсону) Быстродействие, получено на специальных тестовых наборах. Верхняя оценка параметров современных ВС: 100 FLOPS (быстродействие) 1000 Gbyte (память) 1000 мбод (пропускная способность) Вопрос 2. Понятие о современных ВС. Диаметр. Средний диаметр. *Вычислитель – элементарный процессор, стоящий в узле ВС. Структуру ВС будем представлять в виде неориентированного графа, где вершины – вычислители, а ребра – связи между ними. Система, представленная совокупностью описаний W=<K, A>, где K – описание конструкции ВС, А – описание алгоритма работы коллектива вычислителей, называется вычислительной, если: 1. Описание К составляет множество значений {M, S}, где М – множество вычислителей (M={mi}, i=0, …, N-1), а S – тип связей между вычислителями. В конструкцию K закладываются следующие принципы: Параллелизм при обработке информации, т.е. организация вычислений одновременно на множестве вычислителей М и обеспечение, в случае необходимости, обмена данными через сеть. Адаптация конфигурации сети S к решаемой задаче. 2. Алгоритм A обеспечивает, наряду с требуемой обработкой, управление одновременной работой M процессоров с необходимым обменом данными между ними. Структура коллектива вычислителей, представленных в виде графа: GS=(M, S*), где М={mi}, i= 0, …, N-1, Si,j S*, i, j= {0, …, N-1}. Симметричной ВС называется неориентированный граф, в котором произвольная нумерация вершин не меняет степень вершин графа, где под степенью вершины понимается количество ребер, примыкающих к ней. Одними из важных параметров сети являются ее диаметр и средний диаметр, определяющие временные задержки при обмене информацией между процессорами сети. Диаметр d – это максимальное расстояние, определяемое как d max{d ij }; i, j {0,..., N 1}, i, j где d ij – расстояние между вершинами i и j рассматриваемой сети. Расстояние d ij есть минимальная длина простой цепи между вершинами i и j, где длина измеряется в количестве ребер между вершинами i и j. Средний диаметр d i для выделенной вершины n определяется как d pi n pi p 1 , где p – расстояние от текущей вершины до выделенной (i-ой), di i i N 1 npi – число вершин, находящихся на расстоянии pi от выделенной. N 1 Средний диаметр сети d : d d i o N i . Для симметричной сети d di . 2 Вопрос 3. Наиболее популярные схемы ВС: «Общая шина», «Линейка», «Кольцо», «Тор»(см. вопрос 4), «Решетка». Схемы обмена между вычислителями: 1. Общая шина. Структура вычислительной сети типа «Общая шина» описывается графом GS=(M, S*), где M ={mi}, i=0, …, N-1 – множество вычислителей, N≥3, S* в каждый момент времени tk = {t1, …, tk} состоит из одного ребра Si,j (i,j M), а множество вершин tk определяет моменты реконфигурации сети. 2. Линейка. Структура ВС типа «Линейка» описывается графом GS=(M, S*), где M ={mi}, i=0, …, N-1 – множество вычислителей, N≥3, S* состоит из ребер Si,(i+1), i=0, …, N-2. *Каждый вычислитель кроме первого и последнего, связан друг с другом. Минус такой схемы: Отказ одного вычислителя приводит всю систему к сбою. 3. Кольцо. Структура ВС типа «Кольцо» описывается графом GS=(M, S*), где M ={mi}, i=0, …, N-1 – множество вычислителей, N≥3, S* состоит из ребер Si,(i+1)modN, i=0, …, N-1. *Каждый вычислитель связан друг с другом. Функция mod(N) – строит ребро между первым и последним вычислителями. 4. Решетка. Структура ВС типа «Решетка» описывается графом GS=(M, S*), где M={mi}, i= 0, …,N-1, N>5; S* состоит из множества ребер Si,k j {0, …,Y-1}, k {0, …, L-1}, причем L×Y=N. Ребро проводиться между вершинами, определяемыми декартовым произведением [j] ×[k]. Две вершины соединяются ребром, если их декартовы произведения отличаются друг от друга на 1 по координате k или j соответственно. 3 Вопрос 4. Структура ВС типа двумерный тор, n-мерный двоичный гиперкуб. Двумерный тор. *Здесь между собой соединяются граничные вычислители (возможно, все), т.е. те, которые имеют max или min координату по одной из осей. (минус: появляются дополнительные шины). Другими словами можно сказать, что двумерный тор- это ВС «2Dрешетка», противоположные грани которой соединены, обеспечивая обмен данными между первым и последним элементами строки/столбца. Структура ВС типа «двумерный тор» описывается графом GS=(M,S*), где M= 0, …, N-1, N≥7; S* состоит из ребер Si,k j {0, …,Y-1}, k {0, …, L-1}, причем L×Y=N. Ребро проводиться между вершинами, определяемыми декартовым произведением [j] ×[k]. Две вершины соединяются ребром, если их декартовы произведения отличаются друг от друга на 1 по любой координате или на L-1 по координате k или на Y-1 по координате j. n-мерный двоичный гиперкуб. Структура ВС типа «двоичный гиперкуб» описывается графом GS=(M,S*), где М={mi}, i=0, …,N-1, N≥4, вершины имеют номера Ni=2p, p=0,1,…,n-1, где n – размерность гиперкуба. Каждая вершина Vi задается двоичным числом q(Vi)=pvi,0… pvi,n-1. Между вершинами Vi и Vj проводиться ребро, если их двоичные номера q(Vi) и q(Vj) различаются только одним разрядом. 4 Вопрос 5. Реализация обмена информацией в структуре типа «обобщенный nd-куб» и «nd-тор». Обобщенный nd-куб. Структура ВС типа «обобщенный nd-куб» описывается графом GS=(M,S*), где М={mi}, i=0, …,N-1, N≥5. По каждой координате j=1, …,n откладываются точки (вершины) с номерами 0,1,…,Nj-1, где Nj – размерность куба по координате j. Множество вершин задается декартовым произведением [N1-1] ×[N2-1] ×…×[Nn-1]; N1 ∙N2 ∙…∙Nn=N. Две вершины соединяются ребром, если декартовы произведения отличаются друг от друга на 1 по координате Nj, j {1, …, n}. Обобщенный nd-тор. Структура ВС типа «Обобщенный nd-тор» описывается графом GS=(M,S*), где М={mi}, i=0, …,N-1. По каждой координате j=1,…,n, вводятся точки 0,1, …, Nj-1, где Nj размерность тора по координате j. Множество вершин графа задается декартовым произведением [N1-1] ×[N2-1] ×…×[Nn-1]. Множество ребер сети S* строиться следующем образом: две вершины соединяются ребром, если их декартово произведение отличается друг от друга на 1 или на Nj -1 по координате j. 5 Вопрос 6. Структура ВС типа циркулянта и типа Л(N,v,g). Циркулянта. Представляется виде dn-графов, которые описываются Dn=G(N, q1, …, qn), где N – число вершин графа (вычислителей), которые нумеруются от 0 до N-1, q1, …, qn – образующие числа, такие что 0< q1< q2<…< qn< N 1 . N, q1, …, qn – взаимно простые 2 (наибольший общий делитель равен 1). n – число образующих чисел. Вершина i соединяется ребрами с вершинами (i ± q1)mod(N), …,(i ±qn)mod(N). Обычно циркулянта представляется в виде матрицы или хордового кольца. Л(N,ν,g). N – количество вычислителей. ν – степень вершин. g – обхват графа (самый короткий контур (цикл) в графе). Алгоритм построения такой структуры довольно сложен. Структура представляется в виде матрицы следования. Структура ВС типа «Л(N,ν,g) – граф» описывается графом GS=(M, S*), где M={mi}, i=0, …, N-1; S* – симметричная вычислительная сеть, описываемая матрицей смежности. В матрице смежности пишется: номер элемента – номера элементов, с которым он соединяется. 6 Вопрос 7.Структура ВС типа «бинарное дерево», «мультидерево глубины n и ширины k». Бинарное дерево To(n). Структура ВС типа «бинарное дерево» обозначается To(n) глубины n описывается графом GS=(M, S*), где M={mi}, i=0, …, N-1, N=2n-1; Содержит n рангов r (r={0, …,n-1}), причем в каждом ранге размещается ровно 2r вершин так, что каждая вершина ранга r (0<r<n-2) соединяется с парой вершин ранга r+1. Мультидерево глубины n и ширины k T1(n, k). Структура ВС типа «Мультидерево глубины n и ширины k» T1(n, k), число вычислителей N=k*2n описывается графом GS=(M, X 01 X 0k S*), где M={mi}, i=0, …, N-1, а сеть S* содержит k двоичных деревьев, объединенных с помоR0 Z 01 Z 0k R1 щью колец R0 и R1. Корневая вершина X 0j j={1, …,k} каждого из k деревьев соединена ребром с вершиной Z 0j и они образуют кольцо R0 ( Z 01 , Z 02 , …, Z 0k ). Второе кольцо R1 образованно вершинами листьев и содержит k*2n-1 элементов. 7 Вопрос 8. Характеристика коммутаторов ВС. Наиболее часто используются следующие: 1. Простые коммутаторы с временным разделением (с общей шиной); 2. Простые коммутаторы с пространственным разделением. 3. Сосредоточенные составные коммутаторы. 4. Распределенные составные коммутаторы. Коммутаторы с пространственным разделением: n входов и m выходов. Например, n=m=2. Количество состояний k коммутатора Q=2 , где k – количество связей в коммутаторе. k=1 (S1, S2, S4, S8) – простые коммутаторы 1-го типа. k=2 (S3, S5, S6, S9, S10, S12) – простые коммутаторы 2го типа. k=3 (S7, S11, S13, S14) – простые коммутаторы 3-го типа. k=4 (S15) – простые коммутаторы 4-го типа (коммутатор Клоза –соединяет n входов и m выходов). Баньян сети: существует путь от каждого из n входов к каждому из m выходов (S5). Коммутаторы объединяются в цепочки для создания более сложных. Коммутаторы, управляемые с помощью программы, называются транспьютерами( коммутаторы с программируемой архитектурой, или динамические). Не управляемые с помощью программ – статические. Вопрос 9.Архитектурные свойства вычислительной сети и описание процессов ее функционирования. Описание процесса функционирования сети. Сеть функционирует с помощью алгоритма А, который управляет вычислителями N 1 Сi C, i=0, …, N-1 на сети G. В алгоритм А входит совокупность программ: P Pi , приi 0 чем N N 1 N i 0 i 0 i 0 Pi , которые осуществляют вычисления. Набор данных: D Di , Di – для каждой программы свой. Алгоритм А представляется совокупностью: A0 A0 A1 A1 ... AN 1 AN 1 , где A0 – вычислительная часть, а A0 – обеспечение связи через сеть. ( Ai Pi) – обеспечивает аппаратно-программную часть. Аппаратные средства, с помощью которых реализуется совокупность алгоритмов Ai, i=0,…,N-1, и которые вместе с сетью связей составляют среду для осуществления взаимодействия между вычислителями ВС, называются коммутаторами. Программно-аппаратные средства, с помощью которых реализуется совокупность программ Pi, i=0,…,N-1, и которые вместе с сетью связей составляют среду для осуществления взаимодействия между вычислителями ВС, называются коммутаторами с программируемой структурой. У большинства ВС алгоритмы Ai=Aj, i, j=1, …,N-1, и программы Рi=Рj. Такие системы называются однородными. На них можно решать любые задачи, но лучше всего – решать ДУ, находить коэффициенты Фурье. Принципы технической реализации ВС. При технической реализации ВС используются принципы модульности и близкодействия. 8 Mi, Принцип модульности заключается в следующем: ВС формируется из унифицированных модулей i {0,..., R}, где R – количество разнообразных моделей в системе. Каждый модуль функционально закончен; имеются модули сопряжения. Набор модулей представляет функционально законченный набор процессоров, что означает, что можно решать любую задачу. Помимо полного набора Mi, может быть набор Min, in {0,..., R}, т.е. можно брать подмножество из множества Mi и получать другу ВС с другими характеристиками. Модульность обеспечивает: 1. возможность использования любого модуля для выполнения любого соответствующего задания пользователя. 2. простая замена одного модуля на однотипный. 3. масштабируемость – можно уменьшить или увеличить количество модулей без коренной реконфигурации связей между остальными модулями. 4. открытость систем для модернизации, что исключает ее моральное старение. В системах с массовым параллелизмом, в которых есть только один модуль, обладающий вычислительной и соединительной полнотой, то, что стоит в узле, называется элементарным процессором (машиной); его разрядность колеблется от 1 до 64. Близкодействие обуславливает такую организацию информационного взаимодействия между модулями вычислителя, при которой каждый из них может непосредственно обмениваться информацией с весьма ограниченной частью модулей вычислителя , следовательно, структура ВС позволяет осуществлять взаимодействие между удаленными вершинами вычислителя лишь с помощью промежуточных вершин вычислителя, передающих информацию от точки к точке. Удаленными считаются вершины расстояние между которыми >1. Принцип близкодействия допускает реализацию механизма управления ВС, не зависящего от числа вычислителей. Данный принцип, в частности, выражается в том, что поведение каждого вычислителя Сi C зависит только от ограниченного подмножества С* C. Во взаимосвязи с принципом близкодействия говорят о локальной связи вычислителя. Последнее означает, что состояние вычислителя Сi на очередном временном шаге (t+1) зависит от состояния на предыдущем шаге t вычислителей Сj C*, непосредственно связанных с ним. Т.о., состояние Еi на шаге (t+1) есть функция: Ei (t 1) f ( E j1 (t ),..., E jq (t )) , т.е. состояние вычислителя зависит от его локального окружения. ВС основанные на принципах модульности и близкодействия, обладают рядом ценных свойств, таких как децентрализованность, асинхронность и распределенность. Асинхронность: функция ВС обеспечивается, если порядок срабатывания ее модулей определяется не с помощью выработанных тем или иным образом отметок времени, а достижением заданных значений. Использование асинхронных схем позволяет достичь в системе алгоритмически предельного быстродействия. Модули ВС срабатывают немедленно после достижения соответствующего условия. Применение асинхронных схем обмена информацией между вычислителями позволяет не учитывать разброс в их тактовых частотах и длительностях импульсов сигналов линей связи. Архитектурные свойства ВС. Имеется ряд свойств ВС, которые обеспечивают ей значительные преимущества перед раннее создаваемыми вычислительными комплексами. К таким свойствам относят: 1. Масштабируемость. Обеспечивает способность к наращиванию и сокращению производительности ВС, что дает возможность в течение длительного времени быть адекватным средством решения сложных задач. Это означает, в частности, что производительность, достигнутую на заданном количестве вычислителей, можно увеличить, подключив к ВС новые вычислители. Свойство наращивания производительности представляет потенциальную возможность решать задачи любой сложности. 2. Универсальность. Обеспечивается тем, что она состоит из вычислителей, поэтому любая задача, для которой составлен алгоритм, может быть решена на ВС с той или иной степенью эффективности – сколько вычислителей может быть использовано для решения поставленной задачи и насколько хорошо распараллеливается заданный алгоритм. 9 3. Производительность ВС достигается за счет усложнения структуры. Пределы увеличения производительности полностью зависят от масштабируемости. 4. Реконфигурируемость ВС бывает статической и динамической. В статическом режиме приспособление структуры ВС под класс решаемых задач (выбор количества вычислителей, структуры сети), определяется предварительно на этапе подготовки задачи к выполнению. При этом возможно , при наличии времени, оптимальный или квазиоптимальный подбор конфигурации сети. При решении задач в случае дефицита времени конфигурация сети определяется динамически на основе быстро решаемых эвристических алгоритмов. 5. Надежность и «живучесть». 6. Самоконтроль и самодиагностика. Важным фактором функционирования ВС является самоконтроль и самодиагностика, что обеспечивает и высокую надежность и «живучесть». В качестве контрольно-диагностического подмножества ВС может быть использованы любые исправные вычислители, а в пределах этого подмножества – любой вычислитель. Выбор диагностического подмножества ВС производиться, как правило, автоматически. 7. Технико-экономическая эффективность. Не менее ценным свойством ВС является конструктивная однородность , что резко увеличивает её технико-экономическую эффективность. Это свойство ВС позволяет резко снизить сроки ее разработки, и приводит к повышению технологичности производства, упрощает статическую и динамическую реконфигурацию, облегчает техническую эксплуатацию. 10 Вопрос 10. Надежность и живучесть вычислительной сети. Под надежностью вычислительной сети понимается ее способность к автоматической настройке и функционированию таких структурных схем, которые при отказах и восстановлениях вычислительной сети обеспечивают заданный уровень производительности. Отказ – событие, при котором система теряет способность выполнять функции, связанные с реализацией параллельной программы, с заданным числом ветвей. Если вычислительная сеть находится в состоянии отказа, то число неисправных вычислителей превосходит число вычислителей, составляющих структуру избыточности. Под живучестью вычислительной сети понимается свойство вычислительной сети, которое в условиях отказов и восстановления вычислительной сети гарантирует производительность в заданных пределах при выполнении параллельной программы даже в случае отсутствия зарезервированных вычислителей. Полный отказ – событие, состоящее в том, что система теряет способность к выполнению параллельной программы. Частичный отказ – событие, при котором имеет место отказы вычислителей, однако сохраняется возможность реализации на вычислительной сети параллельной программы. 11 Вопрос 11. Схемы обмена информацией между ветвями параллельных алгоритмов. 1. Дифференцируемый обмен (1 источник, 1 приемник; Малоэффективен). 2. Трансляционный обмен (1 источник, все приемники). 3. Трансляционно-циклический обмен – источник постоянно «двигается». Тот, кто был приемником, становиться источником, и наоборот 4. Конвейерно-параллельный обмен – все нечетные номера становятся источниками, а четные – приемниками, а затем они меняются 5. Коллекторный ( по сути – инвертированный трансляционный обмен) Тип обмена Частота использования 1 2 % 2 1 7% 12 3 4 0% 4 3 4% 5 7 % Вопрос 12.Структурные характеристики ВС. 1. Структурные задержки при передаче информации между узлами характеризуются d и d ВС. 2. Структурная коммутируемость. Характеризуется вектор-функцией: N N N K (G, S , S ) {K n (G, S , S )}, n {1, 2,..., } (öåëî å ÷èñëî ) 2 2 2 Координата K n - вероятность реализации в системе вероятности одновременных непересекающихся межмашинных взаимодействий (n) при заданной структуре сети G и коэффициенту готовности S вычислителя и коэффициенту готовности S сети. Структурная коммутируемость характеризует способность ВС к параллелизации обмена между вычислителями. При этом требуется чтобы: — При дифференцируемом обмене имелась возможность реализации 1 обмена между двумя вычислителями. — При трансляционном обмене реализовалась одновременная передача информации от одного вычислителя во все остальные. N При конвейерно-параллельном обмене выполнялось одновременно 2 взаимодействий между парами вычислителей. 3. Структурная живучесть: L(G, S , S ) {Lr (G, S , S )}, r {2,3,..., N } Lr – это вероятность существования подсистемы ранга r, т.е. существуют подмножества ранга r работоспособных вычислителей, связанность которых устанавливается через работоспособные линии связи. Структурная живучесть L характеризует приспособленность ВС к условиям отказа вычислителей и линий связи, к порождению системой тех или иных рангов, следовательно, приспособленность к решению задач заданной сложности. Ищется max Lr (G, S , S ) Lr (G* ) при заданных значениях N, r, , S, S . – количество связей в сети; G * – оптимальная структура. Существуют специальные решения для циркулянт и Л-графов Ë ( N , , q) : 1. G * обеспечивает max Lr (G* ) — 2. Структура G * обладает наибольшей живучестью. 3. Структура G * оптимальна при заданном N, и имеет min диаметр. 13 Вопрос 13. Пример решения задачи умножения матриц с помощью ВС. Будем считать, что система – полный граф. A[1: N ,1: K ]* B[1: K ,1: M ] C[1: N ,1: M ] k Ñij Ain * Bnj ; i 1,..., N ; j 1,..., M ; N >> n, M >> n, K >> n (1) n 1 n – количество процессоров. Исходные матрицы А, В разрезаются на n горизонтальных и вертикальных полос: Т.о. для 1-го вычислителя: N Строки: 1,..., n M n Столбцы: 1,..., Для L-го вычислителя: N N ( L 1) * 1,..., L * n n M M Столбцы ( L 1) * 1,..., L * n n n-й вычислитель: N N строки (n 1) * 1,..., n * n n M M столбцы (n 1) * 1,..., n * n n Строки Параллельный вычислительный процесс организуется следующим образом: сначала первый вычислитель передает остальным вычислителям первую строку из своей полосы матрицы А. После этого, все вычислители используют формулу (1). ОсуществN ляется параллельный расчет целой части элементов первой строки матрицы С. Заn тем первый вычислитель рассылает всем остальным вычислителям вторую строку своей матрицы и производится расчет элементов 2ой строки матрицы С и тд. До тех пор пока 1ый вычислитель не перешлет свои строки матрицы А. После этого пересылками будут заниматься последовательно 2ой, 3ий …nый вычислители. Матрица получается распределенной по вычислителям, причем в каждом будет своя вертикальная полоса. Вследствие однородного распределения данных получены одинаковые ветви параллельного алгоритма, однако эти ветви используют различные части данных, т.к. для каждой ветви своих данных недостаточно, то ветви вступают во взаимодействие. Аналогичным образом решается итерационным методом система линейных уравнений: L x j ,k 1 bi ai , j * x j ,k , i 1,..., L j 1 max{ xi ,k 1 xi ,k } 14 Вопрос 14. Показатели эффективности параллельных алгоритмов. Коэффициент накладных расходов, коэффициент ускорения. t 1. Коэффициент накладных расходов: , T где t – время, расходуемое ВС на вспомогательные операции (организация обмена информацией, настройку вычислителей и д.р.); T – время, требуемое на выполнение арифметической и логической операции при выполнении алгоритма. Оценим эффективность умножения матриц: M K – умножений n M ( K 1) – сложений n M . n Если К очень большое, то эти величины приблизительно равны t n – время пересылки данных. tñë - время сложения двух чисел t óì í - время умножения двух чисел tn (t óì í tñë ) , 1, M n следовательно, max накладных расходов, когда 1 , т.е. M=n. Величина 1 информирует о минимально-допустимом размере матрицы, при которой еще можно решать задачи на n-вычислителях. Чем больше размер матрицы(чем больше вычислений), тем больше эффективность алгоритмов. 2. Коэффициент ускорения 1 , где 1 - время выполнения алгоритма на одном вычислителе, n n - время выполнения алгоритма на n вычислителях. 1 n , где 1 - лучший последовательный алгоритм. 15 Вопрос 15. Закон Амдаля и коэффициент эффективности программы. Закон Амдаля k , где (1 ) n n – количество вычислителей в системе; – относительная доля операций параллельной программы, выполненных последовательно : 0 1; 1 – программа относительно последовательна; 0 – программа относительно параллельна; k – корректирующий коэффициент ( 0 k 1), определяет качество параллельной системы. Сюда входит настройка структуры системы, синхронизация ветвей параллельной программы и временные издержки, связанные с обменом информацией между вычислителями. Коэффициент эффективности параллельных программ. E n n n E 1 E 1 n E 1 ì àêñèì àëüí î å óñêî ðåí èå Причины по которым трудно достичь max ускорения: 1. время, расходуемое на синхронизацию процессов параллельных ветвей и организацию обмена информацией между ними. Конфликты памяти, обусловленные, например, ее общедоступностью или, наоборот, ее распределенностью. б) несбалансированность нагрузки вычислителей и/или невозможность в общем случае построения параллельного алгоритма с числом ветвей, равных числу вычислителей ВС. 16 Вопрос 16. Понятие о сложных задачах. Представим коэффициент накладных расходов в развернутом виде: t (V , n) (V , n) T (V , n) V – Количество операций, которые необходимо выполнить при решении задачи на ВС. n – Число вычислителей на ВС (V , n) 0, ï ðè V , V n *10k k – эмпирический коэффициент: k 1 , то задача считается сложной. Задача называется сложной (трудоемкой, системной, с большим объемом вычислений), если число операций на несколько порядков превосходит количество процессоров. 17 Вопрос 17. Принципы перехода от последовательного алгоритма к параллельному. Алгоритм преобразования последовательного алгоритма в параллельный. Параллельный алгоритм – это описание процесса обработки информации, ориентированного на реализацию с помощью вычислительных систем. Представление параллельного алгоритма на языке программирования, доступном данной ВС, называется параллельной программой. Существует 3 способа распараллеливания сложных задач: 1. Локальное. При локальном распараллеливании в выполняемой программе выделяются участки машинных команд, которые могут выполняться параллельно. 2. Глобальное. Глобальное распараллеливание происходит на уровне программных модулей. 3. Смешанное распараллеливание – наиболее эффективное, совмещает 1 и 2. Приведение схем алгоритмов к виду, удобному для организации параллельных вычислений. При создании параллельных программ будем использовать схемы программ в соответствии с ГОСТ 19.003-80 ЕСПД, ГОСТ 19.701-90 ЕСПД, хотя следует отметить, что создание параллельных процессов в решаемых задачах и отображение их в таких схемах — достаточно трудоемкая работа. В связи с этим предложена следующая процедура создания параллельных схем алгоритмов или программ. Вначале создается схема алгоритма, как это делалось для традиционных вычислительных средств без учета параллельных вычислений. Будем называть такие алгоритмы последовательными. Затем с помощью алгоритма преобразования последовательного алгоритма в параллельный на основе анализа зависимости участков процесса по обрабатываемым переменным выделяются параллельные ветви вычислений. Алгоритмы с выделенными параллельными ветвями и есть параллельные алгоритмы. Введем несколько ограничений на изображение схем алгоритмов с параллельными ветвями: 1. При параллельном выполнении программ окончание алгоритма зависит от составленного плана решения задачи, поэтому символ «терминатор» конца алгоритма надо исключить. 2. Не ограничивая общности рассуждений, можно считать, что при изображении параллельных алгоритмов можно ограничиться логическим символом с двумя выходами: FALSE и TRUE. 3. Традиционное изображение вводимой информации в указанных ГОСТах более или менее приемлемо для ВС с общей памятью и совсем не приемлемо для ВС с разделяемой памятью, так как в этих ГОСТах вводится достаточно искусственная зависимость программных модулей по данным. Эта зависимость существенно сужает возможности распараллеливания решаемой задачи. При рассмотрении ВС с разделяемой памятью ввод-вывод информации включается в процесс обмена информацией между процессорами и таким образом учитывается в планировании вычислительного процесса. Поэтому при рассмотрении ВС с общим полем памяти считается, что вся исходная информация введена в поле общей памяти и на схеме не показывается. Аналогично решаем проблему вывода. Выводимая информация также находится в поле общей памяти. Отсутствие символа вывода (например, параллелограмма) можно объяснить тем, что преобразование и вывод информации не включают в план решения параллельных задач. В связи с этим при преобразовании исходного алгоритма в параллельный опускают символы ввода-вывода информации. Сущность алгоритма преобразования схемы последовательного алгоритма в схему параллельного алгоритма заключается в следующем: 18 Разобьем последовательный алгоритм на линейные участки, заключенные между логическими операторами. Каждый логический оператор порождает не менее двух линейных участков. Линейный участок, образованный входом в алгоритм и логическим оператором, назовем начальным. Начальный участок может содержать только один оператор. Следующий за начальным участок начинается и заканчивается логическим оператором, т. е. если участок Ui, состоит из множества операторов Lij , C1i ,..., Cni i , L j 1, то следующий участок Ui 1 Lij11, C1i 1,..., Cni i11 , Lij12 и т. д., где Lij , Lij 1Lij11, Lij12 — логические опе- раторы, причем Lij 1 Lij11 , а C1i ,....,Cni i ; C1i 1,....,Cni i11 — некоторые операторы (не логические). Таким образом, последний логический оператор Lij 1 участка Ui, является первым оператором для участка Ui+1. На каждом участке операторы перенумерованы: 1,2, …, Uk. Последние участки — это линейные участки, не имеющие в качестве последнего оператора логический оператор. Пусть в результате такого разбиения образовалось N участков k = 1,..., N, в каждом из которых оказалось Uk операторов. Назовем связи, входящие в вычислительный или логический блоки, входными; выходящие из этих блоков — выходными. Будем полагать, что в каждый блок может входить и выходить несколько связей. В анализируемом алгоритме для упрощения анализа зависимости рассматриваемого программного модуля от предыдущих принята следующая схема: анализируемый алгоритм представляет собой последовательность программных модулей (процедур и/или функций). Обмен данными между ними происходит только через параметры, указанные в списке при вызове модулей. Результаты работы модули передаются через параметры, формируемые как <имя параметра> ::=<префикс> <имя модуля>. Очевидно, что предлагаемое упрощение не является принципиальным и в случае необходимости легко можно учесть зависимости программных модулей по данным, осуществляемые с помощью понятий глобальных переменных различных уровней. Алгоритм: Преобразование последовательного алгоритма в параллельный. 1. Разобьем последовательно алгоритм на N линейных участков: k = 1, ..., N, исключив при этом терминаторы начала, конца и ввода-вывода информации. Перенумеруем сначала участок при k=1: Uk= 1,... , U k . Так как первый блок является входом в алгоритм, то положим МV := {1} — множество входов в алгоритм. 2. Примем U k := 1. 3. Вычислим Vk : U k ,U k : U k 1 , Flag := False (переменная Flag фиксирует проведение очередной связи). 4. Если U k > U k , то проверим, все ли блоки имеют выходные связи. Если да, то переходим к шагу 7, иначе проведем связи из блоков, не имеющих выходных связей, в блок U k и перейдем к шагу 7. Если U k ≤ U k , то выполняется следующий шах. 5. Если блок U k использует результаты работы блока Vk , то проведем связь из блока Vk в U k , положим Flag := True и перейдем к шагу 3. Иначе выполняется следующий шаг. 6. Вычислим Vk : Vk 1 . Если Vk 0 , то переходим к шагу 5, иначе, если k=1 и Flag := False, принимаем U k как еще один вход в алгоритм MV : MV {U k } . Если k > 1 и Flag := False, то проводим связь из блока Vk 1 в U k . Переходим к шагу 3. 7. Вычислим k:= k + 1. Если k > N, то определяется коней алгоритма, иначе переходим к шагу 2 19 Вопрос 18. Представление алгоритмов взвешенными графами. Свертка и развертка вершин графа. Основные определения матриц следования информационного графа. Алгоритмы их получения. Информационный, или информационно-логический граф задается с помощью выражения G = (X,P,D), где X={i} = {1. ..., m} — множество вершин графа, соответствующее множеству операторов параллельного алгоритма, Р={pi}, i =1. ..., m; pi — множество весов, определяющих время выполнения каждого i-го оператора. В общем случае pi — вектор. Размерность вектора равна количеству типов процессоров, используемых в неоднородной ВС. Для однородной ВС pi — скаляр, а D — множество дуг графа. Дуги бывают двух типов: di1 D1 D и d 2j D2 D i, j X , i j . Дуги di1 назовем информационными. Эти дуги соответствуют связям, исходящим из исполнительных блоков параллельного алгоритма. Информационно-логические дуги d 2j соответствуют связям, исходящим из логических блоков. Дуги d 2j нагружены меткой Т для связей, соответствующих логическому значению TRUE, и F для связей со значением FALSE. Граф, содержащий только дуги из множества D1, называется информационным графом, или информационной граф-схемой алгоритма. Граф, содержащий некоторые дуги d 2j D2 (в частном случае — все), называется информационно-логическим графом, или информационно-логической граф-схемой алгоритма. Введем несколько определений, уточняющих построение граф-схемы алгоритма на основе схемы параллельного алгоритма. Если в параллельном алгоритме существует связь между операторами , и — исполнительный блок, то в графе G существует дуга di1 D1 , исходящая из вершины и входящая в вершину . Эту связь будем обозначать и называть информационной связью. Если в параллельном алгоритме существует связь между операторами , и — логический блок, то в графе G существует дуга d 2j D2 исходящая из вершины и T входящая в вершину . Эту связь будем обозначать для дуги с меткой Т и F для дуги с меткой F и называть связью по управлению. T F Связи , , называют задающими связями. Путями в графе G назовем последовательности вершин 1 ,..., n , такие, что для любой пары вершин i , i 1 существует дуга d D , исходящая из вершины i , и входящая в вершину i 1 . В графе G нет циклов, поэтому все пути имеют конечную длину. Кроме того, будем считать, что значения логических переменных для различных логических операторов не связаны друг с другом, поэтому в процессе реализации алгоритма возможен любой из допустимых путей. Длиной пути в графе G назовем количество вершин, входящих в этот путь. Характеристикой пути в графе G со скалярными весами вершин назовем сумму весов вершин, составляющих этот путь. Путь с максимальной характеристикой Ткр в графе G со скалярными весами вершин назовем критическим. В одном графе может быть несколько критических путей. В качестве формального средства обработки графов введем матрицу следования S (транспонированная матрица смежности). В матрице следования для удобства использования в столбцах помечены ненулевым значением все выходящие из данной вершины связи, а в строках — все входящие в данную вершину связи. 20 Вопрос 19. Треугольная матрица следования. Теорема об условиях её получения. Для отражения весов вершин вводится понятие расширенной матрицы следования SR: К матрице следования S прибавляется дополнительно k столбцов с номерами т + 1, ..., т+k, где k — размерность вектора весов вершин граф-схемы. Матрицы следования получаются треугольными. Рассмотрим условие получения матриц следования в треугольном виде. По условию граф-схемы не должны содержать циклов (контуров). Это означает, что главная диагональ всегда должна содержать нулевые элементы. Найдем условие построения треугольной матрицы следования для граф-схемы без цикла. Введем в граф-схемы понятие яруса. Возьмем произвольную вершину в графе G, Найдем все длины путей, ведущих в . Среди этих длин найдем максимальную: пусть это будет число h . Аналогичные вычисления выполним для некоторой вершины и получим h . Если, h h h то вершины и принадлежат одному ярусу - ярусу h. Для обеспечения получения треугольной матрицы следования для графа G необходимо при нумерации вершин придерживаться следующего правила: вершины, принадлежащие (d + 1)-му ярусу, должны иметь номера большие, чем номера вершин d-ro яруса. Внутри одного яруса вершины могут нумероваться произвольно. Такую нумерацию назовем нумерацией по ярусам. 21 Вопрос 20. Матрица следования для информационно логического графа. Алгоритм построения транзитивных связей в этой матрице. При решении задачи распараллеливания важную роль играют не только задающие связи, но и так называемые транзитивные. Если вершины и связаны задающими связями, то существует транзитивная связь . Множество связей, которые введены направленно внутри всех пар элементов, принадлежащих одному пути в графе G и не связанных задающими связями, назовем множеством транзитивных связей для заданного пути. Множество транзитивных связей графа G есть объединение множеств транзитивных связей но всем путям графа G. Множество транзитивных связей, очевидно, полностью определяется множеством задающих связей. При формировании множества транзитивных связей следует учитывать, что если и , где — множество всех операторов, связанных с оператором , то все операторы связаны транзитивно с оператором . Рассмотрим построение матрицы следования с транзитивными связями ST- Возьмем три произвольные вершины i, j, k такие, что между ними определены следующие связи: связь вершины i с вершиной j, вершины j с вершиной k, вершины i с вершиной k, как показано на рис: В матрице следовании, изображенной на рисунке, многоточием обозначены другие связи, которые для данного случая не представляют интереса. При построении матрицы S элементы матрицы, соответствующие логическим связям, выписываются по формуле Sij iSij , а информационным — по формуле Sij 1 . Алгоритм. Построение матрицы следования с транзитивными связями. 1. Вычислим ST:=S. 2. В матрице следования SТ размера RS просмотрим строки, начиная с первой. 3. Если в очередной i-й строке матрицы ST отыскивается элемент (i, j)≠0, то вычислим значения элементов (i, 1), ..., (i, j-1) матрицы ST ДЛЯ k = 1,..., j-1, используя соотношение (i, k ) : (( j, k ) (i, j )) (i, k ) 4.Вычислим j := j + 1. Если j ≤ RS, то переходим к шагу 3, иначе — работа алгоритма заканчивается (просмотрены все строки). Конец алгоритма. 22 Вопрос 21. Обоснование транзитивных операций дизъюнкции и конъюнкции. Необходимо провести анализ значений типов связей между этими вершинами и определить, какую связь между вершинами i и k выбрать: непосредственную или через вершину j. Наличие транзитивной связи из вершины i в вершину k через вершину j. Обозначим эту связь как ST. ДЛЯ существования такой связи, необходимо, чтобы обе связи Sij и Sjk были отличны от нуля. Для проверки существования этой связи введем операцию транзитивной конъюнкции, обозначаемую знаком "" , которая аналогична операции конъюнкции в булевой алгебре. В данной таблице приведены истинные значения операции транзитивной конъюнкции применительно к информационно-логическим графам. Здесь буквы L1, L2, L обозначают некоторые кортежи из логических , где S – это либо некоторая логическая связей S связь из вершины в вершину , либо ранее вычисленная транзитивная связь. Символ «_» обозначает оператор конкатенации. Как нетрудно убедиться, операция транзитивной конъюнкции коммутативна, поэтому в таблице приведены значения без учета перестановки операндов. Рассмотрим построение этой таблицы более подробно. Очевидно, что имеется транзитивная связь, если обе связи S ij и S jk отличны от нуля. Соответственно, результат операции на наборах, где хотя бы одна из связей S ij или S jk равна нулю, будет нулевым, т.е. транзитивная связь отсутствует. Далее, в связи с тем, что ход решения алгоритма отражается как последовательность выполненных логических операторов, в ситуации, когда один операнд равен единице, а второй содержит логический тип связи, необходимо, чтобы результат операции отражал логическую связь. Поэтому на наборе (1, L) результатом выполнения операции транзитивной конъюнкции будет L. Исходя из тех же рассуждений, можно сказать, что в случае, когда обе связи являются логическими, необходимо их объединить и результатом операции на наборе (L1, L2) будет выражение L1_L2. Таким образом, данная операция дает нам транзитивную связь ST Sij S jk Следующим шагом будет определение, какая связь более важна: непосредственная из вершины i в k (S'ik) или новая вычисленная связь ST. Первое, на что следует обратить внимание, это, типы связей. Более важной связью будем по-прежнему считать логическую. Такой выбор делается из тех же соображений что и раньше. Второе, чем определяется результат операции, есть непосредственное наличие хотя бы одной из связей между вершинами i и k: транзитивной или задающей, т.е. необходимо выбрать ненулевую связь, если она есть, при нулевом значении другой связи. Обозначим операцию, осуществляющую такой выбор, знаком "" . Из изложенного выше можно заключить, что ее характер подобен операции дизъюнкции булевой алгебры. В дальнейшем эта операция будет называться транзитивной дизъюнкцией. Приведем таблицу истинности для этой операции применительно к информационно-логическим графам, обозначив ранее вычисленную связь как STТаким образом, для трех рассматриваемых вершин можно определить новую связь, используя две введенные операции, т. е. связь Sik можно вычислить по формуле Sik Sik ( Sij S jk ) или, применительно к матрице следования, по формуле 23 (k , i) : (( j, i) (k , j )) (k , i) После последовательного преобразования всей матрицы S мы получим матрицу ST. Введение операций транзитивных конъюнкции и дизъюнкции позволяет построить матрицу следования с транзитивными связями, в которой сохраняется информация о проходимых в процессе выполнения алгоритма логических операторах, что позволяет исключить из программы большое число промежуточных поисковых операций. Так при определении внешних и внутренних замыканий эффективно используется информация из матрицы ST. Кроме того, полученные в этой матрице кортежи из логических связей могут быть использованы для получения вероятностей прохождении по тем или иным путям в граф-схеме алгоритма, что может быть использовано для построения эффективных планов параллельных вычислений. 24 Вопрос 22. Алгоритм определение контуров в информационной графсхеме алгоритма. Алгоритм использует свойство появления ненулевого элемента в главной диагонали матрицы ST. В качестве исходной берется нетреугольная матрица S. Поэтому при получении транзитивных связей предыдущий алгоритм вызывается несколько раз до получения неизменяемой матрицы Sт. Алгоритм. Определение контуров в граф-схеме алгоритма. 1. Вычислим матрицу STi : S , i : 0 . 2. С помощью алгоритма «построения матрицы следования с транзитивными связями», используя матрицу Sт, вычислим матрицу STi 1 - 3. На главной диагонали матрицы STi 1 определим, есть ли ненулевые элементы. Если есть, то исследуемый граф имеет цикл и работа алгоритма завершена. В противном случае проверяем, изменилась ли матрица STi 1 . Если STi 1 STi , то исследуемый граф не имеет контуров. Алгоритм заканчивает ра- боту. Иначе определим STi : STi 1 , i : i 1 и осуществим переход к шагу 2. Конец алгоритма. 25 Вопрос 23. Понятие о матрице логической не совместимости. Внешние и внутренние замыкания в матрице. При оценке возможности параллельного выполнения программных модулей важную роль играют логически несовместимые операторы. Рассмотрим множество вершин, принадлежащих ветви Т i-го логического оператора. Это множество назовем МTi. Аналогично построим множество вершин для дуги F — это множество вершин, принадлежащих ветви F i-го логического оператора множество MFi. В множества МTi и MFi сама вершина i не входит. Если вершина p MTi , a q MFi j и могут выполняться либо один, либо другой соответствующие им операторы при однократном выполнении алгоритма, то эти операторы называются логически несовместимыми. При реализации алгоритма в логическом операторе i выполняется либо ветвь Т, либо ветвь F, Следовательно, при планировании параллельных вычислений надо исключать планирование параллельного выполнения операторов,принадлежащих разным ветвям, т.е. попросту исключить их из планирования. Однако встречаются ситуации, когда ветви F и Т пересекаются, т. е. MTi MFi TFi 0 . Если TFi 0 , то существует внутреннее замыкание i-го логического оператора. В этом случае операторы t TFi , могут планироваться для параллельного выполнения. Вершина z TFi имеющая наименьший номер, называется минимальной внутренне замкнутой вершиной i-гo логического оператора и обозначается inzi Следует отметить, что замыкание логических путей может осуществляться за счет внешних информационных связей. Целесообразно рассмотреть внешнее замыкание для ветвей Т и F отдельно. Это связано с тем, что при рассмотрении возможности параллельного выполнения операторов, включенных в логические ветви, необходимо учитывать результаты как внешнего, так и внутреннего замыканий совместно, имея в виду при этом, что возможно внешнее замыкание только одной ветви. Если существует информационный путь в вершину Z MTi от начальной вершины граф-схемы, то вершина Z называется внешне замкнутой в ветви Т для i-го логического оператора. Если таких вершин несколько, то вершину Z с минимальным номером называют минимальной внешне замкнутой вершиной в ветви Т для i-го логического оператора. Обозначим эту вершину как ezTi = Xi. Аналогично определяется внешнее замыкание ветви F, обозначающееся ezFi. Если множество MTi x1 ,..., x j ,..., x j содержит внешнее замыкание ezT=xj, то подмножество VTi x j ,..., x j называется внешне замкнутым для ветви Т логического оператора Li. Если множество MFi x1 ,..., x j ,..., x j содержит внешнее замыкание ezF=xj, то под- множество VFi x j ,..., x j называется внешне замкнутым для ветви F логического оператора Li. При рассмотрении влияния внешних и внутренних замыканий на оценку возможности распараллеливания операторов, принадлежащих ветвям логического оператора, необходимо учесть: — что для распараллеливания операторов, принадлежащих путям логического оператора, достаточно одного внешнего замыкания при наличии внутреннего; — что внутреннее замыкание, как правило, порождает операторы, которые можно выполнять параллельно; что для определения множества MZi, всех замкнутых операторов i-го логического оператора требуется вычислить объединение множеств MZ i TFi VTi VFi ; 26 Вопрос 24. Алгоритм построения матрицы логической несовместимости операторов. S – матрица следования; RS – размерность матрицы S; ST – матрица с транзитивными связями; RST – размерность матрицы ST; MLO – множество логических операторов; RMLO – размерность множества логических операторов. M – множество вершин операторов; MTk – множество вершин операторов, включающим дугу Т k-го оператора; VFk – множество вершин операторов, внешне замкнутых для k-го логического оператора связи F; MFk – множество вершин операторов, включающим дугу F k-го оператора; RMTk – размерность множества логических операторов ветви Т; RMFk – размерность множества логических операторов ветви F; TFk – множество вершин операторов, внутренне замкнутых для k-го логического оператора; VTk – множество вершин операторов, внешне замкнутых для k-го логического оператора связи Т; MZk – объединенное множество внешних и внутренних замыканий для k-го логического оператора. Алгоритм PMLO . Получение множества логических операторов. 1. В матрице S размера RS выберем первый столбец (j : = 1), RMLO := 0, MLO := Ø. 2.Просмотрим j-й столбец по строкам и определим равенство текущего элемента матрицы jT или jF. 3.Если найден такой элемент, то положим MLO : MLO { j}, RMLO : RMLO 1, j : j 1; . 4.Если j ≤ RS, то перейдем к шагу 2, иначе конец алгоритма. Коней алгоритма. Алгоритм PMTF. Получение множества МТ и MF k-то логического оператора 1.В соответствии со значением k выберем элемент множества qk MLO; . В qk -м столбце матрицы ST просмотрим i-e строки. Положим i:= 1 (номер строки), l := 1 (номер позиции в множестве МТ), m := 1 (номер позиции в множестве MF). 2.Если элемент матрицы ST(i, k)=jT, то MT[l]:= i, l=l+ 1; осуществим переход к шагу 5. 3.Если ST(i, k)=jF, то MF[m]:= i; m:=m + 1; выполним шаг 5. 4.Если условия пунктов 2 и 3 не выполняются, то осуществим переход к шагу 5. 5.Вычислим i:=i + 1. Если i > RST, то RMT:=l, RMF:=m и выполнение алгоритма заканчивается. Иначе осуществим переход к шагу 2. Коней алгоритма. Алгоритм PREZ. Формирование множества внешних замыканий. 27 1. Сформируем множество из номеров нулевых строк матрицы ST: ZS:={i1,..., iq}. Положим VT:= Ø, VF :=Ø.. 2.Для всех элементов i p ZS построим множество EDp номеров строк, содержащих единичные элементы в ip столбцах. 3.Исключим из множества EDp, р = 1,..., q элементы, равные номеру рассматриваемою логического оператора k. Перенумеруем множества EDP, учитывая удаленные элементы. Получим множества EDu, и = 1, ...,f, f< q. Если все EDu = 0, то VT:= Ø, VF :=Ø. 4.Вычислим множества VT VT : VT ( MT EDu ),VF : VF ( MF EDu ), u 1,... f где МT и MF — множества операторов для текущего вложенного оператора. Конец алгоритма. 28 Вопрос 25. Понятие о матрице независимости в граф-схемах алгоритмов. Для определения возможности распараллеливания операторов необходимо провести анализ независимости операторов по данным и по управлению. Для этих целей вводится матрица независимости операторов М. Симметричная матрица M (i, j ) S (i, j ) L(i, j ) , где — операция дизъюнкции булевой алгебры; S (i, j ) ST (i, j ) , если ST (i, j ) 0 , и ST (i, j ) 1 , если ST (i, j ) 0 для i =1, ...,RST и j = 1, ... , RST (не треугольная, а получается зеркальным отображением относительно главной диагонали из ранее полученной треугольной); L(i,j) —- матрица логической несовместимости, называется матрицей независимости операторов. Матрица М отражает информационно-логические связи между операторами без учета их ориентации и с учетом транзитивных связей и логической несовместимости операторов. Следует отметить, что в соответствии с определением для информационного графа матрица М совпадает с матрицей S'. 29 Вопрос 26. Взаимно независимые операторы. Определение взаимной независимости. Полные и максимально полные множества ВНО. Операторы и — взаимно независимые (ВНО), если в матрице независимости М ( , ) = М ( , ) = 0. Операторы i , i 1,..., s образуют полное множество ВНО, если для любого опеj i ратора существует пара элементов матрицы независимости M ( i , j ) M ( j , i ) 1, i 1,...,s Множество, содержащее наибольшее число элементов для данного графа, называется максимально полным. По нулевым элементам матрицы независимости М в строке каждого оператора можно указать множество тех операторов, каждый из которых при выполнении некоторых условий может быть выполнен одновременно с данным, т. е. он информационно или по управлению не зависит от данного и не является с ним логически несовместимым. 30 Вопрос 27. Алгоритм нахождения полных множеств ВНО. Алгоритм. 1.Пусть W — массив полных множеств ВНО. Максимальное полное множество ВНО обозначим как А, а l — число элементов в нем. Очередное формируемое множество ВНО обозначим как D, d – количество элементов в нем. Номер очередного найденного нулевого элемента в строке обозначим как k. Изначально положим, что стек пуст, W = Ø, А = Ø, l =0, D=Ø, d =0, k=0. 2.Загрузим очередную i-ю строку в стек, где i = 1,..., п; n — размер матрицы М. Положим D = {i} , d= 1, k=i. Если все строки обработаны, то выполнение алгоритма заканчивается: найдены все полные множества ВНО (W) и определено максимальное (А). 3.В строке-вершине стека найдем очередной нуль, занимающий позицию j > k. Если нуль найден, то перейдем к выполнению шага 6, иначе выполним следующий шаг. 4.Если такого нуля нет или все нули найдены, выполняем проверку на полноту найденного множества D. Если в строке-вершине стека все нули соответствуют всем операторам из D, то найденное множество полное. Произведем сохранение Wm = D и перейдем к шагу 7. Если в строке-вершине есть хотя бы один нуль, не соответствующий операторам из D, то найденное множество не является полным. Переходим к следующему шагу. 5.Исключим из стека строку-вершину (не будем забывать, что, исключая строку, мы уничтожаем и текущие значения k и D, и возвращаемся к их предыдущим значениям). Если после этого стек исчерпан, выполним шаг 2. В противном случае выполним шаг 3. 6.В текущей вершине стека присвоим k:= j. Складываем логически (поэлементная дизъюнкция) строку, исключая поля k u D из вершины стека, со строкой с номером j — формируем новую вершину стека. В новой вершине стека формируем множество D : D { j}, d : d 1, k : j . Перейдем к шагу 3. 7.Сравним значения d и l. Если d > l, то А := D, l := d. Независимо от результата сравнения перейдем к шагу 5. Конец алгоритма. 31 Вопрос 28. Алгоритмы построения ранних и поздних сроков окончания выполнения операторов. Рассмотрим алгоритм, представляемый информационным графом (без связей по управлению), не имеющим контуров. Тогда очевидно, что момент окончания выполнения любого из операторов не может быть меньше максимальной из длин всех путей, заканчивающихся вершиной, соответствующей этому оператору. Таким образом, для каждого оператора алгоритма j = 1,..., т. можно найти ранний срок t 1j окончания его выполнения. Если окончание выполнения алгоритма ограничено временем T TКР , то для каждого оператора можно найти и поздний срок окончания его выполнения t 2j (Т). Здесь ТКР — максимальная характеристика пути в графе со скалярными весами, она определяет минимальное время, за которое может быть решена данная задача. Окончание выполнения любого оператора позже этого позднего срока приводит к тому, что все последующие за ним операторы не смогут быть выполнены в заданный срок Т, поэтому без задания Т определение поздних сроков не имеет смысла. При Т = Ткр ранние и поздние сроки выполнения операторов, входящие в критический путь, совпадают. Алгоритм. Нахождение ранних сроков окончания выполнения операторов. 1.Положим t1j : 0, где j : 1,..., RS . 2.Просмотрим строки матрицы S сверху вниз, выберем первую необработанную строку матрицы и осуществим переход к следующему шагу. Если обработаны все строки, то конец алгоритма, 3.Пусть выбрана j-я строка, не содержащая единичных элементов. Далее вычислим 1 t j : Pj , где Pj — вес j-гo оператора, затем выполним переход к шагу 5. 4.Если j-я строка содержит единичные элементы, то вычислим t1j : maxt1j Pj , где t есть множество времен, которым соответствует единица в данной строке. Затем выполним переход на шаг 5. Если во множестве t есть нулевые элементы, то выполним 1 j 1 j шаг 6. 5.Обработанную j-ю строку исключим из рассмотрения и осуществим переход к шагу 2. 6.Если найдена строка j , для которой t1j 0 , то вычислим строку j= j , и осуществим переход к шагу 3. Конец алгоритма. Примечание. Пункт 6 используется для нетреугольной матрицы S. Алгоритм . Получение поздних сроков окончания выполнения операторов. 1. Положим t 2j : 0, где j : 1,..., RS .. 2. Просмотрим столбцы матрицы S справа налево, выберем первый необработанный столбец матрицы и произведем переход к следующему шагу. Если обработаны все столбцы, то конец алгоритма. 3. Пусть j — номер очередного необработанного столбца. Если он не содержит единичных элементов, то вычислим t 2j (Т)= Т, где Т — время решения задачи, и перейдем к шагу 5. 4. Если столбец j содержит единичные элементы, то вычислим t 2j (T ) min{t 2j Pj } ,т.е. минимум определим по всем jv единичным элементам j-гo столбца. Если t 2j (T ) 0 , то выполним шаг 6. 32 5. Обработанный j-й столбец исключим из рассмотрения, затем выполним шаг 2. 6. Если найден столбец jv, для которого t 2j (T ) 0 , то проведем поиск необработанного столбца jv, вычислим j = jv и выполним переход к шагу 3. Конец алгоритма. Примечание. Пункт 6 используется для нетреугольной матрицы 3. Диаграммы выполнения операторов для ранних и поздних сроков — удобный способ наглядного представления многопроцессорной обработки. Всего в диаграмме имеется п строк, соответствующих числу процессоров в системе. Выполнение того или иного оператора отмечается прямоугольниками, имеющими длину, равную весам операторов, и правую границу, соответствующую крайнему сроку окончания выполнения операторов. 33 Вопрос 29. Определение функции плотности загрузки и минимальной загрузки для ВС. Множество входных вершин графа G называется минорантой графа G. Множество выходных вершин графа G называется мажорантой графа G. Пусть А есть миноранта, В — мажоранта графа G, a pj – j-го оператора. Тогда множество значений сроков окончания выполнения операторов определяется следующими неравенствами: t j p j 0 , если j A (1) t j p j ti , если существует связь i j, i X \ B, j X \ A (2) t j T , если j B (3) Множество значений, определяемых неравенствами (1) — (3), задает многоугольник МТ в RS-мерном пространстве: (t1 ,...,t RS ) M T . Тогда справедливо следующее определение: RS 1, (t j p j , t j ) Функция PZ (t1 ,..., RS , ) OP(t j , ) , где OP(t j , ) , называется j 1 0, (t j p j , t j ) плотностью загрузки ВС в точке для значения t1 ,..., RS . Значение функции PZ в каждый момент времени формируется операторами множества ВНО, т. е. в каждый момент времени значение функции PZ совпадает с числом одновременно выполняемых операторов. a Функция Z (t1 ,..., t RS , a, b) PZ (t1 ,..., t RS , )d называется загрузкой отрезка [a, b] [0, T ] b для (t1 ,...,t RS ) M T . Функция Z определяет количество выполненных на этом отрезке операторов (с учетом частично выполненных операторов). Функция Z (T ) (a, b) min Z (t1,..., tRS , a, b) называется минимальной загрузкой отрезка [a, b] [0, T ] для (t1 ,...,t RS ) M T . Смысл этого определения заключается в том, что при решении задачи за время Т при любом планировании операторов на выполнение загрузка отрезка [a, b] [0, T ] не может быть меньше вычисленной, согласно определению величины Z (T ) (a, b) . 34 Вопрос 30. Алгоритм определения минимальной загрузки в системе ВС на заданном интервале. Для составления алгоритма вычисления функции Z (T ) (a, b) введем функцию: x, x 0, 0, x 0 ( x) Алгоритм. Вычисление функции Z (T ) (a, b) . 1. С помощью известных алгоритмов вычислим ранние t 1j и поздние t 2j (T) сроки окончания выполнения операторов. 2. Положим Z (T ) (a, b) 0 . 3. Анализируем последовательность оператора j = 1, ..., RS. Если просмотрены все операторы, то конец алгоритма. 4. Вычислим Z (T ) (a, b) Z (T ) (a, b) min{ (t1j a), (b t 2j (T ) Pj ), Pj , b a} . 5.После перебора Конец алгоритма. всех, операторов 35 получим значение Z (T ) (a, b) . Вопрос 31. Об оценке сверху и снизу необходимого числа процессоров для решения поставленной задачи. Лемма (об оценке сверху требуемого количества процессоров для решения задачи за время Т). Минимальное количество однородных процессоров N, способных выполнить данный алгоритм за время Т ≥ Ткр, не превышает E max{Ci }, i 1,...,l , где Ci — число операторов, которое входит в i-е полное множество ВНО, полученное для информационного графа G, соответствующего исследуемому алгоритму. Следствие: При N = Е время решения данного алгоритма Т=Ткр. Примечание. Получаемое количество процессоров N на основании этой леммы является верхней оценкой требуемого количества процессоров (т. е. для решения данной задачи требуется не более N процессоров). Теорема (об оценке снизу числа процессов, необходимых для решения задачи за время Т). Для того чтобы N процессоров было достаточно для выполнения заданного алгоритма, представленного информационным графом со скалярными весами вершин за время Т, необходимо, чтобы для отрезка [a, b] [0, T ] выполнялось соотношение N Z (T ) ( a , b ) , где Z (T ) (a, b) — минимальная загрузка отрезка [a, b] . ba 36 Вопрос 32. Об оценке снизу времени выполнения задачи при заданном количестве процессоров. Уточнение оценки снизу времени выполнения задачи на N процессорах. Теорема (об оценке снизу времени выполнения задачи при заданном количестве процессоров). Для того чтобы Т было наименьшим временем выполнения алгоритма, представленного информационным графом со скалярными весами вершин, на ВС, состоящей из N процессоров, необходимо, чтобы для отрезка [a, b] [0, T ] выполнялось соотношение Z (T ) (a, b) N (b a) , где Z (T ) (a, b) — минимальная загрузка отрезка [a, b] . Теорема (об уточнении оценки снизу времени выполнения задачи на N процессорах). Если Т1 — оценка снизу времени выполнения алгоритма, представленного информационным графом со скалярными весами вершин на ВС, имеющей N процессоров, и если на отрезке [a, b] [0, T ] выполняется соотношение Z (T ) (a, b) N (b a) d 0 , то наименьшее время Т реализации алгоритма удовлетворяет соотношению T T1 37 d . N Вопрос 33. Алгоритм определения оценки минимального числа процессоров, необходимых для выполнения алгоритма за время Т. Алгоритм. Оценка минимального числа процессоров, необходимого для выполнения алгоритма за время Т. 1. Положим N:= 0. 2.Последовательно переберем интервалы [a, b] [0, T ] в порядке [0,1]; [0,2]; [1,2]; [0,3]; [1,3]; [2,3]; ,,, [0, Т]; [1, Т]; ... [Т–1, Т]. Всего отрезков T (T 1) . 2 3. Для очередного интервала [a, b] вычислим N1 ся по известному алгоритму. 4. Если N1 > N, то N := N1. 5. После обработки Конец алгоритма. всех интервалов 38 Z (T ) ( a , b ) , где Z (T ) (a, b) определяетba получим требуемое N. Вопрос 34. Алгоритм определения оценки минимального времени Т выполнения заданного алгоритма на ВС, содержащего N процессоров. Алгоритм. Оценка минимального времени Т выполнения заданного алгоритма на ВС, содержащей N процессоров. 1 RS p ,T N 1. Вычислим T : max i i 1 , где x — ближайшее к х целое число, не меньшее КР х, pi — вес i-го оператора. 2. Просмотрим интервалы [a, b] [0, T ] в порядке [0,1]; [0,2]; [1,2]; [0,3]; [1,3]; [2,3]; ,,, [0, Т]; [1, Т]; ... [Т–1, Т]. Всего отрезков T (T 1) . 2 Примечание. При таком выборе последовательности отрезков значение Т можно увеличивать, не пересчитывая при этом ранее вычисленные значения d. 3. Для очередного интервала [a, b] вычислим значение d Z (T ) (a, b) N (a, b) , где величина Z (T ) (a, b) вычисляется по известному алгоритму. d 4. Если d > 0, вычислим T : T . N d 5. Вычислим t 2j (T ) : t 2j (T ) , j 1,..., RS . N 6. После обработки всех интервалов вычислим значение Т — нижнюю оценку минимального времени выполнения данного алгоритма на данной ВС. Конец алгоритма. 39 Вопрос 35. Алгоритм оценки минимально необходимого количества процессоров для задачи, представленной ИЛГ. Если n – количество логических операторов в графе, то M 2n - число образованных информационных связей. 1 1 1 2 3 2 1 4 5 6 7 8 2 3 4 9 2 3 6 3 5 5 7 7 8 9 Перенумеруем логические операторы «сверху вниз, слева на право». Для построения алгоритма преобразование информационно-логического графа в информационный граф, обозначим jT или jF , через jTF, будем считать при этом Если jTF jT , то jTF jF ; Если jTF jF , то jTF jT . Алгоритм 1. Просматриваем матрицу ST по столбцам слева на право, находим столбец, где имеется значение jTF , предполагаем, что уровень этого логического оператора k:=1. Вводим вспомогательную переменную FLAG:=True, f:=1. Если просмотрены все столбцы, то конец алгоритма. 2. Выбираем связь jTF и преобразуем ее в информационную. Если FLAG:=True, то связь jTF временно исключаем из рассмотрения, вместе со всеми вершинами, доступными через эту связь. При том полагается, что исключаемые вершины образуют неориентированный граф. Иначе (FLAG:=False) эта связь больше не рассматривается. 3. В столбце j проверяем есть ли значение iTF , где i – номер строки. Если да, то полагаем k++, j:=i. Столбец исключаем из рассмотрения и идем на шаг 2. Иначе формируем информационный граф. Если f=k или k=1, то идем на шаг 1. иначе полагаем f:=k 4. На уровне k полагаем jTF jTF , FLAG:=False и идем на шаг 2. Алгоритм. (для оценки минимального числа процессоров для ИЛГ) 1. N1 : 0 2. Используя предыдущий алгоритм, находим очередной информационный граф. 3. Для найденного ИГ, используя алгоритм в вопросе №33, получим нижнюю оценку числа процессоров N. 4. Если N N1 , то полагаем N1 : N 5. Если обработаны все ИГ, то получается, что значение N1 минимальная оценка числа процессоров, необходимого для решения задачи, представленной ИЛГ. Конец алгоритма. 40 Вопрос 36.Алгоритм оценки времени выполнения задачи, представленной данным ИЛГ. Алгоритм. (Получение нижней оценки времени выполнения задачи представленной данным ИЛГ) 1. T1 0 2. Используя алгоритм из вопроса 35, находим очередной информационный граф. 3. Используя алгоритм из вопроса 34, для найденного ИГ, вычислим нижнюю оценку времени решения задачи для рассматриваемого ИГ Т. 4. Если T T 1 , то T 1 T 5. Если обработаны все ИГ, то конец алгоритма. Конец алгоритма. 41 Вопрос 37. Архитектурные аспекты при создании ОС ВС. 1. Архитектура должна удовлетворять требованиям организации в системе параллельных вычислений во всех режимах. Опыт показывает, что круг задач, допускающих такое представление, достаточно широк. Более того, разработанные методики обеспечивают построение идентичных ветвей таких, что каждая из ветвей состоит их операторов, преобразователей данных, находящихся в памяти, выделенной для этой ветви вычислителя, и относительно редко требуют обращения к памяти других вычислителей. Данное свойство уменьшает остроту вопроса о влиянии структуры ВС в сети межмашинной связи и, в частности, системного устройства, на время обращения к общей или рассредоточенной по вычислителям памяти системы. 2. В основе организации параллельных вычислений лежит представление вычислителей в виде совокупности совместно протекающих асинхронных и взаимодействующих процессов. Под процессом здесь понимается совокупность последовательных воздействий при реализации в реальном времени некоторого алгоритма на части ресурсов системы. Совместимость процессов означает не только обычную для мультипрограммных систем (в частности, систем разделения времени)одновременность реализации алгоритмически независимых процессов (разделение ресурсов ВС), но и существование связи между отдельными процессами. Эта связь обусловлена тем, что они являются частями одного сложного алгоритма (объединение ресурсов ВС) 42 Вопрос 38. Опыт применения методики крупноблочного распараллеливания сложных задач. 1. Сложные задачи допускают построение параллельных алгоритмов, состоящих из идентичных ветвей. Разработка таких алгоритмов, характеризуется простотой, а процесс написания параллельной программы сводиться к написанию последней для одной ветви соответствующего параллельного алгоритма. 2. При распределении исходных данных между ветвями параллельного алгоритма эффективными являются принципы однородного расщепления массивов информации, при котором обеспечивается равенство объемов составных частей, единообразие при введении избыточности в каждой из них, и взаимнооднозначное соответствие между их номерами и номерами этих ветвей. 3. Для построения параллельных алгоритмов достаточно использовать 5 схем обмена информацией между ветвями: — дифференциальную; — трансляционную; — трансляционно-циклическую; — конвейерно-параллельную; — коллекторную. Осуществление обмена по данным схемам в общем случае связывается с транзитным прохождением информации через вычислители, лежащих на пути между взаимодействующими ВС. 4. Простота реализации обмена по рассмотренным схемам позволяет использовать в основном регулярные однородные структуры ВС и конфигурации подсистем, программно-настраиваемых в пределах ВС в виде линейки, кольца, решетки, гиперкуба и тора. 5. Для записи параллельных алгоритмов решения сложных задач эффективны версии языков высокого уровня, которые являются расширениями последовательных языков, средствами организации взаимодействия между вычислителями. Объем системного расширения этих языков составляет несколько % от общего объема транслятора. Экспериментально установлено, что число программирования на параллельных языках имеет тот же порядок, что и на последовательных. Увеличение трудоемкости укладывается в 10% от трудоемкости последовательного программирования. 6. Простота схем обмена данных на машинах ведет к простоте записи реализации параллельных программ. Затраты на взаимодействие между программами менее 10% от общего объема программы. 7. Трансляционно-циклическая, трансляционная конвейерно-параллельная схемы обмена составляют не менее 90% от всех схем, реализуемых в процессе выполнения параллельных программ сложных задач. Время обмена информацией между ветвями параллельной программы, отнесенное к общему времени ее выполнения асимптотически стремиться к нулю с ростом объема исходных данных. 43 Вопрос 39. Основы функционирования ВС типа «МИКРОС-Т». Система МИКРОС в виде D2 – графа (степень вершин 4): Bi – вычислитель с транспьютером: Транспьютер управляет архитектурой этой ВС. В этой структуре может быть распределенный коммутатор. 44 Вопрос 40. Исследование ИГ с векторными весами вершин, для планирования параллельных вычислений. Пусть в вычислительной системе имеется Ni , i 1,..., k процессоров, Здесь i задает тип процессора, а N задает количество процессоров. Если задача имеет j операторов, то время выполнения заданного оператора, на заданном процессоре будем обозначать как ji , j=1, …, m; i:=1, …,k. 1 2 4 (3,оо,5) (оо,2,3) (1,2,3) 3 (4,3,2) 5 (2,3,2) 3 типа процессора. оo – на данном типе процессора задача не может быть решена. 45 Вопрос 41. Алгоритм нахождения операторов входящих только в одно множество ВНО. Алгоритм 1. Матрицу ST' посматриваем сверху вниз по строкам, если просмотрены все строки, то конец алгоритма. 2. В i-й строке находим множество элементов { j } , 1,..., k , равных 0 3. Получим дизъюнкцию строк DS j Vk1 ( j ,1),...,( j , RST ') 4. Если i-я строка матрицы ST' совпала со строкой DS j , то i-й оператор входит в 1 и только в 1 множество ВНО. Само множество ВНО определяется номерами столбцов, имеющих нулевые значения в i-й строке. 46 Вопрос 42. Утверждение об исключении процессоров, соответствующих типов, при поиске вариантов распределения рассматриваемого оператора. Утверждение. (Об исключении процессоров, соответствующих типов, при поиске вариантов распределения оператора B) Пусть 1. Набор процессоров {Ni }, i 1,..., k где k – набор типов процессоров. 2. Оператор входит в 1 и только 1 множество ВНО, числом операторов 3. Компоненты веса вершины оператора в информационном графе G упорядочены по неубыванию. P1 P2 ... P s , P S 1 ... Pk , s 1 k 4. Существует положительное l < s, такое, что при l = 1, 0 N1 l > 1, l 1 l i 1 i 1 Ni Ni То при исследовании и выполнении планов данного последовательного алгоритма можно положить Pl 1 ... P s , что приводит к исключении процессоров соответствующих типов из рассмотрения. при поиске вариантов назначения операторов . s – количество процессоров способных выполнить данную операцию. - мощность множества ВНО Слетствие: Если согласно Утв. 5, найдено положительное l удовлетворяющее условию Утв. 5, то достаточно добиться упорядоченности весов P1 P2 ... Pl 1 (3,oo,1) (1,1,1) (1,2,3) 2 3 (6,5,oo) 4 5 (1,2,2) 6 (oo,2,3) {{1}, {2,3}, {4,5}} 1. {1} 1, 1 P1 {1, 2,3} l 1, 1 l N1 47 P4 , P5 2, S 1 P4 {1,1,1} P5 {1, 2, 2} s 3, 2, l 2 2 3, l S Удобно представить граф с весами следующим образом: Расположим веса вершин в порядке убывания, не теряя принадлежности составляющих к типу процессора. Таким образом, в общем случае, для графа с векторными весами вершин, получим набор весов различной размерности. Pji , j 1,..., m; i 1,..., k в множестве рассматриваемых операторов могут встретиться веса Pji , для некоторого j-го оператора возможно, что размерность k j k 1(1) 1.1 1(3) 2.1 1.3 5(2) 3(1) 3.1 2.2 1(1) 4.1 1(3) 1(2) 1.2 1(3) 1(2) 4.2 6(1) 3.2 1(1) 4.3 5.1 2(2) 6.1 2(3) 2(2) 5.2 5.3 3(3) 6.2 Выбрав по 1 вершине для каждого оператора о, можно построить граф со скалярными весами вершины. Назовем этот граф G-выборкой графа G*. m Общее число выборок равно R Pj , где m –количество операторов в графе, а Pj – размерность j 1 вектора весов j- го оператора. R=3*2*2*3**3*2=216 R=1*2*2*2*3*2=48 Определение 18. Минимальную составляющую вектора веса вершины графа G назовем младшим скалярным весом этой вершины. Определение 19. G-выборку графа G*, составленную из вершин с младшими скалярными весами, назовем младшей G-выборкой графа G*. Для заданного алгоритма, представленного набором операторов j=1,..,m. Для i=1,…,k типов процессоров. N i - количество процессоров i-го типа. { j } { j } M T , { j } - множество времен для -го процессора. 48 Вопрос 43. Определение 20. Плотностью загрузки для i-го типа процессора, найденной для значений k1 1, [t j Pj , t j ] ( 1 ,..., m ) M T , назовем величину PZi (t j1 ,..., t jk , ) OP(t j , ) , где OP(t j , ) 0 b Определение 21. Функцию Z i (t j1 ,..., t jk , a, b) PZ i (t j1 ,..., t jk , )d назовем загрузкой отрезка [a,b] i i a входящей в [0, T] для i-го типа процессора. Z i(T ) (a, b) min Z i (t j1 ,..., t jk , a, b) назовем минимальной загрузкой отрезка [a,b] для i-го типа процесi сора. При определении Z i(T ) (a, b) по А12 необходимо учитывать только те операторы, которые выполняются на i-м типе процессора. Алгоритм 18. (Ранние, поздние сроки) 1. с помощью А10 и Ф11 определяем t 1j и t 2j (T ) 2. i:=1 3. Z i(T ) (a, b) 0 4. Анализируем последовательность операторов { ji }, 1,...,i 5. Zi(T ) (a, b) Zi(T ) (a, b) min{ (t1j a), (b t 2j (T ) j ), j , b a} 6. После перебора всех операторов, выполняемых на i-м типе процессора, определяем загрузку i-го типа процессора 7. Переходим на вычисление загрузки следующего типа процессоров i++. Идем на шаг 3. 8. После перебора всех значений i получим загрузку всех типов процессоров. Пример. 1(1) 1 3(2) 2(2) 2 1(1) 4 3 2(1) 5 T=8 49 (2,5, 6,5,8) dT 1 2 s 3 4 5 1 0 1 1 1 0 2 0 0 0 0 1 3 0 0 0 0 0 4 0 0 0 0 0 5 ti1 0 1 0 4 0 2 0 3 0 6 ti2 4 6 8 8 8 6 ki 6 1 1 1 Z1 (2,5, 6,5,8,1, 6) OP(t j , ) (OP(2, ) OP(6, ) OP(8, )d 1 1 0 2; 6 Z 2 (OP (5, ) OP (5, )d 3 2 5 1 Об оценке требуемого количества процессоров N i , или для оценки времени решения задачи, на наборе процессоров различного типа. Вопрос 44 Утверждение 1. Пусть каждый оператор данного алгоритма может быть выполнен процессором одного и только одного типа из множества типов i=1,…,k. Тогда для того, чтобы Т было наименьшим временем реализации данного алгоритма, состоящего из множества { N i } процессоров, либо для того, чтобы набор { N i } был достаточен для выполнения данного алгоритма за время Т необходимо чтобы для любого отрезка времени [a, b] [0, T ] выполнялось соотношение: Zi (a, b) Ni (b a) Утверждение 2. Об уточнении оценки времени выполнения алгоритма на наборе процессоров { N i }. Пусть Алгоритм задан информационным графом со скалярными весами вершин, и каждый оператор может быть выполнен процессором одного и только одного типа из множества типов i=1,…,k. Пусть ВС состоит из процессоров указанного типа. Пусть далее T1 оценка реализации данного алгоритма на ВС, для которого на некотором отрезке [a, b] [0, T ] Zi (a, b) Ni (b a) d 0 . d Тогда время выполнения данного алгоритма T T1 . Ni 50 Вопрос 45 Алгоритм 19 (об оценке минимального количества процессоров N i , i=1,…,m необходимой для выполнения заданного алгоритма за время Т) 1. i=1 2. N i =0 3. Последовательно берутся интервалы [a, b] [0, T ] , [0,1], [0,2], [1,2],…,[T-1, T] 4. по А18 вычисляем Z i(T ) (a, b) и затем Ni1 ] Zi1 (a, b) [ a b 5. N i1 N i , N i N i1 Ni , i если i > m то конец алгоритма, иначе на ш.2 Пример 2(1) 1 3(1) 1(2) 2 3 1(2) 4 2(2) 1(1) 6 5 Т=6 1. 1 2 3 4 5 6 1 0 1 1 1 0 0 2 0 0 0 0 0 0 3 0 0 0 0 1 0 4 0 0 0 0 0 1 5 0 0 0 0 0 0 6 ti1 0 2 0 5 0 3 0 3 0 4 0 5 ti2 3 6 5 4 6 6 Z1 (0,1) min(2, 0,...) min(5, 0,...) min(4, 0,...) 0 N1 0 Z1 (0, 2) min(2,1, 2, 2) min(5, 0,...) min(4, 0,...) 1 N1 1 Z1 (1, 2) 1 N1 1 Z1 (0,3) 2 N1 1 Z1 (1,3) 1 N1 1 51 Z1 (2,3) 0 N1 1 Z1 (0, 4) 2 1 3 N1 1 Z1 (1, 4) 1 1 2 N1 1 Z1 (2, 4) 11 1 Z1 (3, 4) 1 N1 1 Z1 (0,5) 2 2 4 N1 1 Z1 (1,5) 1 2 3 N1 1 Z1 (2,5) 2 N1 1 Z1 (3,5) 2 N1 1 Z1 (4,5) 1 N1 1 Z1 (0, 6) 2 3 1 6 N1 1 Z1 (1, 6) 1 3 1 5 N1 1 Z1 (2, 6) 0 3 1 4 N1 1 Z1 (3, 6) 0 2 1 3 N1 1 Z1 (4, 6) 0 1 0 1 N1 1 Z1 (5, 6) 0 1 0 1 N1 1 2. Z 2 (0,1) 0 N2 0 Z 2 (0, 2) Z 2 (1, 2) Z 2 (0,3) Z 2 (1,3) ... Z 2 (3, 4) 0 N2 0 Z 2 (0, 4) 1 N2 1 52 Z 2 (1, 4) Z 2 (2, 4) 0 N2 1 Z 2 (3, 4) 0 N2 1 Z 2 (0,5) 1 1 1 3 N2 1 Z 2 (1,5) Z 2 (2,5) 3 N2 1 Z 2 (3,5) Z 2 (4,5) 1 N2 1 Z 2 (0, 6) Z 2 (1, 6) Z 2 (2, 6) 4 N2 1 Z 2 (3, 6) 2 N2 1 Z 2 (4, 6) 1 N2 1 Z 2 (5, 6) 0 N2 1 53 Вопрос 46 Алгоритм 20 (об оценке минимального времени выполнения алгоритма на наборе процессоров) { N i }, i = 1,…, m 1. i:=1, T1 : 0 2. Вычисляем Ti : Tкр 3. [a, b] [0, T ] по А19 4. [a,b] по А18 Z i(Ti ) (a, b) 5. di Z i(Ti ) (a, b) N i *(b a ) d 6. di 0 , то Ti : Ti ] i [ Ni d 7. t 2j (Ti ) t 2j (Ti )] i [ , 1,...,i Ni 8. Ti T1 , T1 Ti 9. i++ если i>m то конец алгоритма, иначе переходим на ш. 2. Пример 2(1) 1 1(2) 3(1) 2 3 1(2) 4 2(2) 1(1) 5 6 {Ni } {2,1} ti1 ti2 1 2 2 2 5 3 3 5 4 4 3 3 5 5 4 6 5 5 Tкр 5 (0,1) _ d 0 (0, 2) _ d ......... Вычислительные сети (ВС) 54 (P11,P12) 1 R12 (P21,P22) 2 (P31,P32) 3 4 (P51,P52) 5 (P41,P42) (P61,P62) 6 Rij - объемы передаваемой информации l – пропускная способность магистрали. Rij qij l Пусть i-я вершина связана с несколькими вершинами в графе, множество вершин назовем разверткой вершины i (J). i … ij J Условимся, что в случае такой развертке сигнал в линиях передается одновременно. i1 Множество J вершин, связанных с рассматриваемой – назовем сверткой вершин. J … i1 ij i Будем также полагать здесь, что приход любой связи начинал выполнение модуля. Кроме того, мы между связями можем установить логические функции. Такая трактовка свертки позволяет строить ВС, которая не решает какие-то задачи, а выполняет сервисные функции. Нитью сети, решающей задачу, будем называть цепь, в которой вес входящей или выходящей дуги может быть прибавлен к весу вершины. Алгоритм 20 (Построение нитей в сети G представляющей решаемую задачу) 1. В графе G выберем множество начальных вершин {ni } N0 , i 1,..., m (В матрице S начальным вершинам соответствуют нулевые строки). 55 I:=1 – параметр определяющий текущий номе в множестве N 0 V:= 1 – номер массива перебора операторов k:=1 – номер очередной создаваемой нити. TSk : 0 - множество связей нити с другими нитями f:=0 – номер очередного разрезания графа G N1 : 0 - множество продолжения нитей 2. Возьмем вершину ni N0 3. Вычислим обобщенный вес вершины ni , Pn*i Pni если вес ni вершины не модифицировался Pn*i Pni * Иначе: шаг 4 4. Если из вершины ni не выходит связь, то переходим на шаг 9 Иначе: шаг 5 5. Если из ni выходит 1 связь в j-ю вершину, тоесть в матрице S в ni строке содержится единица в i-й строке. 6. Если j-я вершина не модифицировалась Pn*i Pni * Иначе Обобщенный вес вершины ni определяем как в шаге 3. Переходим к шагу 10. Иначе к следующему шагу Если из вершины ni выходит несколько связей (Развертка), то среди множества дуг J, исходящих из вершины ni ищем максимум q max J {qni , j } (1) 7. Если условию (1) удовлетворяет несколько вершин, то выбираем первую. в множестве Av фиксируется последовательно номера операторов, которые удовлетворяют условию (1) (для 4-х вершин Av : {2,3, 4} ). Av - выходной параметр алгоритма. Для вершины j1 вычисляется вес. Если вершина не модифицировалась Весами вершины множества J исключая вершину j1 вычисляется как Pj* qni , j Pj Pj* Pj* qni , j Где qni , j Обобщенный вес вершины считаем, как на шаге 3. Переходим на шаг 11. Если из вершины ni - не выходит несколько связей, то идем на следующий шаг. 8. Если вершина ni - Входит в сверку J, то обобщенный вес вершины j1 , связанной с вершиной ni вычисляется как Pj*1 Pj1 Веса остальных вершин (исключая вершину j1 ) вычисляются как Pj* Pj q j ,ni , Pj* Pj* q j ,ni если вершина не модифицировалась. Обобщенный вес ni как на шаге 3. 9. Вершина ni включается в Tk -ю нить и исключается из рассмотрения, а Tk -я нить, включается в множество NT. 10. Вычислим N0 : N0 \ ni k++ TSk Если N 0 , то f++, шаг 13 Иначе i++, шаг 2. 11. Вершина ni , оформляется, как элемент Tk é нити и исключается из рассмотрения. Вершина j1 , включается в N1 , дуги ( ni , j ) исключаются из графа G или его компонента. Составля56 ется таблица связей TS k в виде объединений множеств TS k TS k TS k' , где TS k' - включает номера операторов множества J, исключая j1 . 12. Вершина ni оформляется, как элемент Tk нити и исключается из рассмотрения. Вершина j1 , включается в N1 , дуги ( j, ni ) исключаются из графа G или его компонента. Составляется таблица связей TS k в виде объединений множеств TS k TS k TS k' , где TS k' - включает номера операторов множества J, исключая j1 . Осуществляется переход на шаг 10. 13. Рассмотрим множество «к» компонентов графа G, образованного удалением связей. Если k то переходим на шаг 16, Иначе выполняем следующий шаг. 14. С помощью матрицы S составленной для компонентов графа G, определим множество начальных вершин N 0 15. N 0 N1 N 0 , таким образом, чтобы элементам множества N1 предшествовали элементы множества N 0 N0 {ni }, i 1,..., f i : 1 Переходим на шаг 2. 16. Для графа G * который имеет ту же конфигурацию, что и граф G, но в котором изменены веса вершин с учетом весов дуг, вычислим ранние сроки окончания операторов. 17. Для каждой нити Tk T вычислим время старта Tk нити в виде ts ,k t1j Pj* , где t f ,k tm1 Пример 1 1 1 3 4 2 4 3 11 3 2 9 4 2 5 10 7 10 8 5 6 6 9 5 7 8 9 7 8 11 6 1. N0 {1, 2} 2. i:=1 Pn1 1 3. AV 1 (4,5) j1 3, P3* 3 4. P4* 14, P5* 13 5. N1 {3}__ TS1 {4,5} N0 {2}__ x 2 ___ TS2 __ i 2 6. AV 2 {5}, j1 6, P6* 8 7. P5* 16, N1 {1, 6}, TS2 {5}, N 0 {}, k 3, f 1 57 4 2 3 3 14 2 13 4 2 5 10 7 10 8 5 6 6 3 14 2 9 2 5 5 7 8 10 9 7 7 8 5 6 6 9 5 7 8 9 7 8 11 16 4 6 8 11 8. N0 {3, 4,5, 6} a. P3* 3, P7* 10, N 0 {4,5, 6}, k 4, TS S b. P4* 3, P7* 15, N 0 {5, 6}, k 5, TS5 c. P5* 16, P8* 5, N 0 {6}, k 6, TS6 d. P6* 8, P9* 7, k 5, TS5 58 6