Производительность параллельных компьютеров
Сначала коротко постараемся ответить на вопрос, что можно считать суперкомпьютером. В разное время пытались дать разное определение данного понятия, но мы остановимся на наиболее простом: к классу супер-ЭВМ принадлежат лишь те компьютеры, которые имеют максимальную производительность в настоящее время.
Производителъностъ компьютеров обычно измеряют в количестве производимых ими операций в единицу времени. Если в качестве операций берутся операции с плавающей запятой, то единицей производительности считается FLOPS (Floating point Operations per Second), то есть число таких операций в секунду. Поскольку мощность современных компьютеров весьма велика, обычно используют производные единицы: MFLOPS (миллион операций с плавающей запятой в секунду), GFLOPS (миллиард операций в секунду) и TFLOPS (триллион операций в секунду).
Естественной характеристикой любого компьютера является его пиковая произ-водителъностъ. Данное значение определяет тот максимум, на который теоретически способен компьютер. Вычисляется оно очень просто. Для этого достаточно предположить, что все устройства компьютера работают в максимально производительном режиме. Если в процессоре есть два конвейерных устройства, то рассматривается режим, когда оба конвейера одновременно работают с максимальной нагрузкой. Если в компьютере есть 1000 таких процессоров, то пиковая производительность одного процессора просто умножается на 1000. Иногда пиковую производительность компьютера называют его теоретической производительностью. Это нюанс в названии лишний раз подчеркивает тот факт, что производительность компьютера на любой реальной программе никогда не только не превысит этого порога, но и не достигнет его точно.
Пиковая производительность компьютера вычисляется однозначно и подсознательно всегда возникает связь между пиковой производительностью компьютера и его возможностями в решении задач. Чем больше пиковая производительность, тем, вроде бы, быстрее пользователь сможет решить свою задачу. Однако с момента появления первых параллельных компьютеров пользователи убедились, что разброс в значениях реальной производительности может быть огромным. На одних задачах удавалось получать 90% от пиковой производительности, а на других лишь 2%. Например, если кто-то мог использовать независимость и конвейерность всех функциональных устройств компьютера CDC 7600, то производительность получалась высокой. Если в вычислениях были информационные зависимости, то конвейерность не использовалась, и производительность снижалась. Если в алгоритме явно преобладал один тип операций, то часть устройств простаивала, вызывая дальнейшее падение производительности.
Для того чтобы оценить реальную производительность компьютера, нужно отойти от характеристик аппаратуры и оценить эффективность работы программно-аппаратной среды на фиксированном наборе задач. Бессмысленно для каждого компьютера показывать свой набор. Разработчики без труда придумают такие программы, на которых их компьютер достигает производительности, близкой к пиковой. Такие примеры никого не убедят. Набор тестовых программ должен быть зафиксирован. Эти программы будут играть роль эталона, по которому будут судить о возможностях вычислительной системы.
Такие попытки неоднократно предпринимались. На основе различных критериев формировались тестовые наборы программ или фиксировались отдельные эталонные программы (такие программы иногда называют бенчмарками, отталкиваясь от английского слова "benchmark"). Программы запускались на различных системах, замерялись те или иные параметры, на основе которых в последствии проводилось сравнение компьютеров между собой. В дальнейшем изложении для подобных программ мы чаще всего будем использовать слово тест, делая акцент не на проверке правильности работы чего-либо, а на тестировании эффективности работы вычислительной системы.
Что имело бы смысл взять в качестве подобного теста? Что-то не сложное и известное всем. Одним из таких примеров стал известный тест LINPACK. Данный тест является программой решения системы линейных алгебраических уравнений с плотной матрицей с выбором главного элемента по строке. Простой алгоритм, регулярные структуры данных, значительная вычислительная емкость, возможность получения показателей производительности близких к пиковым — все эти черты сделали тест исключительно популярным.
Поскольку никакое одно число или даже набор чисел не будут универсальной характеристикой производительности компьютера, то при необходимости получения истинной картины о свойствах компьютера идут по пути комплексного тестирования программно-аппаратной среды в целом. Определяют параметры работы вычислительного комплекса на большом наборе программ, имеющих различные вычислительно-коммуникационные характеристики. Такая работа, как правило, тяжела и трудоемка, но другого пути в настоящий момент нет.
Другая достаточно популярная характеристика компьютеров, отражающая и экономическую составляющую - отношение производительность/стоимость. При построении компьютера естественно желание получить максимально возможную производительность за минимальную стоимость.
Задание 2.
Разработать и реализовать на языке параллельного программирования алгоритм для оценки производительности однопроцессорного ПК и многоядерной архитектуры, состоящей из нескольких узлов. Оценить производительность системы параллельного счета при условии, что число запущенных процессов больше чем число вычислительных ядер.