Поможем Лицензировать ваш Windows
(499) 502-62-48
http://v-resi.ru
В БЛИЖАЙШИЕ ГОДЫ СЛЕДУЕТ ОЖИДАТЬ СКАЧКООБРАЗНОГО УВЕЛИЧЕНИЯ ЧИСЛА ПРОЦЕССОРОВ НА РАБОЧИХ СТАНЦИЯХ И СЕРВЕРАХ, А ВМЕСТЕ С ЭТИМ И НЕИЗБЕЖНОГО СНИЖЕНИЯ ИХ ЭФФЕКТИВНОСТИ
Стремительный рост объема обрабатываемых данных в какой-то момент превысил резервы разрядности процессоров и тактовой частоты. Очевидное решение — объединение нескольких процессоров в одну упряжку, которое позволило снизить остроту проблемы на некоторое время. Если заглянуть в ТОР-500 самых мощных суперкомпьютеров мира, можно обнаружить, что все они построены по многопроцессорной схеме. Причем наименьшее число процессоров 50, именно столько их имеется в компьютере Hitachi SR11000-K2, находящемся на 441 месте по производительности. Самое большое количество процессоров — 212 992 — установлено в IBM eServer Blue Gene Solution, с огромным отрывом лидирующем среди остальных. В основном суперкомпьютеры содержат порядка 1000 процессоров, причем приведенные показатели производительности получены с помощью тестов, изначально «заточенных» под многопроцессорность и представляющих собой хорошо распараллеливаемые математические задачи, решение которых обходит стороной проблемы когерентности, синхронизации и неоднородности иерархии оперативной памяти. На произвольно взятой задаче показатели наверняка изменятся. Если, допустим, мы пытаемся вскрыть криптоалгоритм, плохо поддающийся распараллеливанию, то на первое место вырвется Hitachi SR11000-K2 со своими процессорами POWER5+ 2300 MHz, из которых реально будет работать только один (задача-то ведь не распараллелена), а IBM eServer Blue Gene Solution окажется дапеко позади.поскольку собран на основе дешевых PowerPC 440 с тактовой частотой 700 МГц. Отсюда сле¬дует вывод, что производительность — понятие абстрактное и чтобы получить достоверные данные, необходимо приложить его к конкретной задаче. Для одних целей лидируют одни архитектуры, для других — иные, вот только этих данных нигде почти нет. Производители и независимые обозреватели обычно ограничиваются тем, что приводят теоретическую пиковую производительность и максимальную производительность, полученную по тестам UNPACK, показывающим, на что способен тот или иной компьютер, если загрузить его идеализированной математической задачей. Естественно, программисты (чьи программы предполагается использовать на многопроцессорных машинах)на всех уровнях ее постановки, от алгоритма до реализации, но огромный спектр задач крайне плохо «ложится» на концепцию многопроцессорных систем и влечет за собой те или иные издержки, приводящие к тому, что реальная производительность оказывается намного ниже пиковой. Именно потому существует множество схем построения суперкомпьютеров, каждая из которых рассчитана на свой класс вычислительных задач. А каждому классу сопутствуют свои проблемы, над решением которых и бьются инженеры. Эти проблемы не то чтобы совсем решены, но по крайней мере достигли состояния стабильной стагнации. Произошел своеобразный идеологический раздел территорий, причем произошел уже давно каждая отдельно взятая архитектура достигла совершенства в своей области, смирившись с существованием свойственных ей непреодолимых проблем. Но это все касается суперкомпьютеров. Персоналкам, рабочим станциям и серверам еще предстоит осознать свое место в мире и пройти стадию архитектурного дробления. А пока все они строятся по одному и тому же принципу и имеют массу сопутствующих проблем, о наиболее значимых из которых мы сейчас и поговорим. Параллелизм Фундаментальную проблему параллелизма легко объяснить на примере едкого, но меткого выражения: «если собрать девять беременных женщин, они не родят ребенка через месяц». Вот так же и с процессорами. Не все задачи могут быть распараллелены. Параллельные вычисления зажаты в тиски двух проблем:алгоритмической и технической. Математики должны разработать специальные методы решения задач, разбив одну задачу на несколько независимых подзадач. То есть одна подзадача не должна пользоваться результатами вычислений другой, что не всегда достижимо. Например, решение квадратного уравнения через дискриминант образует между подзадачами неустранимую зависимость по данным, а потому эти подзадачи не могут выполняться параллельно. С другой стороны, пусть у нас имеется два процессора и задача, разбитая на четыре подзадачи: А -> В и С -> D, где знаком «->» отмечена зависимость по данным. Если выполнять сначала подзадачи А и С, а затем В и D. то на двухпроцессорной машине удастся добиться 100%-ного распараллеливания, но это не значит, что однопроцессорная машина решила бы эту задачу за вдвое большее время. Разбиение задачи на подзадачи несет довольно высокие накладные расходы, которые математики пытаются снизить, но в некоторых случаях эти накладные расходы на распараллеливание съедают весь выигрыш от производительности. Причем чем больше у нас процессоров, тем выше издержки. В обозначенном примере мы неявно полагали, что все подзада¬чи А, В, С и D выполняются за одинаковые промежутки времени, что никогда не достигается на практике. Допустим, что задача С решается на 50% быстрее, чем А. Тогда при прочих равных двухпроцессорная машина даст всего 1,75 -кратный прирост производительности