
- •Московский Государственный Университет им. Н.Э.Баумана
- •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.3.3.Гипотеза Минского.
Насколько теоретические оценки производительности соответствуют реальности можно проверить, тестируя эти системы. В целом, оценки подтверждаются, отклонения объясняются особенностями систем и тем фактором, что для каждой системы можно придумать задачу, для которой система будет эффективна и наоборот.
В качестве иллюстраций приведем одну гипотезу и экспертную оценку факторов, влияющих на эффективность распараллеливания.
Гипотеза, принадлежащая Минскому, состоит в предположении, что в N-процессорной векторно-параллельной вычислительной системе или MIMD-вычислительной системе, в которой производительность каждого процессора равна единице, общая производительность E растет как logN.
В первых параллельных вычислительных системах, когда количество процессоров было невелико, гипотеза Минского подтверждалась. В современных системах с большим количеством процессоров имеет место зависимость производительности от числа процессоров, показана на рисунке пунктиром. Основные причины такой зависимости:
с ростом количества процессоров растут коммуникационные расходы (вследствие роста диаметра коммуникационной сети);
с ростом количества процессоров растет несбалансированность их загрузки.
Таким образом, если количество процессоров системы N превышает величину N*, то целесообразно использовать мультипрограммный режим работы системы.
В заключение приведем мнение экспертов (вообще говоря, очевидное) о факторах, которые влияют на производительность параллельных вычислительных систем.
Соответствие архитектуры системы особенностям задачи. Например, если решается задача, в которой отсутствуют массивы данных, элементы которых могут обрабатываться одновременно, а каждая следующая операция может выполняться лишь после завершения предыдущей, тогда применение мощного векторного суперкомпьютера ничего не даст.
Соответствие степени критичности ресурсов особенностям задачи. Например, рассмотрим шину, соединяющую микропроцессоры с памятью. Пропускная способность системной шины оказывает большое влияние на показатели ускорения и эффективности, особенно если в задаче много обменов данными между процессорами.
Соответствие механизма организации кэш-памяти особенностям задачи. Большое значение имеет кэш-память: ее объем, частота работы, организация отображения основной памяти в кэш-память. Эффективность кэш-памяти очень сильно зависит от типа задачи, в частности, от рабочего множества адресов и типа обращений, которые связаны с локальностью вычислений и локальностью использования данных. Наиболее характерным примером конструкции, обладающей свойством локальности, является цикл. В циклах на каждой итерации выполняются одни и те же команды над данными, которые обычно получены на предшествующей операции. Существенное ускорение выполнения циклов достигается путем его размещения его данных в кэш-памяти. Если объема кэшпамяти не хватает, задействуется следующий уровень иерархии памяти, и т.д. Именно кэш-память чаще всего оказывает наиболее существенное влияние на характеристики программ вообще, и распараллеливаемой задачи в частности.
Сбалансированность задачи. В ситуации с распараллеливанием возникает проблема баланса между вычислительными возможностями процессоров и пропускной способностью коммутационной сети. Если последняя является критичной, то именно она определяет накладные расходы - время задержки передачи сообщения. Оно зависит от латентности (начальной задержки при посылке сообщений) и длины передаваемого сообщения. Повышение производительности может достигаться за счет увеличения параллельно работающих процессоров. При этом основная проблема - организация связи между процессорами. Конечно, самый простой способ коммутации процессоров - использование общей шины. Однако в таких системах даже небольшое увеличение числа процессоров, подключаемых к общей шине, делает ее узким местом. Применяются различные способы преодоления этой проблемы, основанные на использовании различных схем коммутации. Если число процессоров и модулей памяти, для связи между которыми используются коммутаторы, велико, в схеме также возможны большие задержки. Уменьшение задержек достигается путем подбора наиболее подходящей топологии сети, обеспечивающей уменьшение средней длины пути между двумя узлами системы. Среднюю длину пути можно уменьшить, применяя вместо простой линейки схему в виде кольца или гиперкуба.