Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Влияние на реальную производительность параллельных вычислительных систем соответствия их структуры и структуры программ





 

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

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

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



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

 

 

Анализ реальной производительности («узких» мест) МВС с общей оперативной памятью

 

Закон Амдала носит универсальный характер, поэтому он справедлив для всех типов параллельных вычислительных систем. Не являются исключением и мультипроцессорные вычислительные системы (МВС) с общей оперативной памятью. Если в программе 20% всех операций должны выполняться строго последовательно, то ускорения больше 5 получить нельзя вне зависимости от числа использованных процессоров (влияние кэш-памяти сейчас не рассматривается). Это нужно учитывать и перед адаптаци­ей старой последовательной программы к такой структуре, и в процессе проектирования нового параллельного кода.

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

Работа с оперативной памятью является очень тонким местом в системах с неоднородным доступом в оперативную память. Одна из причин снижения производительности — неоднородность доступа к памяти. Степень неоднородности на уровне 5—10% серьезных проблем не создаст. Однако разница во времени доступа к локальной и удаленной оперативной памяти в несколько раз потребует от пользователя очень аккуратного программирования. В этом случае ему придется решать вопросы, аналогичные распределению данных для систем с распределенной оперативной памятью. Другая причина — конфликты при обращении к оперативной памяти - также характерна для многих мультипроцессорных систем.

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

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

Любой современный процессор имеет сложную структуру, объединяющую и несколько уровней памяти, и множество функциональных устройств. Реаль­ная производительность отдельного процессора может отличаться от его пи­ковой производительности в десятки раз. Чем выше степень использования возможностей каждого процессора, тем выше общая производительность вычислительной системы.

 

Анализ реальной производительности («узких» мест) кластерных систем с распределённой оперативной памятью

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

Рассмотрим факторы, снижающие производительность параллельных вычислительных систем с распределенной оперативной памятью (кластерных систем высокой производительности) на реальных программах.

Закон Амдала. Для вычислительных систем дан­ного класса он играет очень большую роль. В самом деле, если предполо­жить, что в программе есть лишь 2% последовательных операций, то рас­считывать на более чем 50-кратное ускорение работы программы не приходится. Теперь попробуйте критически взглянуть на свою программу. Скорее всего, в ней есть инициализация, операции ввода-вывода, какие-то сугубо последовательные участки. Оцените их долю на фоне всей програм­мы и на мгновенье предположите, что вы получили доступ к вычислитель­ной системе из 1000 процессоров. После вычисления верхней границы для ускорения программы на такой системе, думаем, станет ясно, что недооце­нивать влияние закона Амдала никак нельзя.

В таблице 6 приведено максимальное ускорение работы программы в зависимости от доли последовательных вычислений и числа используемых процессоров.

Табл. 6. Максимальное ускорение работы программы в зависимости от доли последовательных вычислений и числа используемых процессоров.

Число процессоров   Доля последовательных вычислений
50% 25% 10% 5% 2%
1.33 1.60 1.82 1.90 1.96
1.78 2.91 4.71 5.93 7.02
1.94 3.66 7.80 12.55 19.75
1.99 3.97 9.83 19.28 45.63
2.00 3.99 9.96 19.82 48.83

 

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

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

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

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

Существенный фактор — это реальная производительность одного процессора вычислительной системы. Разные модели процессоров могут поддер­живать несколько уровней кэш-памяти, иметь специализированные функциональные устройства и т. п. Возьмем хотя бы традиционную иерархию памяти вычислительной системы: регистры процессора, кэш-память 1-го уровня, кэш-память 2-го уровня, кэш-память 3-го уровня, локальная оперативная память процессора, удаленная оперативная память других процессоров. Эффективное использование такой структуры требует особого внимания при выборе подхода к решению задачи.

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

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

 

 





Дата добавления: 2014-01-04; Просмотров: 574; Нарушение авторских прав?


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



ПОИСК ПО САЙТУ:


Рекомендуемые страницы:

Читайте также:
studopedia.su - Студопедия (2013 - 2020) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление
Генерация страницы за: 0.004 сек.