Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ВС13 / ЛабРаб / Диплом.doc
Скачиваний:
36
Добавлен:
17.03.2015
Размер:
1.48 Mб
Скачать

1.7 Выводы по главе 1

В данной главе были рассмотрено понятие параллельной обработки и основные составляющие кластерной системы. Рассмотрены основные подходы к достижению параллельности, которыми являются параллельная и распределенная обработка данных. Рассмотрена простая модель параллелизма PRAM и типы алгоритмов считывания и записи данных при использовании этой модели. Описана классификация схем функционирования параллельных компьютеров на модели SPMD (SIMD) и MPMD (MIMD) практические реализации которых успешно применяются на мелко- и среднемасштабных приложениях.

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

Вычислительные узлы кластера представляют собой законченные устройства, в задачу которых входит выполнение некоторых действий над данными. Они представлены такими платформами, как Intel, MIPS, PowerPC, UltraSPARC, Alpha под управлением операционных систем FreeBSD, Linux, IRIX, Windows NT, Solaris, Tru64 UNIX, VxWorks.

Подробно рассмотрено сетевое оборудование, применяемое при создании кластера: Fast Ethernet, Gigabit Ethernet, Myrinet, SCI, cLAN.

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

2 Эффективность кластера и алгоритмы, используемые в параллельных и распределенных приложениях

2.1 Эффективность

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

Например, выполнение последовательной программы может занять у вас день. (Количество операций в программе разделить на производительность процессора) Вы произвели анализ эффективности, и получили что теоретически можете добиться ускорение в 2 раза. Но с параллельным программированием вы раньше не сталкивались, тогда вам лучше написать последовательное приложение, потому что вы можете потратить больше, чем времени на изучение, разработку этого приложения, чем получите выигрыш при работе этого приложения. Но, если вы знаете, как писать параллельные приложения, то, конечно, вы можете добиться ускорения в работе и выигрыша во времени. В случае, если затраты на вычисление в программе занимают уже гораздо более долгое время (недели, месяца), то здесь уже целесообразно изучить параллельное программирование и использовать кластерную систему при решении своей задачи.

Используя параллельную систему с n вычислительными устройствами, мы, разумеется, ожидаем получить ускорение выполнения программы в n раз по сравнению с последовательным вариантом. Но действительность почти всегда оказывается далека от идеала. Простой пример. Один землекоп за один час может выкопать яму объемом один кубометр. Два землекопа, работая вместе, выкопают такую же яму за полчаса. А шестьдесят землекопов? Ясно, что они будут просто мешать друг другу и быстрее процесс не пойдет. Вот как это описывается с формальной точки зрения. [2]

Одной из главных характеристик параллельных систем является ускорение R параллельной системы, которое определяется выражением

R = T1 / Tn ,

где T1 − время решения задачи на однопроцессорной системе; а Tn − время решения той же задачи на n-процессорной системе.

Пусть

W = Wск + Wпр,

где W − общее число операций в задаче; Wпр − число операций, которые можно выполнять параллельно; W − число скалярных (не-распараллеливаемых) операций.

Обозначим также через t время выполнения одной операции. Тогда получаем известный закон Амдала:

(1)

Здесь a = Wск /W − удельный вес скалярных операций.

Закон Амдала определяет принципиально важные для параллельных вычислений положения.

  1. 1. Ускорение зависит от потенциального параллелизма задачи (величина 1 – а) и параметров аппаратуры (числа процессоров n).

  2. 2. Предельное ускорение определяется свойствами задачи.

Пусть, например, a = 0,2 (что является реальным значением), тогда ускорение ≤ 5 при любом числе процессоров, т. е. максимальное ускорение определяется потенциальным параллелизмом задачи. Очевидной является чрезвычайно высокая чувствительность ускорения к изменению величины а.

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

Перепишем формулу 1 следующим образом:

где Wc − количество передач данных; tc − время одной передачи.

Выражение

является сетевым законом Амдала. Этот закон определяет следующие особенности многопроцессорных вычислений.

Коэффициент сетевой деградации вычислений:

(2)

определяет объем вычислений, приходящийся на одну передачу данных (по затратам времени). При этом сa определяет алгоритмическую составляющую коэффициента деградации, обусловленную свойствами алгоритма, а сt − техническую составляющую, которая зависит от соотношения технического быстродействия процессора и аппаратуры коммуникационной сети.

Следовательно для повышения скорости вычислений следует воздействовать на обе составляющие коэффициента деградации. Для многих задач и сетей коэффициенты сa и сt могут быть вычислены аналитически, хотя они определяются множеством факторов: алгоритмом задачи, размером данных, реализацией функций обмена библиотеки MPI, использованием разделяемой памяти, техническими характеристиками коммуникационных сред и их протоколов.

Даже если задача обладает идеальным параллелизмом, сетевое ускорение определяется величиной

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

В некоторых случаях используется еще один параметр для измерения эффективности вычислений – коэффициент утилизации [16]: