- •Московский Государственный Университет им. Н.Э.Баумана
- •1.Введение
- •1.1.Предмет и цель курса лекций.
- •1.2.Некоторые необходимые определения и понятия.
- •2.Задачи, алгоритмы
- •2.1.Задача
- •2.2.Алгоритм
- •3.Нормальные алгорифмы Маркова (нам).
- •4.Машины Тьюринга
- •4.1. Одноленточная мт
- •4.2.Многоленточная мт
- •4.3.Недетерминированная мт
- •4.4.Оракульная мт
- •5.Равнодоступная адресная машина (рам) и некоторые другие подходы.
- •6.Сравнение различных формальных схем.
- •6.1.Кодировки входных данных.
- •6.2.О мерах сложности
- •6.3.Теоремы сравнения
- •6.4.Полиномиальные и неполиномиальные оценки сложности
- •7.Сложность алгоритмов некоторых задач.
- •7.1.Задача нахождения максимального числа.
- •7.2.Задача сортировки.
- •7.3.Задача о камнях.
- •7.4.Простота числа.
- •7.5.Задача о кратчайшем (минимальном) остове (остовном дереве).
- •7.6.Задача коммивояжера.
- •7.7.Задача о кратчайшем пути.
- •7.8.Задача о выполнимости кнф (кнф-выполнимость)
- •8.Схемы из функциональных элементов. Схемная сложность.
- •8.1.Схемы из функциональных элементов
- •8.2.Оценки сложности сфэ.
- •9.Теория np-полноты
- •9.1.Классы p и np.
- •9.2.Сводимость задач
- •9.2.1.Смысл сводимости
- •9.2.2.Полиномиальная сводимость
- •9.2.3.Сводимость по Тьюрингу
- •9.3.Теорема Кука
- •9.4.Структура класса np и некоторые выводы
- •10.Иерархия сложности
- •10.1. Классы np и co-np
- •10.2.Классы p-space и np-space. Элементы исчисления предикатов.
- •10.2.1.Классы сложности p-space и np-space
- •10.2.2.Логика предикатов и pspace –полные задачи.
- •10.3.Классы p и p/poly.
- •10.4.Некоторые результаты
- •11.Подходы к решению np-полных задач
- •11.2.Приближенные алгоритмы
- •11.3.Полиномиально-разрешимые частные случаи np-полных задач
- •11.4.Методы направленного перебора
- •12.Параллельные вычисления
- •12.1.Классификация моделей параллельных вычислений.
- •12.2.Примеры способов параллельной обработки данных
- •12.3.Вопросы производительности параллельных вычислений
- •12.3.1.Основной вопрос сложности параллельных вычислений
- •12.3.2.Асимптотическая производительность
- •12.3.3.Гипотеза Минского.
- •12.4.Пример параллельного вычисления.
- •13.Коммуникационная сложность
- •14.Рекомендованная литература
12.2.Примеры способов параллельной обработки данных
Рассмотрим SIMD системы и сосредоточимся на механизмах обработки данных.
Как мы уже говорили выше, системы SIMD делятся на два больших класса:
векторно-конвейерные вычислительные системы;
векторно-параллельные вычислительные системы или матричные вычислительные системы.
В основе систем этих классов лежат две технологии параллельной обработки данных: собственно параллелизм и конвейерность.
В компьютере обычно реализуются все основные типы команд: скалярные, векторные и конвейерные. Команда, у которой все аргументы скалярные величины, называется скалярной командой. Если хотя бы один аргумент вектор, команда называется векторной. Соответственно в составе компьютера могут быть скалярные, векторные и конвейерные устройства.
Векторно-конвейерные вычислительные системы.
Предполагается, что система состоит из набора функциональных устройств (ФУ). Результат предыдущего срабатывания ФУ может сохраняться в нем только до момента очередного срабатывания. ФУ не может одновременно выполнять операцию и сохранять результат, т.е. не имеет собственной памяти. ФУ называется простым, если никакая последующая операция не может начаться раньше, чем предыдущая. Конвейерное ФУ состоит из цепочки простых ФУ, которые называют элементарными. Очередная операция считается выполненной после прохождения всех элементарных ФУ (ступеней конвейера).
Основные принципы, заложенные в архитектуру векторно-конвейерных систем:
конвейерная организация обработки потока команд;
введение в систему команд набора векторных операций, которые позволяют оперировать с целыми массивами данных.
Длина обрабатываемых векторов в современных векторно-конвейерных системах составляет, как правило, 128 или 256 элементов. Основное назначение векторных операций состоит в распараллеливании выполнения операторов цикла, в которых обычно сосредоточена большая часть вычислительной работы.
Современные векторно-конвейерные системы имеют иерархическую структуру:
на нижнем уровне иерархии расположены конвейеры операций (например, конвейер (pipeline) сложения вещественных чисел, конвейер умножения таких же чисел и т.п.);
некоторая совокупность конвейеров операций объединяется в конвейерное функциональное устройство;
векторно-конвейерный процессор содержит ряд конвейерных функциональных устройств;
несколько векторно-конвейерных процессоров, объединенных общей памятью, образуют вычислительный узел;
несколько таких узлов объединяются с помощью коммутаторов.
Каждая часть конвейера операций называется ступенью конвейера операций, а общее число ступеней - длиной конвейера операций.
Ниже, приводя результаты теоретического анализа производительности, мы увидим, что недостатком векторно-конвейерных систем является невысокая загрузка процессорных элементов. Высокая производительность достигается только на операциях с длинными векторами. На скалярных операциях и при обработке векторов и матриц невысокой размерности значительная часть устройств может простаивать. В целом, векторно-конвейерные системы характеризуются высокой производительностью при полной загрузке их вычислительных устройств, которая имеет место только при решении определенного, достаточно узкого, круга задач.
Векторно-параллельные системы.
Как и векторно-конвейерные системы, векторно-параллельная вычислительная система обычно имеет иерархическую структуру. На нижнем уровне иерархии находятся векторно-параллельные процессоры, представляющие собой совокупность скалярных процессоров (процессорных элементов), которые объединены некоторой коммуникационной сетью и в каждом такте синхронно выполняют одну и ту же команду над разными данными. На верхнем уровне иерархии векторно-параллельные процессоры объединяются общей памятью или коммуникационной сетью. Граф такой сети не обязан быть полным, а так как обмен данными идет между соседними вершинами такого графа, а затратами на время обмена нельзя пренебрегать, то важным параметром таких систем является их диаметр d : максимум длин кратчайших путей между всеми парами вершин графа.
Векторно-параллельные процессоры имеют в своих системах команд специальные векторные (матричные) операции, такие, как векторное и матричное сложение, умножение вектора на матрицу, умножение матрицы на константу, вычисление скалярного произведения, свертки и т.д. При выполнении векторных операций различные компоненты векторов и матриц обрабатываются параллельно на различных процессорных элементах.
Основными компонентами векторно-параллельного процессора являются
совокупность скалярных процессоров (Р);
совокупность модулей оперативной памяти (М);
коммуникационная среда;
устройство общего управления.
Выделим две группы векторно-параллельных процессоров: процессоры с одинаковым числом скалярных процессоров и модулей памяти; векторные процессоры с различным количеством скалярных процессоров и модулей памяти. В векторно-параллельном процессоре с одинаковым числом скалярных процессоров и модулей памяти каждый скалярный процессор подключается к своему модулю памяти. Команда, выдаваемая устройством управления, содержит одинаковый адрес для всех скалярных процессоров. В векторно-параллельном процессоре с различным количество скалярных процессоров и модулей памяти основной проблемой является проблема исключения конфликтов при обращении к памяти (поскольку к одному модулю памяти могут одновременно обращаться в переделе все скалярные процессоры). Для преодоления этой проблемы в системах этого класса используют изощренные схемы хранения массивов данных.
Как и для векторно-конвейерных систем, главным недостатком является низкая, загрузка процессорных элементов. Высокая производительность векторно-параллельных систем достигается только на векторных операциях, в то время как на скалярных операциях, а также при обработке векторов и матриц небольшой размерности, значительная часть процессорных элементов может простаивать.