Производительность параллельных компьютеров

Сначала коротко постараемся ответить на вопрос, что можно считать супер­компьютером. В разное время пытались дать разное определение данного поня­тия, но мы остановимся на наиболее простом: к классу супер-ЭВМ принадле­жат лишь те компьютеры, которые имеют максимальную производительность в настоящее время.

Производителъностъ компьютеров обычно измеряют в количестве производи­мых ими операций в единицу времени. Если в качестве операций берутся опе­рации с плавающей запятой, то единицей производительности считается FLOPS (Floating point Operations per Second), то есть число таких операций в секунду. Поскольку мощность современных компьютеров весьма велика, обычно ис­пользуют производные единицы: MFLOPS (миллион операций с плавающей за­пятой в секунду), GFLOPS (миллиард операций в секунду) и TFLOPS (трилли­он операций в секунду).

Естественной характеристикой любого компьютера является его пиковая произ-водителъностъ. Данное значение определяет тот максимум, на который теоре­тически способен компьютер. Вычисляется оно очень просто. Для этого доста­точно предположить, что все устройства компьютера работают в максимально производительном режиме. Если в процессоре есть два конвейерных устройст­ва, то рассматривается режим, когда оба конвейера одновременно работают с максимальной нагрузкой. Если в компьютере есть 1000 таких процессоров, то пиковая производительность одного процессора просто умножается на 1000. Иногда пиковую производительность компьютера называют его теоретической производительностью. Это нюанс в названии лишний раз подчеркивает тот факт, что производительность компьютера на любой реальной программе нико­гда не только не превысит этого порога, но и не достигнет его точно.

Пиковая производительность компьютера вычисляется однозначно и подсозна­тельно всегда возникает связь между пиковой производительностью компьюте­ра и его возможностями в решении задач. Чем больше пиковая производитель­ность, тем, вроде бы, быстрее пользователь сможет решить свою задачу. Одна­ко с момента появления первых параллельных компьютеров пользователи убе­дились, что разброс в значениях реальной производительности может быть ог­ромным. На одних задачах удавалось получать 90% от пиковой производитель­ности, а на других лишь 2%. Например, если кто-то мог использовать незави­симость и конвейерность всех функциональных устройств компьютера CDC 7600, то производительность получалась высокой. Если в вычислениях были информационные зависимости, то конвейерность не использовалась, и произ­водительность снижалась. Если в алгоритме явно преобладал один тип опера­ций, то часть устройств простаивала, вызывая дальнейшее падение производи­тельности.

Для того чтобы оценить реальную производительность компьютера, нужно отойти от характеристик аппаратуры и оценить эффективность работы про­граммно-аппаратной среды на фиксированном наборе задач. Бессмысленно для каждого компьютера показывать свой набор. Разработчики без труда придума­ют такие программы, на которых их компьютер достигает производительности, близкой к пиковой. Такие примеры никого не убедят. Набор тестовых программ должен быть зафиксирован. Эти программы будут играть роль эталона, по ко­торому будут судить о возможностях вычислительной системы.

Такие попытки неоднократно предпринимались. На основе различных критери­ев формировались тестовые наборы программ или фиксировались отдельные эталонные программы (такие программы иногда называют бенчмарками, оттал­киваясь от английского слова "benchmark"). Программы запускались на различ­ных системах, замерялись те или иные параметры, на основе которых в послед­ствии проводилось сравнение компьютеров между собой. В дальнейшем изло­жении для подобных программ мы чаще всего будем использовать слово тест, делая акцент не на проверке правильности работы чего-либо, а на тестировании эффективности работы вычислительной системы.

Что имело бы смысл взять в качестве подобного теста? Что-то не сложное и из­вестное всем. Одним из таких примеров стал известный тест LINPACK. Дан­ный тест является программой решения системы линейных алгебраических уравнений с плотной матрицей с выбором главного элемента по строке. Про­стой алгоритм, регулярные структуры данных, значительная вычислительная емкость, возможность получения показателей производительности близких к пиковым — все эти черты сделали тест исключительно популярным.

Поскольку никакое одно число или даже набор чисел не будут универсальной характеристикой производительности компьютера, то при необходимости по­лучения истинной картины о свойствах компьютера идут по пути комплексного тестирования программно-аппаратной среды в целом. Определяют параметры работы вычислительного комплекса на большом наборе программ, имеющих различные вычислительно-коммуникационные характеристики. Такая работа, как правило, тяжела и трудоемка, но другого пути в настоящий момент нет.

Другая достаточно популярная характеристика компьютеров, отражающая и экономическую составляющую - отношение производительность/стоимость. При построении компьютера естественно желание получить максимально воз­можную производительность за минимальную стоимость.

Задание 2.

Разработать и реализовать на языке параллельного программирования алгоритм для оценки производительности однопроцессорного ПК и многоядерной архитектуры, состоящей из нескольких узлов. Оценить производительность системы параллельного счета при условии, что число запущенных процессов больше чем число вычислительных ядер.

Наши рекомендации