- •Московский Государственный Университет им. Н.Э.Баумана
- •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.Параллельные вычисления
12.1.Классификация моделей параллельных вычислений.
Одна из формальных моделей алгоритма – многоленточная (k-ленточная) машина Тьюринга за один такт времени обрабатывает k ячеек ленты. Это наводит на мысль о параллельных вычислениях – организации такой работы, чтобы за один такт работы одновременно выполнялось несколько действий.
Но как это организовать? Сначала формулируются принципы параллельного вычисления. И тут сразу же выясняется, что разные принципы порождают разные модели параллельных вычислений.
Классический (фон-неймановский) компьютер появился в начале 1940-х годов, а уже в 1950-е годы в высилительных схемах начали анализировать идеи распараллеливания. Объектами распараллеливания стали два процесса: поток команд и поток данных. В этой связи в 1960-е годы появилась классификация, предложенная еще в 1966 г. М.Д.Флином .
В одиночном потоке команд (SI) в один момент времени может выполняться только одна команда, а все компоненты компьютера ее обслуживают.
Во множественном потоке команд (MI) в один момент времени может выполняться много команд, при этом работа компонент компьютера распараллеливается - каждую команду обслуживает «часть» компьютера.
В одиночном потоке последовательно выполняются отдельные команды, во множественном потоке – группы команд.
Одиночный поток данных (SD) обязательно предполагает наличие в вычислительной системе только одного устройства оперативной памяти и одного процессора. Однако при этом процессор может быть как угодно сложным, так что процесс обработки каждой единицы информации в потоке может требовать выполнения многих команд.
Множественный поток данных (MD) состоит из многих зависимых или независимых одиночных потоков данных.
В соответствии со сказанным, все вычислительные системы были разделены Флином на четыре типа:
SISD (ОКОД);
MISD (МКОД);
SIMD (ОКМД);
MIMD (МКМД).
Это деление затем стало широко использоваться.
Вычислительная система SISD представляет собой классическую однопроцессорную ЭВМ. На вычислительную системы MISD существуют различные точки зрения. По одной них – за всю историю развития вычислительной техники системы MISD не были созданы. По другой точке зрения к MISD-системам относятся векторно-конвейерные вычислительные системы. Вычислительная система SIMD содержит много процессоров, которые синхронно (как правило) выполняют одну и ту же команду над разными данными. Системы SIMD делятся на два больших класса:
векторно-конвейерные вычислительные системы;
векторно-параллельные вычислительные системы или матричные вычислительные системы.
Вычислительная система MIMD содержит много процессоров, которые (как правило, асинхронно) выполняют разные команды над разными данными. Это архитектура современных ЭВМ.
Идея параллельности может базироваться на конструктивных особенностях – гомогенные (с одинаковыми процессорами) и гетерогенные (с разнотипными процессорами) вычислительные системы, на механизмах использования памяти – системы с общей памятью (результат работы одного процессора доступен для остальных) и системы с распределенной памятью (каждый процессор имеет свою локальную память).
Последняя классификация связаны с тематикой следующего раздела: коммуникационной сложностью. Дело в том, что в обоих случаях компоненты памяти процессоров связаны между собой, но в первом случае (UMA-системы) коммуникационными (временными) затратами на эту связь можно пренебречь до такой степени, что память считается общей, поэтому такие системы называются еще сильносвязанными вычислительными системами с одинаковым доступом к памяти, то во втором случае (NUMA-системы) затраты на обмен информацией между отдельными локальными компонентами памяти существенны, и они учитываются в модели. Поэтому такие системы называются слабосвязанными. Если коммуникационный ресурс является критичным, то возникает проблематика коммуникационной сложности вычислений.
В настоящее время большинство высокопроизводительных систем относятся к классу однородных систем с общей памятью или к классу однородных систем с распределенной памятью.
Разделения и классификации являются формальными теоретическими инструментами, а на практике мы, как правило, имеем дело с гибридными системами, причем в силу иерархической структуры современных ЭВМ, на каждом уровне своя «гибридность».. Например, на верхнем уровне иерархии система относится к классу MIMD, каждый процессор которой представляет собой систему MIMD или систему SIMD. Память физически распределена по различным частям системы, но логически разделяема (образует единое адресное пространство) и время доступа к различным частям оперативной памяти различно.