Вычислительные системы сверхвысокой производительности.
Е.С.Борисов
четверг, 29 мая 2003 г.
Существуют задачи, не решаемые на серийных PC за приемлемое время, к
примеру прогнозирование погоды, моделирование процессов разрушения в
механике (crash-тесты)[1]. Для решения
таких задач используют многопроцессорные вычислители. При одинаковой
потенциальной производительности система с большим числом процессоров
может обладать большей гибкостью, допуская различные формы организации
вычислительных процессов. Необходимо отметить, что такие системы требуют
специальных операционных систем.
Основной характеристикой при классификации [3] параллельных вычислительных систем
является способ организации памяти :
- общая память - все процессора работают в едином адресном
пространстве с равноправным доступом к памяти
- распределенная память - каждый процессор имеет собственную
локальную памятью, и прямой доступ к этой памяти других процессоров
невозможен.
Можно выделить следующие классы параллельных систем :
- SMP - симметричные мультипроцессорные системы. SMP
обычно состоит из нескольких одинаковых процессоров и массива общей
памяти. Все процессоры имеют доступ к любой точке памяти с
одинаковой скоростью. Наличие общей памяти упрощает взаимодействие
процессоров между собой, однако накладывает сильные ограничения на их
число (обычно не более 32).
- PVP - параллельные векторные системы.
( NEC SX-4/SX-5, CRAY J90/T90)
Основным признаком PVP-систем является наличие специальных
векторно-конвейерных процессоров. Как правило, несколько таких
процессоров работают одновременно над общей памятью (аналогично SMP)
в рамках многопроцессорных конфигураций.
- MPP - системы массового параллелизма.
(МВС-1000, IBM RS/6000 SP2, SGI/CRAY T3E)
MPP состоит из нескольких однородных вычислительных узлов; Каждый
такой узел имеет свою локальную память (прямой доступ к памяти
других узлов невозможен), один или несколько центральных процессоров(
иногда - жесткий диск). Узлы обычно связаны специальной
высокоскоростной сетью. Общее число процессоров в таких системах
может достигать нескольких тысяч.
- NUMA - системы с неоднородным доступом к памяти.
(SGI Origin2000, Sun HPC 10000)
NUMA (Non Uniform Memory Access) представляет собой нечто среднее
между SMP и MPP. В NUMA память физически распределена, но логически
общедоступна. Масштабируемость NUMA-систем ограничивается объемом
адресного пространства и возможностями операционной системы.
- Кластеры - дешевый вариант MPP.
( Avalon, Beowulf)
Обычно это сеть из серийных PC или рабочих станций общего
назначения, которая объединяется в ''виртуальную многопроцессорную
машину''. Для связи узлов используется одна из стандартных
сетевых технологий (Ethernet, Myrinet).
Для параллельных вычислительных систем необходимо создавать
специальные программы. В тексте такой программы определяются части
(ветки), которые могут выполнятся параллельно, а также алгоритм их
взаимодействия. Средства параллельного программирования можно разделить
на два уровня :
- верхний - средства автоматического и полуавтоматического
распараллеливания последовательных программ.
- нижний - коммуникационные библиотеки.
Соответственно типу организации памяти, существует два основных типа
коммуникационных библиотек и интерфейсов параллельного программирования
:
- модель общей (разделяемой) памяти
- модель обмена сообщениями
Надо отметить, что одно может быть сымитировано через другое :
- модель обмена сообщениями для SMP - вырожденным каналом связи
передачи сообщений служит разделяемая память.
- модель общей памяти для MPP - организация единого виртуального
адресного пространства ( аппаратно реализовано на NUMA-машинах)
Существует множество библиотек и интерфейсов параллельного
программирования :
- OpenMP - программный интерфейс для программирования
компьютеров с общей памятью (SMP/NUMA) [7].
- ShMem - библиотека, разработанная Cray Research Inc.
Реализует схему работы над общей памятью. В настоящее время
существуют реализации для всех суперкомпьютерных систем с общей
памятью SGI/Cray под управлением ОС IRIX.
- P4 - библиотека параллельного программирования [5] для систем с распределенной памятью,
реализует как обмен сообщениями, так и эмуляцию общей памяти.
- PVM (Parallel Virtual Machine) [6]
- библиотека, предоставляющая возможности управления процессами с
помощью механизма передачи сообщений.
- MPI (Message Passing Interface) [4]
- стандарт для построения параллельных программ по модели обмена
сообщениями. Существуют реализации почти для всех суперкомпьютерных
платформ, а также для сетей рабочих станций UNIX и Windows NT. Это наиболее
популярный и широко используемый стандарт.
Параллельные программы можно писать ''вручную'', непосредственно
вставляя в нужные места вызовы коммуникационной библиотеки. Этот путь
требует от программиста специальной подготовки. Альтернативой является
использование систем автоматического и полуавтоматического
распараллеливания последовательных программ.
- В случае полуавтоматической системы распараллеливания,
в тексте последовательной программы выделяются блоки, которые могут
выполнятся параллельно. Обычно, в текст вставляются специального вида
комментарии, которые игнорируются обычным (последовательным)
компилятором. Примером такой полуавтоматической системы может служить
Adaptor - одна из реализаций спецификации HPF (High Performance
Fortran)[8].
- Автоматические системы распараллеливания выполняют
декомпозицию последовательного алгоритма самостоятельно. На вход
подается последовательная программа, на выход выдается её
параллельный аналог. Пример такой системы это BERT77 средство
автоматического распараллеливания Fortran-программ [10]. Системы из этого класса так же
могут помочь пользователю выяснить является ли данная задача
параллельной, оценить время выполнения данной задачи, определить
оптимальное число процессоров.
Создание систем автоматического распараллеливания и распознавания
параллелизма в алгоритмах является не простой математической задачей и
большинство такого рода систем являются коммерческими [9].
-
- 1
- Задачи для суперкомпьютеров - http://parallel.ru/research/apps.html
- 2
- Коммуникационные библиотеки - http://www.parallel.ru/tech/tech_dev/ifaces.html
- 3
- Основные классы современных параллельных компьютеров - http://parallel.ru/computers/classes.html
- 4
- MPI - http://www.mpi-forum.org
- 5
- P4 - http://www-fp.mcs.anl.gov/
lusk/p4/index.html
- 6
- PVM - http://www.epm.ornl.gov/pvm
- 7
- OpenMP - http://www.parallel.ru/tech/tech_dev/openmp.html
- 8
- HPF - http://www.crpc.rice.edu/HPFF/
- 9
- Средства распознавания параллелизма в алгоритмах - http://www.parallel.ru/tech/tech_dev/auto_par.html
- 10
- BERT77 - http://www.plogic.com/bert.html
Evgeny S. Borisov
2003-05-29