
Лекции / Лекция 7
.docТехнологии и методы программирования. Лекция 7.
Оценка коммуникационных затрат.
При вычислениях на общей памяти коммуникационные затраты незаметны, но, к примеру, при использовании кластера они уже видны, а для кластера, основанного на локальной сети — значительны. Поскольку именно кластер — наиболее распространённая вычислительная модель, в дальнейшем будем рассматривать именно её.
Два варианта построения кластера:
На основе концентраторов (hub) |
На основе переключателей (switch) |
Hub обеспечивает обмен между двумя вычислительными узлами. |
Switch обеспечивает обмен между не пересекающимися множествами пар узлов. |
дешевле |
Дороже, но качественней |
Обе возможности реализуют топологию полного графа. Это хорошо, так как не накладывает ограничений на логику алгоритмов.
Для связи узлов в кластере, основанном на локальной сети, чаще всего используется протокол TCP/IP.
При разработке алгоритма производится теоритический расчёт коммуникационных издержек, или, если параметры системы заранее не известны, экспериментальный расчёт. Эксперимент позволяет выбрать из нескольких моделей лучшую для данной системы, что важно, так как при частом использовании или больших объёмах задачи даже небольшое уменьшение коммуникационных издержек может быть крайне полезно.
Первая модель коммуникационных затрат.
tng=tн+m*tk+tc, где tн — время подготовки к передаче данных (аппаратные задержки в начале передачи), tk — время передачи одного слова по одному каналу между соседними узлами (обычно слово — это байт), m – размерность сообщения в словах, tc — время передачи служебной информации (заголовка пакетов при пакетной передаче, блока данных для проверки ошибок...)
Предполагается, что tн постоянна, а tc не зависит от размера сообщения. На самом деле это не так, поэтому модель не точна.
Вторая модель коммуникационных затрат:
tng=tнач0+m*tнач1+(m+Vc)*tk, если n=1, и tng=tнач0+(Vmax-Vc)*tнач1+(m+Vc*n)*tk, если n>1, где n – число пересылаемых пакетов, Vmax — максимальный размер пакета, Vc — объём служебных данных в каждом пакете, tнач0 — время на подготовку передачи сообщения, зависящее от сетевого оборудования, tнач1 — время подготовки 1 байта для передачи в сети. tн= tнач0+(Vmax-Vc)*tнач1 — время латентности. Предполагается, что подготовка к передаче второго и последующих пакетов происходит во время передачи предыдущих пакетов, поэтому не учитывается.
Следует заметить, что сложные формулы не всегда более точны, чем простые. Это происходит из-за погрешностей на каждый используемый параметр, вклад которых тем больше, чем больше параметров, собственно, участвует в вычислении.
Третья модель коммуникационных затрат (Кокни):
tng=tн+m*tk, где tн — общее время латентности.
На нижегородском кластере был проведёт эксперимент для сравнения этих моделей. В эксперименте оценивалось:
1) tн для 1 и 3 моделей, как время передачи сообщения нулевой длины.
2) Величина пропускной способности, как максимальная скорость передачи данных. По ней вычислялась tk.
3) tнач0, tнач1 - определялись путём построения линейной аппроксимации передачи сообщений с длиной пакета от минимальной до максимальной.
После производилась передача сообщения размером от минимального до восьми мегабайт между двумя узлами 105 раз для каждого размера, с измерением фактического времени передачи. Результат сравнивался с теоретическими, на основании чего и оценивалась реалистичность модели.
Результаты:
Размер, байт |
Время фактическое, мкс |
Время расчётное, отклонение от фактического в процентах, первая модель |
Время расчётное, отклонение от фактического в процентах,, вторая модель |
Время расчётное, отклонение от фактического в процентах,, третья модель |
2000 |
495 |
33,45 |
7,93 |
34,8 |
20000 |
2055 |
8,4 |
0,44 |
8,77 |
40000 |
3758 |
4 |
-1,38 |
4,22 |
60000 |
5730 |
6,97 |
2,73 |
7,09 |
Вывод: для инженерных расчётов и качественной оценки времени передачи сообщений достаточно и третьей модели, которую и используют чаще всего на практике. В дальнейшем будем ориентироваться на неё.
Иногда третью модель записывают в другой форме:
tng(m)=a+m/b, где a – начальная подготовка, b – пропускная способность.
Разработка параллельных алгоритмов.
Разработка происходит по стадиям:
1) Декомпозиция вычислительной схемы, то есть разделение вычисления на независимые части.
2) Оценка информационных зависимостей
3) Масштабирование — выбор уровня декомпозиции вычислительной схемы на базовые операции.
4) Распределение подзадач (базовых операций) между вычислительными узлими.
5) Оценка ускорения и эффективности.
На любом этапе возможен возврат к предыдущим при неудовлетворительном результате. В случае положительного результата на пятом этапе ввыполняется программная реализация и решение задачи.
Декомпозиция:
Критерий: минимум информационных связей. Разделение может производиться по данным, или по функциям (если одни данные нужно подвергнуть нескольким разными проверкам), или и по данным, и по функциям. Также важен масштаб выделяемых подзадач. Чем они крупнее, тем проще алгоритм и его реализация, тем меньше будет информационных зависимостей. Чем меньше — тем более равномерно будут загружены вычислительные узлы.
Результаты декомпозиции могут быть оценены по следующим критериям:
1) Не увеличился ли объём вычислений?
2) Возможна ли равномерная загрузка вычислительных узлов?
3) Достаточно ли подзадач для загрузки всех вычислительных узлов с учётом возможного увеличения их количества?
Если результат оценки по всем трём критериям удовлетворителен, нечинается следующий этап, эначе декомпозиция повторяется.