Критерии качества параллельных программ
Крите́рии ка́чества паралле́льных програ́мм, метрики, применяемые для оценки соответствия данной параллельной программы архитектуре целевого компьютера. Параллельное программирование предусматривает создание программы для конкретной вычислительной системы (или хотя бы с расчётом на определённую архитектуру компьютера), поэтому и оценивать её качество нужно не абстрактно, а исходя из соответствия свойств программы свойствам данного компьютера.
Основной критерий качества параллельной программы – это общее время её выполнения (астрономическое время; англ. wallclock time). Пусть – время выполнения параллельной программы при использовании процессов – это могут быть как полновесные процессы (например, при использовании технологии MPI), так и легковесные процессы, или нити (например, в технологии OpenMP). Под временем работы параллельной программы обычно понимают максимальное из времён работы отдельных процессов. Время измеряется в секундах, неопределённость его измерения (англ. uncertainty in measurement) в значительной мере обусловлена многозадачностью операционной системы.
Часто оценка качества параллельной программы строится на основе сравнения времени её выполнения со временем выполнения её последовательной реализации. Поскольку таких реализаций может быть много, часто либо говорят о сравнении с наилучшей последовательной реализацией, либо же в качестве последовательной реализации берут саму параллельную программу, запущенную с использованием одного процесса. Это время далее обозначается через
Следующая популярная оценка качества параллельной программы – это её ускорение, которое определяется как отношение времени выполнения последовательной реализации к времени выполнения параллельной программы
Параллельно работающие процессов потребляют суммарно не более чем процессорного времени. Данную величину принято называть стоимостью (англ. cost) вычислений. Часто говорят про стоимостно-оптимальные (англ. cost-optimal) параллельные алгоритмы, если стоимость их реализации пропорциональна времени выполнения реализации наилучшего последовательного алгоритма.
При идеальном распараллеливании но в реальности на организацию параллелизма практически всегда требуется тратить дополнительное время. Это время вычисляется как и называется суммарными накладными расходами (англ. total overhead). При увеличении числа используемых процессов величина суммарных накладных расходов, как правило, возрастает.
Широко используется как критерий качества параллельной программы показатель максимальной реальной производительности с которой данная программа выполняется на целевом суперкомпьютере.
Часто при анализе качества параллельных программ используется понятие эффективности.
На практике критерии ускорения и эффективности могут противоречить друг другу. Получение большой производительности или большого ускорения за счёт использования большого числа процессов зачастую приводит к снижению эффективности. Поэтому оценивать качество параллельных программ рекомендуется при помощи совокупности этих критериев: например, исследуемая параллельная программа должна обеспечивать ускорение не ниже определённого уровня, но при этом эффективность должна быть не меньше заданной величины.
При решении сложных вычислительных задач на современных суперкомпьютерах всё более важную роль начинает играть свойство масштабируемости, характеризующее способность приложений адаптироваться к различной степени параллельности вычислительных систем.
На качество параллельной программы значительное влияние оказывает пересылка данных. Поэтому ряд критериев качества оценивают программу с точки зрения количества пересылок или объёма пересылаемых данных. Так, под вычислительной мощностью (англ. computational power) параллельной программы понимают отношение количество выполняемых операций к общему объёму пересылаемых данных в байтах Вычислительная мощность характеризует количество операций программы, приходящихся на один байт пересылаемых данных. Чем больше это соотношение, тем меньшее влияние на качество параллельной программы оказывает используемая коммуникационная сеть.
Поскольку критическим параметром современных суперкомпьютеров также является потребление электроэнергии, то ряд других критериев качества параллельных программ может быть связан с понятием энергоэффективности.
Причины низкого качества параллельной программы могут крыться в структуре самой решаемой задачи, в выбранном методе её решения, в конкретном алгоритме, его программной реализации, а также на стороне программно-аппаратной среды используемого компьютера. Наиболее часто встречаются следующие причины низкого качества параллельных программ:
закон Амдала (наличие последовательных частей программы);
накладные расходы на коммуникации (латентность, пропускная способность);
неравномерность загрузки (англ. load balancing) процессов;
достижение предела декомпозиции данных при распределении по большому количеству процессов.