Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архитектура ВС (Карцева А.С.) / Lection / Меры производительности ЭВМ.doc
Скачиваний:
101
Добавлен:
10.05.2015
Размер:
79.36 Кб
Скачать

Эталонные программы

Тест «мокрая точилка» (Whetstone) – это коллекция программ, написанная на Алголе 60, для тестирования производительности при выполнении операция с плавающей точкой. Используются операции над массивами со скалярными или векторными элементами. Выходная величина – «мокрые камни»/секунду, имеет смысл, только для сравнения с подобной же характеристикой для других машин. К сожалению, со времени создания данный тест был переписан на других языках программирования и усовершенствован, так что практически невозможно оценить производительность при помощи двух разных версий теста. Тест отражает все характеристики системы.

Другой популярный тест – «сухая точилка» (Drystone), синтетический тест, включающий целочисленные и строковые операции. Выходная величина соответственно – «сухие камни»/секунду. Данный тест не выполняет реальных задач, и в основном сосредоточен на обработке строк. Имеет небольшую вложенность процедур и фактически загружает процессор меньше, чем типичная программа.

Одним из последних тестов, работающих с числами с плавающей точкой, является Linpack, реализует линейную алгебру, например, решает системы линейных уравнений методом Гаусса. Тест отслеживает время выполнения и вычисляет меру MFLOPS.

Тесты компании SPEС имеют несколько версий. Первая SPEC89 имела всего одну подпрограмму, называемую SPECmark.

Средняя производительность

При выполнении теста можно получить скорость выполнения (MIPS), которое затем используется для вычисления средней скорости выполнения для процессора. Самый простой способ вычислить среднее арифметическое:

Однако такая характеристика будет неточна для всего пакета программ. Если бы все тесты выполняли операции одного типа, среднюю скорость выполнения можно было бы вычислить по общему времени выполнения пакета. В нашем случае, необходимо вычислять геометрическое среднее:

Эта мера также не точная, хотя может использоваться. Проблема заключается в том, что скорость выполнения находится в обратной зависимости от времени выполнения. Поэтому нам необходимо использовать гармоническое среднее:

Например, if we have four benchmark programs that execute at 37, 800, 14, and 12270 MIPS, the arithmetic mean is 3280 MIPS, the geometric mean is 267 MIPS, and the Harmonic mean is 40.1 MIPS. Это означает, что в гармоническом среднем «доминирует» наименьшее значение, поэтому получаем реальную скорость выполнения.

Отметим, что если тест предоставляет значение времени выполнения, а не скорости, для вычисления среднего значения необходимо использовать среднее арифметическое.

Закон Амдала

Приобретая для решения своей задачи параллельную вычислительную систему, пользователь рассчитывает на значительное повышение скорости вычислений за счет распределения вычислительной нагрузки по множеству параллельно работа­ющих процессоров. В идеальном случае система из п процессоров могла бы уско­рить вычисления в п раз. В реальности достичь такого показателя по ряду причин не удается. Главная из этих причин заключается в невозможности полного распа­раллеливания ни одной из задач. Как правило, в каждой программе имеется фраг­мент кода, который принципиально должен выполняться последовательно и толь­ко одним из процессоров. Это может быть часть программы, отвечающая за запуск задачи и распределение распараллеленного кода по процессорам, либо фрагмент программы, обеспечивающий операции ввода/вывода.

Известные проблемы возникают и с той частью задачи, кото­рая поддается распараллеливанию. Здесь идеальным был бы вариант, когда па­раллельные ветви программы постоянно загружали бы все процессоры системы, причем так, чтобы нагрузка на каждый процессор была одинакова. К сожалению, оба этих условия на практике трудно реализуемы. Таким образом, ориентируясь на параллельную ВС, необходимо четко сознавать, что добиться прямо пропорцио­нального числу процессоров увеличения производительности не удастся, и, есте­ственно, встает вопрос о том, на какое реальное ускорение можно рассчитывать. Ответ на этот вопрос в какой-то мере дает закон Амдала.

Джин Амдал (Gene Amdahl) — один из разработчиков всемирно известной си­стемы IBM 360, в своей работе, опубликованной в 1967 году, предложил фор­мулу, отражающую зависимость ускорения вычислений, достигаемого на много­процессорной ВС, от числа процессоров и соотношения между последовательной и параллельной частями программы. Показателем сокращения времени вычисле­ний служит такая метрика, как «ускорение». Напомним, что ускорение S — это от­ношение времени Ts, затрачиваемого на проведение вычислений на однопроцес­сорной ВС (в варианте наилучшего последовательного алгоритма), ко времени Tp решения той же задачи на параллельной системе (при использовании наилучшего параллельного алгоритма):

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

Проблема рассматривалась Амдалом в следующей постановке (рис. 25.2). Преж­де всего, объем решаемой задачи с изменением числа процессоров, участвующих в ее решении, остается неизменным. Программный код решаемой задачи состоит из двух частей: последовательной и распараллеливаемой. Обозначим долю опера­ций, которые должны выполняться последовательно одним из процессоров, через f, где 0 <=f<=1 (здесь доля понимается не по числу строк кода, а по числу реально выполняемых операций). Отсюда доля, приходящаяся на распараллеливаемую часть программы, составит 1 - f. Крайние случаи в значениях f соответствуют пол­ностью параллельным (f=0) и полностью последовательным (f= 1) програм­мам. Распараллеливаемая часть программы равномерно распределяется по всем процессорам.

С учетом приведенной формулировки имеем:

В результате получаем формулу Амдала, выражающую ускорение, которое мо­жет быть достигнуто на системе из п процессоров:

Формула выражает простую и обладающую большой общностью зависимость. Характер зависимости ускорения от числа процессоров и доли последовательной части программы показан на рис. 25.3.

Рис. 25.3. Графики зависимости ускорения от:

а — доли последовательных вычислений;

б — числа процессоров

Если устремить число процессоров к бесконечности, то в пределе получаем:

Это означает, что если в программе 10% последовательных операций (то есть f=0,1), то, сколько бы процессоров ни использовалось, убыстрения работы про­граммы более чем в десять раз никак ни получить, да и то, 10 — это теоретическая верхняя оценка самого лучшего случая, когда никаких других отрицательных фак­торов нет.

Следует отметить, что распараллеливание ведет к определенным издерж­кам, которых нет при последовательном выполнении программы. В качестве при­мера таких издержек можно упомянуть дополнительные операции, связанные с распределением программ по процессорам, обмен информацией между процес­сорами и т. д.

Соседние файлы в папке Lection