КАТЕГОРИИ: Архитектура-(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. Максимальное ускорение работы программы в зависимости от доли последовательных вычислений и числа используемых процессоров.
Поскольку системы данного класса имеют распределенную оперативную память, то взаимодействие процессоров между собой осуществляется с помощью передачи сообщений. Отсюда два других замедляющих фактора — латентность и скорость передачи данных по каналам коммуникационной среды. В зависимости от коммуникационной структуры программы степень влияния этих факторов может сильно меняться. Если аппаратура или программное обеспечение не поддерживают возможности асинхронной посылки сообщений на фоне вычислений, то возникнут неизбежные накладные расходы, связанные с ожиданием полного завершения взаимодействия параллельных процессов. Для достижения эффективной параллельной обработки необходимо добиться максимально равномерной загрузки всех процессоров. Если равномерности нет, то часть процессоров неизбежно будет простаивать, ожидая остальных, хотя в это время они вполне могли бы выполнять полезную работу. Данная проблема решается проще, если вычислительная система однородна. Очень большие трудности возникают при переходе на неоднородные системы, в которых есть значительное различие либо между вычислительными узлами, либо между каналами связи. Например, если один процессор должен вычислить некоторые данные, которые нужны другому процессору, и если второй процесс первым дойдет до точки приема соответствующего сообщения, то он с неизбежностью будет простаивать, ожидая передачи. Для того чтобы минимизировать время ожидание прихода сообщения первый процесс должен отправить требуемые данные как можно раньше, отложив независящую от них работу на потом, а второй процесс должен выполнить максимум работы, не требующей ожидаемой передачи, прежде, чем выходить на точку приема сообщения. Существенный фактор — это реальная производительность одного процессора вычислительной системы. Разные модели процессоров могут поддерживать несколько уровней кэш-памяти, иметь специализированные функциональные устройства и т. п. Возьмем хотя бы традиционную иерархию памяти вычислительной системы: регистры процессора, кэш-память 1-го уровня, кэш-память 2-го уровня, кэш-память 3-го уровня, локальная оперативная память процессора, удаленная оперативная память других процессоров. Эффективное использование такой структуры требует особого внимания при выборе подхода к решению задачи. Дополнительно каждый процессор может иметь элементы векторно-конвейерной архитектуры. В этом случае на его реальную производительность будут влиять многие факторы, присущие этой архитектуре. К сожалению, как и в случае ранее рассмотренных вычислительных систем, на работе каждой конкретной программы в системе с распределенной оперативной памятью в той иной мере сказываются все эти факторы. Однако в отличие от систем других классов, суммарное воздействие изложенных здесь факторов может снизить реальную производительность не в десятки, а в сотни и даже тысячи раз по сравнению с пиковой производительностью. Потенциал вычислительных систем этого класса огромен, добиться на них можно очень многого, но могут потребоваться значительные усилия. Все этапы в решении каждой задачи, начиная от выбора метода до записи программы, нужно продумывать очень аккуратно.
Дата добавления: 2014-01-04; Просмотров: 1068; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |