Параллельная обработка данных на ЭВМ
Оксфордский толковый словарь по вычислительной технике, изданный в 1986 году, сообщает, что суперкомпьютер - это очень мощная ЭВМ с производительностью свыше 10 MFLOPS. Сегодня этот результат перекрывают уже не только рабочие станции, но, по пиковой производительности, и ПК. В начале 1990-х годов границу проводили уже около отметки в 300 MFLOPS. В 2001 году специалисты двух ведущих "суперкомпьютерных" стран, США и Японии, договорились о подъеме планки до 5 GFLOPS.
Таким образом, основные признаки, характеризующие супер-ЭВМ, следующие:
самая высокая производительность;
самый современный технологический уровень (например, GaAs-технология);
специфические архитектурные решения, направленные на повышение быстродействия (например, наличие операций над векторами);
цена, обычно свыше 1-2 млн. долларов.
Какой из факторов является решающим в достижении современных фантастических показателей производительности? Обратимся к историческим фактам. На одном из самых первых компьютеров EDSAC (1949 г.), имевшем время такта 2 мкс, можно было выполнить в среднем 100 арифметических операций в секунду. А пиковая производительность суперкомпьютера CRAY C90 с временем такта порядка 4 нс - около 1 миллиарда арифметических операций в секунду. Таким образом, производительность компьютеров за этот период возросла примерно в 10 миллионов раз, а время такта уменьшилось лишь в 500 раз. Следовательно, увеличение производительности происходило и за счет других факторов, важнейшим среди которых является использование новых архитектурных решений, в частности - принципа параллельной обработки данных.
Параллельная обработка данных имеет две разновидности: конвейерность и параллельность.
Идея конвейерной обработки заключается в выделении отдельных этапов выполнения общей операции, причем так, чтобы каждый этап, выполнив свою работу, передавал бы результат следующему, одновременно принимая новую порцию входных данных. Выигрыш в скорости обработки данных получается за счет совмещения прежде разнесенных во времени операций.
Параллельная обработка данных предполагает наличие нескольких функционально независимых устройств.
Закон Амдала
Закон Амдала
S<= 1/ [f + (1-f)/p]
где S - ускорение, f - доля операций, которые нужно выполнить последовательно, p - число процессоров.
Следствие из закона Амдала: для того чтобы ускорить выполнение программы в q раз, необходимо ускорить не менее чем в q раз и не менее чем (1-1/q) -ую часть программы. Следовательно, если нужно ускорить программу в 100 раз по сравнению с ее последовательным вариантом, то необходимо получить не меньшее ускорение на не менее чем 99,99 % кода!
История появления параллелизма в архитектуре ЭВМ
Все современные процессоры используют тот или иной вид параллельной обработки. Изначально эти идеи внедрялись в самых передовых, а потому единичных компьютерах своего времени:
1953 г. - IBM 701, 1955 г. - IBM 704: разрядно параллельная память и арифметика, АЛУ с плавающей точкой.
1958 г. - IBM 709: независимые процессоры ввода/вывода (т.е. контроллеры ВУ).
1961 г. - IBM STRETCH: опережающий просмотр вперед, расслоение памяти на 2 банка.
1963 г. - ATLAS: реализована конвейерная обработка данных - конвейер команд.
1964 г. - CDC 6600: независимые функциональные устройства.
1969 г. - CDC 7600: конвейерные независимые функциональные устройства (8 конвейеров).
1974 г. - ALLIAC: матричные процессоры (УУ + матрица из 64 процессоров).
1976 г. - CRAY1: векторно-конвейерные процессоры. Введение векторных команд, работающих с целыми массивами независимых данных.
Классы параллельных систем
I. Векторно-конвейерные компьютеры (PVP). Имеют MIMD-архитектуру (множество инструкций над множеством данных).
Основные особенности:
конвейерные функциональные устройства;
набор векторных инструкций в системе команд;
зацепление команд (используется как средство ускорения вычислений).
Характерным представителем данного направления является семейство векторно-конвейерных компьютеров CRAY.
Рассмотрим, например, суперкомпьютер CRAY Y-MP C90, имеющий следующие характеристики:
Максимальная конфигурация - 16 процессоров, время такта - 4,1 нс, что соответствует тактовой частоте почти 250 МГц.
Разделяемые ресурсы процессора:Оперативная память (ОП) разделяется всеми процессорами и секцией ввода/вывода, разделена на множество банков, которые могут работать одновременно.
Секция ввода/вывода. Компьютер поддерживает три типа каналов с разной скоростью передачи:Low-Speed Channels - 6 Мбайт/с
High-Speed Channels - 200 Мбайт/с
Very High-Speed Channels - 1800 Мбайт/с
Секция межпроцессорного взаимодействия содержит регистры и семафоры, предназначенные для передачи данных и управляющей информации.
Вычислительная секция процессора состоит из:регистров (адресных, скалярных, векторных);
функциональных устройств;
сети коммуникаций.
Секция управления.Команды выбираются из ОП блоками и заносятся в буфера команд.
Параллельное выполнение программ.Все основные операции, выполняемые процессором - обращение в память, обработка команд и выполнение инструкций - являются конвейерными.
II. Массивно-параллельные компьютеры с распределенной памятью. Объединяется несколько серийных микропроцессоров, каждый со своей локальной памятью, посредством некоторой коммуникационной среды.
Достоинств у такой архитектуры много: если нужна высокая производительность, то можно добавить еще процессоров; если ограничены финансы или заранее известна требуемая вычислительная мощность, то легко подобрать оптимальную конфигурацию и т.д.
Каждый процессор имеет доступ лишь к своей локальной памяти, а если программе нужно узнать значение переменной, расположенной в памяти другого процессора, то задействуется механизм передачи сообщений. Этот подход позволяет создавать компьютеры, включающие в себя тысячи процессоров.
Но эта архитектура имеет 2 существенных недостатка:
требуется быстродействующее коммуникационное оборудование, обеспечивающее среду передачи сообщений;
при создании программ необходимо учитывать топологию системы и специальным образом распределять данные между процессорами, чтобы минимизировать число пересылок и объем пересылаемых данных.
Последнее обстоятельство и мешает широкому внедрению подобных архитектур.
К данному классу можно отнести компьютеры Intel Paragon, IBM SP1, Parsytec, IBM SP2 и CRAY T3D.
Компьютеры Cray T3D и T3E используют единое адресное пространство (общая виртуальная память) (см. рис. 11.1). По аппаратному прерыванию особого случая адресации ОС выполняет пересылку страницы с одного узла на другой. У каждого МП своя локальная память, но единое виртуальное адресное пространство.
(рис 11.1) Структура супер-ЭВМ Cray T3D
Факторы, снижающие производительность параллельных компьютеров:
Закон Амдала.В табл. 11.1 показано, на какое максимальное ускорение работы программы можно рассчитывать в зависимости от доли последовательных вычислений и числа доступных процессоров.
| Число ПЭ |
Доля последовательных вычислений |
| 50% |
25% |
10% |
5% |
2% |
| 2 |
1,33 |
1,60 |
1,82 |
1,90 |
1,96 |
| 8 |
1,78 |
2,91 |
4,71 |
5,93 |
7,02 |
| 32 |
1,94 |
3,66 |
7,80 |
12,55 |
19,75 |
| 512 |
1,99 |
3,97 |
9,83 |
19,28 |
45,63 |
| 2048 |
2,00 |
3,99 |
9,96 |
19,82 |
48,83 |
Время инициализации посылки сообщения (латентность) и время передачи сообщения по сети.Максимальная скорость передачи достигается на больших сообщениях, когда латентность, возникающая лишь вначале, не столь заметна на фоне непосредственно передачи данных.
Возможность асинхронной посылки сообщений и вычислений.Если или аппаратура, или программное обеспечение не поддерживают возможности проводить вычисления на фоне пересылок, то возникнут неизбежные накладные расходы, связанные с ожиданием полного завершения взаимодействия параллельных процессов.
Неравномерная загрузка всех процессорных элементов.Если равномерности нет, то часть процессоров будут простаивать, ожидая остальных, хотя в этот момент они могли бы выполнять полезную работу.
Время ожидания прихода сообщения.Для его минимизации необходимо, чтобы один процесс отправил требуемые данные как можно раньше, отложив независящую от них работу на потом, а другой процесс выполнил максимум работы, не требующей ожидаемой передачи, прежде чем выходить на точку приема сообщения.
Реальная производительность одного процессора.
III. Параллельные компьютеры с общей памятью (SMP). Вся оперативная память разделяется между несколькими одинаковыми процессорами. Это снимает проблемы предыдущего класса, но добавляет новые - число процессоров, имеющих доступ к общей памяти, нельзя сделать большим. В данное направление входят многие современные многопроцессорные SMP-компьютеры или, например, отдельные узлы компьютеров HP Exemplar и Sun StarFire.
Основное преимущество таких компьютеров - относительная простота программирования. В ситуации, когда все процессоры имеют одинаково быстрый доступ к общей памяти, вопрос о том, какой процессор какие вычисления будет выполнять, не столь принципиален, и значительная часть вычислительных алгоритмов, разработанных для последовательных компьютеров, может быть ускорена с помощью распараллеливающих и векторизирующих трансляторов. SMP-компьютеры - это наиболее распространенные сейчас параллельные вычислители. Однако общее число процессоров в SMP-системах, как правило, не превышает 16, а их дальнейшее увеличение не дает выигрыша из-за конфликтов при обращении к памяти.
IV. Кластерная архитектура. По такому принципу построены CRAY SV1, HP Exemplar, Sun StarFire, NEC SX-5, последние модели IBM SP2 и другие.
Кластерная архитектура представляет собой комбинации предыдущих трех. Из нескольких процессоров (традиционных или векторно-конвейерных) и общей для них памяти формируется вычислительный узел. Если полученной вычислительной мощности не достаточно, то объединяется несколько узлов высокоскоростными каналами. Часто создаются из общедоступных компьютеров на базе Intel и недорогих Ethernet-сетей под управлением операционной системы Linux.
Технологии параллельного программирования
Средства программирования: параллельные расширения и диалекты языков - Fortran, C/C++, ADA и др.
Самым крупным достижением в деле создания программного обеспечения была стандартизация интерфейса передачи сообщений MPI (Message Passing Interface). Набор функций этого интерфейса вобрал в себя лучшие черты своих предшественников. Основные достоинства MPI:
поддержка нескольких режимов передачи данных;
предусматривает гетерогенные вычисления;
передача типизированных сообщений;
построение библиотек - MPICH, LAM MPI;
наличие вариантов для языков программирования C/C++, Fortran;
поддерживает коллективные операции: широковещательную передачу, разборку/сборку, операции редукции;
совместимость с многопоточностью.
Оценки производительности супер-ЭВМ
Большинство оценочных характеристик производительности супер-ЭВМ связано с вычислениями над вещественными числами. К ним относится пиковая производительность (ПП), измеряемая в млн. операций с плавающей точкой, которые компьютер теоретически может выполнить за 1 с (MFLOPS).
ПП - величина, практически не достижимая. Это связано с проблемами заполнения функциональных конвейерных устройств. Чем больше конвейер, тем больше надо "инициализационного" времени для того, чтобы его заполнить. Такие конвейеры эффективны при работе с длинными векторами. Поэтому для оценки векторных супер-ЭВМ было введено такое понятие, как длина полупроизводительности - длина вектора, при которой достигается половина пиковой производительности.
Более реальные оценки производительности базируются на временах выполнения различных тестов. Самыми хорошими тестами являются реальные задачи пользователя. Однако такие оценки, во-первых, весьма специфичны, а во-вторых, часто вообще недоступны или отсутствуют. Поэтому обычно применяются более универсальные тесты.
Поскольку большую часть времени выполнения программ обычно занимают циклы, иногда именно они применяются в качестве тестов, например, известные ливерморские циклы.
Наиболее популярным тестом производительности является Linpack, который представляет собой решение системы N линейных уравнений методом Гаусса. Так как известно, сколько операций с вещественными числами нужно проделать для решения системы, то, зная время расчета, можно вычислить выполняемое в секунду количество операций.
Имеется несколько модификаций этих тестов. Обычно фирмы-производители компьютеров приводят результаты при N = 100.
Свободно распространяется стандартная программа на Фортране, которую надо выполнить на суперкомпьютере, чтобы получить результат тестирования. Эта программа не может быть изменена, за исключением замены вызовов подпрограмм, дающих доступ к процессорному времени выполнения.
Другой стандартный тест относится к случаю N = 1000, предполагающему использование длинных векторов. Эти тесты могут выполняться на компьютерах при разном числе процессоров, давая также оценки качества распараллеливания.
Для MPP-систем более интересным является тест Linpack-parallel, в котором производительность измеряется при больших N и большом количестве процессоров. Здесь лидером является 6768-процессорный Intel Paragon (281 GFLOPS при N = 128600). Что касается производительности процессоров, то при N = 100 лидирует Cray T916 (522 MFLOPS), при N = 1000 и по пиковой производительности - Hitachi S3800 (соответственно 6431 и 8000 MFLOPS). Для сравнения, процессор в AlphaServer 8400 имеет 140 MFLOPS при N =100 и 411 MFLOPS при N = 1000.
Для высокопараллельных суперкомпьютеров в последнее время все больше используются тесты NAS parallel benchmark, которые особенно хороши для задач вычислительной газо- и гидродинамики. Их недостатком является фиксация алгоритма решения, а не текста программы.
14 ноября 2005 года была опубликована 26-я редакция списка 500 наиболее мощных компьютеров мира Top500.
На первом месте в 26-й редакции списка остался прототип будущего суперкомпьютера IBM BlueGene/L, число процессоров которого увеличилось до 131072, а производительность на Linpack - до 280.6 Tflop/s.
На втором месте осталась другая инсталляция суперкомпьютера IBM BlueGene/L, установленная в Thomas J. Watson Research Center, на основе 40960 процессоров с производительностью на Linpack 91.29 Tflop/s.
На третье место в новой редакции списка вышел суперкомпьютер ASC Purple производства IBM на основе 10240 процессоров p5 575 1.9 ГГц с производительностью на Linpack 63.39 Tflop/s.
На 5-ом месте оказался суперкомпьютер Thunderbird производства Dell на основе 8000 процессоров PowerEdge 1850 3.6 ГГц с производительностью на Linpack 38.27 Tflop/s. На 6-ом месте - суперкомпьютер Red Storm производства Cray на основе технологии XT3 с производительностью на Linpack 36.19 Tflop/s.
Суперкомпьютер Earth Simulator, долгое время возглавлявший список, оказался в новой редакции уже на 7-м месте.
Суперкомпьютер Earth Simulator предназначен для моделирования климатических изменений на основе данных, которые поступают со спутников. Система базируется на 5120 таких процессорах, объединенных в 640 узлов SX-6 (по 8 процессоров в каждом). Суперкомпьютер работает под управлением ОС SUPER-UX. В числе средств разработки установлены компиляторы языков C/C++, Fortran 90 и HPF, а также средства автоматической векторизации, реализация интерфейса MPI-2 и математическая библиотека ASL/ES. Вся машина занимает площадь трех теннисных кортов (50x65 м) и использует несколько километров кабеля.
На 10-м месте в списке оказался суперкомпьютер Jaguar, построенный по технологии Cray XT3 с производительностью на Linpack 20.527 Tflop/s.
Полгода назад для попадания в первую десятку списка требовалась производительность 15.25 Tflop/s. Суммарная производительность систем в списке выросла за полгода с 1.69 Pflop/s до 2.30 PFlop/s.
Общее число кластеров в списке еще увеличилось и составляет уже 360 систем (по сравнению с 304 в июне), таким образом, кластерная архитектура остается наиболее популярной при проектировании мощнейших суперкомпьютеров. В качестве коммуникационной технологии 249 кластеров используется Gigabit Ethernet, в 70 случаях - Myrinet.
По количеству установленных систем, вошедших в список, IBM (219) продолжает доминировать, на втором месте по-прежнему Hewlett-Packard (169).
С 56-го на 69-е место в новой редакции списка опустился российский суперкомпьютер MVS-15000BM производства IBM, установленный в Межведомственном суперкомпьютерном центре РАН и построенный на основе 924 процессоров PowerPC970 2.2 ГГц, объединенных коммуникационной сетью Myrinet, с производительностью на тесте Linpack 5.355 Tflop/s.
С 174-го на 330-е место в новой редакции списка опустился белорусский суперкомпьютер SKIF K-1000, построенный на основе 576 процессоров AMD Opteron 2.2 ГГц и коммуникационной технологии Infiniband, с производительностью на Linpack 2.032 Tflop/s.
Наиболее полную и интересную информацию о параллельных системах можно найти на сайте http://www.parallel.ru.
Вопросы для самоконтроля
Когда впервые реализована конвейерная обработка данных?
Перечислите способы параллельной обработки данных.
Сформулируйте следствие из закона Амдала.
Назовите классы параллельных систем.
Основные особенности векторно-конвейерных компьютеров.
К какому классу параллельных систем относятся компьютеры Intel Paragon и CRAY T3D?
В каких классах параллельных систем оперативная память разделяется между несколькими процессорами?
Перечислите особенности MPI-интерфейса.
Что представляет собой тест оценки производительности суперЭВМ Linpack?
Какие тесты оценки производительности супер-ЭВМ вы знаете?