Суперкомпьютеры
Однако скорость работы самого быстрого внешнего устройства, а по тем
временам это магнитная лента, была в 1000 раз меньше скорости процессора,
поэтому во время операций ввода/вывода процессор фактически простаивал. В
1958г. к компьютеру IBM 704 присоединили 6 независимых процессоров
ввода/вывода, которые после получения команд могли работать параллельно с
основным процессором, а сам компьютер переименовали в IBM 709. Данная
модель получилась удивительно удачной, так как вместе с модификациями было
продано около 400 экземпляров, причем последний был выключен в 1975 году -
20 лет существования!
1961г. Создается компьютер IBM STRETCH, имеющий две принципиально
важные особенности: опережающий просмотр вперед для выборки команд и
расслоение памяти на два банка для согласования низкой скорости выборки из
памяти и скорости выполнения операций.
1963г. В Манчестерском университете разработан компьютер ATLAS,
использующий конвейерный принцип выполнения команд. Выполнение команд
разбито на 4 стадии: выборка команды, вычисление адреса операнда, выборка
операнда и выполнение операции, позволившие уменьшить время выполнения
команд в среднем с 6 мкс до 1,6 мкс. Справедливости ради надо отметить, что
данный компьютер вообще оставил заметный след в истории развития
вычислительной техники: помимо сказанного, в нем впервые была использована
мультипрограммная операционная система, основанная на использовании
виртуальной памяти и системы прерываний.
1964г. Фирма Control Data Corporation (CDC) при непосредственном
участии одного из ее основателей, Сеймура Р.Крэя (Seymour R.Cray) выпускает
компьютер CDC-6600 - первый компьютер, в котором использовалось несколько
независимых функциональных устройств. Для сравнения с сегодняшним днем
приведем некоторые параметры компьютера: время такта 100нс,
производительность 2-3 млн. операций в секунду, оперативная память разбита
на 32 банка по 4096 60-ти разрядных слов, цикл памяти 1мкс, 10 независимых
функциональных устройств. Машина имела громадный успех на научном рынке,
активно вытесняя машины фирмы IBM.
1969г. CDC выпускает компьютер CDC-7600 с восемью независимыми
конвейерными функциональными устройствами - сочетание параллельной и
конвейерной обработки.
В 1967 году были начаты работы над проектом ILLIAC IV, первым матричным
процессором, объединяющим 256 синхронно работающих процессорных элементов.
К концу 1971 года изготовлена система из 64-х процессоров, в 1974г. она
введена в эксплуатацию, однако доводка шла до 1975 года. Несмотря на то,
что построили в 4 раза меньше задуманного, да и то лишь в одном экземпляре,
а денег в результате затратили в 4 раза больше, данный проект оказал
огромное влияние на архитектуру последующих машин подобного класса таких,
как PEPE, BSP, ICL DAP и ряда других.
В 1972 году С.Крэй покидает CDC и основывает свою компанию Cray
Research, которая в 1976г. выпускает первый векторно-конвейерный компьютер
CRAY-1: время такта 12.5нс, 12 конвейерных функциональных устройств,
пиковая производительность 160 миллионов операций в секунду, оперативная
память до 1Мслова (слово - 64 разряда), цикл памяти 50нс. Главным
новшеством является введение векторных команд, работающих с целыми
массивами независимых данных и позволяющих эффективно использовать
конвейерные функциональные устройства.
На этом означенный экскурс в историю можно смело закончить, поскольку
роль параллелизма и его влияние на развитие архитектуры компьютеров уже
очевидна.
Попутно стоит заметить, что параллелизм это не только передовая
технология, используемая во всех современных суперкомпьютерах, но и
довольно страшная сила. Очередной пример тому появился совсем недавно. По
сообщению Electronic Frontier Foundation, Джон Гилмор (John Gilmore) и Поль
Кочер (Paul Kocher) смогли взломать 56-битный код, используемый банками и
некоторыми военными организациями США, с помощью собранной в домашних
условиях параллельной вычислительной системы.
Раскрытый алгоритм шифрования, известный как DES (Data Encryption
Standard), использует 56-битные ключи, и это при том, что сейчас в реальных
ситуациях во многих случаях используются лишь 40-битные. До настоящего
момента правительственные органы США утверждали, что ни террористы, ни
какие-либо другие криминальные структуры не в состоянии сделать компьютер,
взламывающий DES.
Вся работа по расшифровке была проделана за 56 часов на компьютере,
состоящем из более чем 1000 процессоров: 27 плат по 64 процессора в каждой.
Каждая плата была подсоединена к обычной персоналке, которая и управляла
всем процессом. Гилмор назвал свою систему Deep Crack - мягкий намек на
шахматный компьютер Deep Blue от IBM. Вечером 17 июля этого года после
проверки 17,902,806,669,197,312 ключей компьютер определил, что
зашифрованным предложением было: "It's time for those 128-, 192-, and 256-
bit keys."
А что же сейчас используют в мире?
По каким направлениям идет развитие высокопроизводительной
вычислительной техники в настоящее время? Таких направлений четыре.
1. Векторно-конвейерные компьютеры. Особенностью таких машин являются,
во-первых, конвейерные функциональные устройства и, во-вторых, набор
векторных инструкций в системе команд. В отличие от традиционного подхода,
векторные команды оперируют целыми массивами независимых данных, что
позволяет эффективно загружать доступные конвейеры. Типичным представителем
данного направления является линия векторно-конвейерных компьютеров CRAY
компании Cray Research.
2. Массивно-параллельные компьютеры с распределенной памятью. Идея
построения компьютеров этого класса тривиальна: возьмем серийные
микропроцессоры, снабдим каждый своей локальной памятью, соединим
посредством некоторой коммуникационной среды, например, сетью - вот и все.
Достоинств у такой архитектуры масса: если нужна высокая
производительность, то можно добавить еще процессоров, а если ограничены
финансы или заранее известна требуемая вычислительная мощность, то легко
подобрать оптимальную конфигурацию.
Однако есть и решающий "минус", сводящий многие "плюсы" на нет. Дело в
том, что межпроцессорное взаимодействие в компьютерах этого класса идет
намного медленнее, чем происходит локальная обработка данных самими
процессорами. Именно поэтому написать эффективную программу для таких
компьютеров очень сложно, а для некоторых алгоритмов иногда просто
невозможно. К данному классу можно отнести компьютеры Intel Paragon, IBM
SP1, Parsytec, в какой-то степени IBM SP2 и CRAY T3D/T3E, хотя в этих
компьютерах влияние указанного минуса значительно ослаблено. К этому же
классу можно отнести и сети компьютеров, которые все чаще рассматривают как
дешевую альтернативу крайне дорогим суперкомпьютерам.
3. Параллельные компьютеры с общей памятью. Вся оперативная память
таких компьютеров разделяется несколькими одинаковыми процессорами. Это
снимает проблемы предыдущего класса, но добавляет новые - число
процессоров, имеющих доступ к общей памяти по чисто техническим причинам
нельзя сделать большим. В данное направление входят многие современные
многопроцессорные SMP-компьютеры, например, сервер HP T600 или Sun Ultra
Enterprise 5000.
4. Кластеры. Последнее направление, строго говоря, не является
самостоятельным, а скорее представляет собой комбинации предыдущих трех. Из
нескольких процессоров, традиционных или векторно-конвейерных, и общей для
них памяти сформируем вычислительный узел. Если вычислительной мощности
полученного узла не достаточно, то объединим несколько узлов
высокоскоростными каналами. Подобную архитектуру называют кластерной, и по
такому принципу построены CRAY SV1, HP Exemplar, Sun StarFire, NEC SX-5,
последние модели IBM SP2 и другие. Именно это направление является наиболее
перспективным в настоящее время.
Два раза в год собираются данные для формирования списка пятисот самых
мощных вычислительных установок мира (Top500). Последняя редакция списка
вышла в ноябре этого года, согласно которой первое место занимает компьютер
Earth-Simulator, а на второй позиции стоит компьютер ASCI Q - AlphaServer
от Hewlett-Packard, объединяющий 8192 процессора Sc45.
Если где-то прибудет, то где-то обязательно уменьшится
К сожалению, чудеса в жизни редко случаются. Гигантская
производительность параллельных компьютеров и супер-ЭВМ с лихвой
компенсируется сложностями их использования. Начнем с самых простых вещей.
У вас есть программа и доступ, скажем, к 256-процессорному компьютеру. Что
вы ожидаете? Да ясно что: вы вполне законно ожидаете, что программа будет
выполняться в 256 раз быстрее, чем на одном процессоре. А вот как раз
этого, скорее всего, и не будет.
Предположим, что в вашей программе доля операций, которые нужно
выполнять последовательно, равна f, где 0<=f<=1 (при этом доля понимается
не по статическому числу строк кода, а по числу операций в процессе
выполнения). Крайние случаи в значениях f соответствуют полностью
параллельным (f=0) и полностью последовательным (f=1) программам. Так вот,
для того, чтобы оценить, какое ускорение S может быть получено на
компьютере из p процессоров при данном значении f, можно воспользоваться
законом Амдала:
Если вдуматься как следует, то закон, на самом деле, страшный.
Предположим, что в вашей программе лишь 10% последовательных операций, т.е.
f=0.1 . Что утверждает закон? А он говорит о том, что сколько бы вы
процессоров не использовали, ускорения работы программы более, чем в десять
раз никак не получите... да и то 10 - это теоретическая верхняя оценка
самого лучшего случая, когда никаких других отрицательных факторов нет...
:((
Отсюда первый вывод - прежде, чем основательно перепахивать код для
перехода на параллельный компьютер (а любой суперкомпьютер, в частности,
является таковым) надо основательно подумать: "А не будет ли потом
мучительно больно за увиденный результат и стоит ли овчинка выделки?".
Если, оценив заложенный в программе алгоритм, вы поняли, что доля
последовательных операций велика, то на значительное ускорение рассчитывать
явно не приходится и нужно думать о замене отдельных компонент алгоритма.
В ряде случаев последовательный характер алгоритма изменить не так
сложно. Допустим, что в программе есть следующий фрагмент для вычисления
суммы n чисел:
s = 0
Do i = 1, n
s = s + a(i)
EndDo
По своей природе он строго последователен, так как на i-й итерации
цикла требуется результат с (i-1)-й и все итерации выполняются одна за
одной. Имеем 100% последовательных операций, а значит и никакого эффекта от
использования параллельных компьютеров. Вместе с тем, выход очевиден.
Поскольку в большинстве реальных случаев нет существенной разницы, в каком
порядке складывать числа, выберем иную схему сложения. Сначала найдем сумму
пар соседних элементов: a(1)+a(2), a(3)+a(4), a(5)+a(6) и т.д. Заметим, что
при такой схеме все пары можно складывать одновременно! На следующих шагах
будем действовать абсолютно аналогично, получив вариант параллельного
алгоритма.
Казалось бы в данном случае все проблемы удалось разрешить. Но
представьте, что доступные вам процессоры разнородны по своей
производительности. Значит, будет такой момент, когда кто-то из них еще
трудится, а кто-то уже все сделал и бесполезно простаивает в ожидании. Если
разброс в производительности компьютеров большой, то и эффективность всей
системы при равномерной загрузке процессоров будет крайне низкой.
Но пойдем дальше и предположим, что все процессоры одинаковы. Проблемы
кончились? Опять нет! Процессоры выполнили свою работу, но результат-то
надо передать другому для продолжения процесса суммирования... а на
передачу уходит время... и в это время процессоры опять простаивают...
Словом, заставить параллельную вычислительную систему или супер-ЭВМ
работать с максимальной эффективностью на конкретной программе - это, прямо
скажем, задача не из простых. Да что там 'заставить работать', иногда даже
возникающие вокруг суперкомпьютеров вопросы ставят в тупик. Верно ли
утверждение: чем мощнее компьютер, тем быстрее на нем можно решить данную
задачу. Ответ противоположный ожидаемому. Действительно, это не верно, что
можно пояснить простым бытовым примером. Если один землекоп выкопает яму
1м*1м*1м за 1 час, то два таких же землекопа это сделают за 30 мин - в это
можно поверить. А за сколько времени эту работу сделают 60 землекопов?
Неужели за 1 минуту? Конечно же нет! Начиная с некоторого момента они будут
просто мешаться друг другу, не ускоряя, а замедляя процесс. Так же и в
компьютерах: если задачка слишком мала, то мы будем дольше заниматься
распределением работы, синхронизацией процессов, сборкой результатов и
т.п., чем непосредственно полезной работой.
Вообще замечено, что эмоциональное состояние человека, впервые
сталкивающегося с суперкомпьютером, проходит несколько стадий. Сначала он
испытывает что-то вроде эйфории, начитавшись рекламных данных о компьютере
и находясь в предвкушении быстрого разрешения всех своих вычислительных
проблем. После первого запуска возникает недоумение и подозрение, что что-
то он сделал не так - больно уж реально достигнутая производительность
отличается от заявленной. Он запускает программу повторно, но результат,
если и меняется в лучшую сторону, то очень слабо. Он идет к местному
компьютерному гуру, и тут-то его поджидает настоящий удар. Оказывается,
что, во-первых, полученные им 5% от максимальной производительности
компьютера это еще не самый худший вариант. Во-вторых, если он хочет
"выжать" из такого компьютера максимум, то для него вся работа только
начинается. Во многих случаях это сделать можно, а как - это искусство.
Приложение
Первые 25 суперкомпьютеров из списка Top500 (ноябрь 2003):
|Класс |Многопроцессорная векторная система (несколько |
|архитектуры |векторных процессоров работают на общей памяти). |
|Предшественники |CRAY Y-MP C90, CRAY X-MP. |
|Модели |Серия T90 включает модели T94, T916 и T932. |
|Процессор |Системы серии T90 базируются на векторно-конвейерном |
| |процессоре Cray Research с пиковой производительностью |
| |2GFlop/s. |
|Число |Система T932 может включать до 32 векторных процессоров|
|процессоров |(до 4-х в модели T94, до 16 модели T916), обеспечивая |
| |пиковую производительность более 60GFlop/s. |
|Масштабируемость|Возможно объединение нескольких T90 в MPP-системы. |
|Память |Система T932 содержит от 1GB до 8GB (до 1 GB в модели |
| |T94 и до 4GB в модели T916) оперативной памяти и |
| |обеспечивает скорость обменов с памятью до 800MB/sec. |
|Системное ПО |Используется операционная система UNICOS. |
IBM RS/6000 SP
|Производитель |International Business Machines (IBM), подразделение |
| |RS/6000. |
|Класс |Масштабируемая массивно-параллельная вычислительная |
|архитектуры |система (MPP). |
|Узлы |Узлы имеют архитектуру рабочих станций RS/6000. |
| |Существуют несколько типов SP-узлов, которые |
| |комплектуются различными процессорами: PowerPC |
| |604e/332MHz, POWER3/200 и 222 MHz (более ранние системы|
| |комплектовались процессорами POWER2). High-узлы на базе|
| |POWER3 включают до 8 процессоров и до 16 GB памяти. |
|Масштабируемость|До 512 узлов. Возможно совмещение узлов различых типов.|
| |Узлы устанавливаются в стойки (до 16 узлов в каждой). |
|Коммутатор |Узлы связаны между собой высокопроизводительных |
| |коммутатором (IBM high-performance switch), который |
| |имеет многостадийную структуру и работает с коммутацией|
| |пакетов. |
|Cистемное ПО |OC AIX (устанавливается на каждом узле), система |
| |пакетной обработки LoadLeveler, параллельная файловая |
| |система GPFS, параллельная СУБД INFORMIX-OnLine XPS. |
| |Параллельные приложения исполняются под управлением |
| |Parallel Operating Environment (POE). |
|Средства |Оптимизированная реализация интерфейса MPI, библиотеки |
|программирования|параллельных математических подпрограмм - ESSL, OSL. |
Cray T3E
|Производитель |Cray Inc. |
|Класс |Масштабируемая массивно-параллельная система, состоит из |
|архитектуры |процессорных элементов (PE). |
|Предшественники|Cray T3D |
|Модификации |T3E-900, T3E-1200, T3E-1350 |
|Процессорный |PE состоит из процессора, блока памяти и устройства |
|элемент |сопряжения с сетью. Используются процессоры Alpha 21164 |
| |(EV5) с тактовой частотой 450 MHz (T3E-900), 600 MHz |
| |(T3E-1200), 675 MHz (T3E-1350) пиковая производительность|
| |которых составляет 900, 1200, 1350 MFLOP/sec |
| |соответственно. Процессорный элемент располагает своей |
| |локальной памятью (DRAM) объемом от 256MB до 2GB. |
|Число |Системы T3E масштабируются до 2048 PE. |
|процессоров | |
|Коммутатор |Процессорные элементы связаны высокопроизводительной |
| |сетью GigaRing с топологией трехмерного тора и |
| |двунаправленными каналами. Скорость обменов по сети |
| |достигает 500MB/sec в каждом направлении. |
|Системное ПО |Используется операционная система UNICOS/mk. |
|Средства |Поддерживается явное параллельное программирование c |
|программировани|помощью пакета Message Passing Toolkit (MPT) - реализации|
|я |интерфейсов передачи сообщений MPI, MPI-2 и PVM, |
| |библиотека Shmem. Для Фортран-программ возможно также |
| |неявное распараллеливание в моделях CRAFT и HPF. Среда |
| |разработки включает также набор визуальных средств для |
| |анализа и отладки параллельных программ. |
Список использованной литературы:
1. Материалы сайта http://www.parallel.ru
2. Материалы сайта http://www.top500.org
3. Материалы сайта http://www.osp.ru/archive/56.htm
4. Материалы сайта http://www.netlib.org/linpack/
Страницы: 1, 2
|