- •Московский Государственный Университет им. Н.Э.Баумана
- •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.Вопросы производительности параллельных вычислений
12.3.1.Основной вопрос сложности параллельных вычислений
Пусть время выполнения одной операции τ. Тогда за время T может быть выполнено приблизительно T/τ операций. Время реализации одной операции называют также стоимостью операции, а сумму стоимостей всех операций T - стоимостью работы. Загруженностью устройства - p называют отношение стоимости реально выполненной работы к максимально возможной стоимости. Показатель эффективности одного процессора - количество операций, запускаемых за один такт процессора - IPC (instructions per sycle). Общая вычислительная мощность многопроцессорной системы оценивается пиковой производительностью, определяемой как максимальное количество операций, которое может быть выполнено системой за единицу времени при отсутствии потерь времени на связи между ФУ. Единица измерения производительности - Flops (одна вещественная операция в секунду).
Пиковая производительность многопроцессорной системы определяется как количество функциональных устройств, предназначенных для выполнения операций с плавающей точкой (равное числу IPC), умноженное на частоту работы процессора и на число процессоров. Например, для компьютера с двумя устройствами с плавающей точкой и частотой 500 МГц пиковая производительность равна 1000 Mflops (1 Gflops). Эффективность использования других функциональных устройств (целочисленная арифметика, обращение к памяти и др.) выявляется путем сравнения реально достижимой на тестах производительности с пиковой.
Реальная производительность - это количество операций, реально выполняемых в среднем в единицу времени. Реальная производительность обычно существенно меньше пиковой. Превышение пиковой производительности над реальной характеризует, насколько данная архитектура приспособлена к решению конкретной задачи. Отношение реальной производительности к пиковой называется эффективностью реализации задачи на данном конкретном компьютере.
Пусть устройства системы имеют пиковые производительности 1,2,…,s и работают с загруженностями p1,… ,ps, Рассмотрим эти параметры как вектора, тогда реальная производительность r = р (скалярное произведение векторов).
Отсюда видно, что для достижения наибольшей реальной производительности системы при фиксированном числе устройств необходимо обеспечить наиболее полную ее загруженность. Пусть * - пиковая производительность самого быстрого устройства системы, тогда ускорение реализации алгоритма на вычислительной системе из s устройств определяется как R*=r/*.
Это означает, что наибольшее ускорение системы из s устройств может достигаться только в случае, когда все устройства системы имеют одинаковые пиковые производительности и полностью загружены. Реальное ускорение для однородных вычислительных систем, имеющих одинаковую производительность устройств, часто определяют также как R= T1 / Ts -отношение времени решения задачи на одном процессоре - T1 к времени Ts решения той же задачи на системе из s таких же процессоров. Отношение реального ускорения к числу используемых процессоров s: Es =R/ s - называют эффективностью системы. Наилучшие показатели ускорения и эффективности - соответственно R=s, Es = 1.
Сразу скажем, что основной вопрос, связанный с параллельными вычислениями, имеет очевидный ответ. Пусть для организации параллелизма имеется s процессоров (функциональных устройств, элементарных устройств и т.п.) Далее имеем задачу Z, сложность которой t(n), т.е. на сегодня существует некоторый алгоритм решения этой задачи AZ, сложность которого tA(n)=t(n). Смысл параллелизма – создание алгоритма с меньшим временем работы. В принципе, это улучшение может быть достигнуто на базе двух типов возможностей параллелизма.
«Идейные» возможности. Получения за счет параллелизма принципиально новых, по сравнению с последовательными вычислениями, возможностей использования «комбинаторной» (сущностной для данной задачи) специфики задачи.
Технические возможности. Выполнение вместо одной операции в единицу времени сразу k операций.
Первые возможности сводятся ко вторым, а границы технических возможностей определяются числом процессоров. Отсюда мы имеем:
Параллелизм не дает возможности построить алгоритм вычисления быстрее, чем t(n)/s.
Использование параллельных вычислений не позволяет изменить место задачи в иерархии сложности.
Теоретически существует постановка задачи, которая может опровергнуть эти выводы, но ее использование на практике весьма ограничено, если не сказать больше. Эта постановка возникает в некоторой адаптивной конструкции, когда создатель параллельного алгоритма имеет в своем распоряжении бесконечное число процессоров, а в конкретном алгоритме может варьировать это число, т.е может позволить себе использовать s(n) процессоров. Тогда теоретически можно получить полиномиальный алгоритм, если t(n) и s(n) – экспоненты. Но это чисто умозрительная возможность. Во-первых, на практике s(n) – в лучшем случае линейная функция. А во-вторых, во все нижеприведенные соотношения без нарушения их справедливости вместо константы s можно подставить функцию s(n).
В следующем разделе приведены иллюстрации к сказанному.