Семинар 9. Параллельное программирование на MPI (часть 2)
Пространственно-распределенная мультикластерная вычислительная система: архитектура и программное обеспечение
1. Пространственно-распределенная
мультикластерная вычислительная система:
архитектура и программное обеспечение
В.Г. Хорошевский,
С.Н. Мамойленко, М.Г. Курносов
Семинар “Вычислительные системы”
Институт физики полупроводников им. А.В. Ржанова СО РАН
г. Новосибирск, 7 мая 2010 г.
khor@isp.nsc.ru, msn@cpct.sibsutis.ru, mkurnosov@isp.nsc.ru
Центр параллельных
вычислительных технологий
ГОУ ВПО «Сибирский государственный университет
телекоммуникаций и информатики»
ул. Кирова, 86
630102, Новосибирск, Россия
Тел. & факс: +7 (383) 269 82 75
E-mail: khor@cpct.sibsutis.ru
Лаборатория вычислительных систем
Институт физики полупроводников
им. А.В. Ржанова CО РАН
пр-кт ак. Лаврентьева, 13
630090, Новосибирск, Россия
Тел. & факс: +7 (383) 333 21 71
E-mail: khor@isp.nsc.ru
2. Институт системного
программирования РАН
Сеть программы
“Университетский
кластер” 2
Пространственно-распределённая мультикластерная
вычислительная система
GRID-модель
Программируемость структуры, масштабируемость, живучесть
Параллельное мультипрограммирование
Кластер G
HP BLc3000
Intel Xeon 5410
300 GFLOPS
3. Институт системного
программирования РАН
Сеть программы
“Университетский
кластер” 3
Пространственно-распределённая мультикластерная
вычислительная система
GRID-модель
Программируемость структуры, масштабируемость, живучесть
Параллельное мультипрограммирование
Кластер F
1,44 TFLOPS
Кластер G
HP BLc3000
Intel Xeon 5410
300 GFLOPS
6. 6
Аутентификация пользователей и передача файлов между
сегментами мультикластерной ВС
[griduser@xeon16 ~]$ myproxy-logon -s xeon80.cpct.sibsutis.ru
1. Аутентификация пользователя gridusergridusergridusergriduser на сегменте Xeon16
Enter MyProxy pass phrase: *****
A credential has been received for user griduser in /tmp/x509up_u565.
[griduser@xeon16 ~]$ globus-url-copy file:///tmp/data
2. Отправка файла /tmp/data/tmp/data/tmp/data/tmp/data с сегмента Xeon16 на сегмент Xeon80
gsiftp://xeon80.cpct.sibsutis.ru/tmp/newdata
3. Отправка файла /tmp/newdata/tmp/newdata/tmp/newdata/tmp/newdata с сегмента Xeon80 на сегмент Xeon32
[griduser@xeon16 ~]$ globus-url-copy
gsiftp://xeon80.cpct.sibsutis.ru/tmp/newdata
gsiftp://xeon32.cpct.sibsutis.ru/tmp/inputdata
7. [griduser@xeon16 ~]$ mpicc -static mpiprog.c –o mpiprog
7
Удаленное выполнение программ на заданном сегменте
мультикластерной ВС
&(rsl_substitution = (GRIDFTP_XEON32 gsiftp://xeon32.cpct.sibsutis.ru)
(GRIDFTP_XEON16 gsiftp://xeon16.cpct.sibsutis.ru))
(executable = $(GRIDFTP_XEON16)/$(HOME)/mpiprog)
(arguments = ./file.dat)
(job_type = mpi)
(count = 8)
(stdout = $(HOME)/mpiprog.stdout)
(file_stage_in = ($(GRIDFTP_XEON16)/$(HOME)/mpiprog.data
$(HOME)/file.dat))
(file_stage_out = ($(HOME)/mpiprog.stdout
$(GRIDFTP_XEON16)/$(HOME)/mpiprog.res)
($(HOME)/mpiprog.stdout
$(GRIDFTP_XEON32)/$(HOME)/mpiprog.res))
(file_clean_up = $(HOME)/mpiprog.stdout)
1. Компиляция MPI-программы
2. Формирование паспорта задачи в формате RSL – Resource Specification Language
[griduser@xeon16 ~]$ cat job.rsl
Запрос на подсистему из 8 элементарных машин.
Входные данные должны быть доставлены с сегмента Xeon16, а результирующий файл передан
на сегменты Xeon16 и Xeon32.
8. 8
Удаленное выполнение программ на заданном сегменте
мультикластерной ВС
3. Запуск задачи на сегменте Xeon80
[griduser@xeon16 ~]$ globusrun -b -r xeon80.cpct.sibsutis.ru -f job.rsl
4. Запрос состояния задачи
[griduser@xeon16 ~]$ globusrun –status
https://xeon80.cpct.sibsutis.ru:44383/16073658407281668776/530855883752
6086045/
globus_gram_client_callback_allow successful
GRAM Job submission successful
https://xeon80.cpct.sibsutis.ru:44383/16073658407281668776/530855883752
6086045/
GLOBUS_GRAM_PROTOCOL_JOB_STATE_STAGE_IN
GLOBUS_GRAM_PROTOCOL_JOB_STATE_PENDING
GLOBUS_GRAM_PROTOCOL_JOB_STATE_ACTIVE
ACTIVE
[griduser@xeon16 ~]$ globusrun –status
https://xeon80.cpct.sibsutis.ru:44383/16073658407281668776/530855883752
6086045/
DONE
9. 9
Удаленное выполнение программ на заданном сегменте
мультикластерной ВС
Process 0 of 8 is on node1.cluster.local
Process 1 of 8 is on node2.cluster.local
Process 2 of 8 is on node3.cluster.local
Process 3 of 8 is on node4.cluster.local
Process 4 of 8 is on node5.cluster.local
Process 5 of 8 is on node6.cluster.local
Process 6 of 8 is on node7.cluster.local
Process 7 of 8 is on node8.cluster.local
PI is approximately 3.1415926535897811, Error is 0.0000000000000120
Elapsed time = 0.0092 sec.
5. Проверка результатов выполнения программы на сегменте Xeon32
[griduser@xeon32 ~]$ cat mpiprog.res
10. HID PRIO OS ARCH MHZ %CPU N(U/F/T) LRMS HOSTNAME
0 1 Linux2.6.18-8.e x86_6 2660 0 0/4/4 pbs xeon16.cpct.sibsutis.ru
1 1 Linux2.6.18-164 x86_6 2330 0 0/4/4 pbs xeon32.cpct.sibsutis.ru
2 1 Linux2.6.18-8.e x86_6 2500 0 0/10/10 pbs xeon80.cpct.sibsutis.ru
10
Запуск программ через GRID-диспетчер GridWay
[griduser@xeon16 ~]$ mpicc -static mpiprog.c -o mpiprog
3. Подготовка паспорта задачи в формате GridWay
[griduser@xeon16 ~]$ cat job.jt
2. Компиляция программы
EXECUTABLE = mpiprog
ARGUMENTS = ./mpiprog.res
INPUT_FILES = gsiftp://xeon16.cpct.sibsutis.ru/home/griduser/mpiprog.data
STDOUT_FILE = gsiftp://xeon32.cpct.sibsutis.ru/home/griduser/mpiprog.res
TYPE = mpi
NP = 8
1. Запрос информации о состоянии сегментов мультикластерной ВС
[griduser@xeon16 ~]$ gwhost
11. [griduser@xeon16 ~]$ gwsubmit job.jt
[griduser@xeon32 ~]$ cat mpiprog.res
[griduser@xeon16 ~]$ gwps
11
Запуск программ через GRID-диспетчер GridWay
5. Запрос информации о состоянии задач
Process 0 of 8 is on node1.cluster.local
Process 1 of 8 is on node2.cluster.local
Process 2 of 8 is on node3.cluster.local
Process 3 of 8 is on node4.cluster.local
Process 4 of 8 is on node5.cluster.local
Process 5 of 8 is on node6.cluster.local
Process 6 of 8 is on node7.cluster.local
Process 7 of 8 is on node8.cluster.local
PI is approximately 3.1415926535897811, Error is 0.0000000000000120
Elapsed time = 0.0092 sec.
6. Результаты выполнения задания на сегменте Xeon32
USER JID DM EM START END NAME HOST
griduser:0 0 done ---- 23:47:56 23:48:16 pi.jt xeon32.cpct.sibsutis.ru
griduser:0 1 wrap actv 12:41:04 --:--:-- job.jt xeon80.cpct.sibsutis.ru
4. Запуск задачи через диспетчер GridWay
[griduser@xeon16 ~]$ gwps
USER JID DM EM START END NAME HOST
griduser:0 0 done ---- 23:47:56 23:48:16 pi.jt xeon32.cpct.sibsutis.ru
griduser:0 1 done ---- 12:41:04 12:41:39 job.jt xeon80.cpct.sibsutis.ru
12. 12
Web-сайт мультикластерной ВС
• Руководства для пользователей ресурсов
мультикластерной ВС
• Описание конфигурации сегментов
мультикластерной ВС
• Информация о состоянии сегментов
http://cpct.sibsutis.ru
14. 14
Распределенные вычислительные системы
с иерархической структурой
Распределенные ВС из списка TOP500 (34 редакция, ноябрь 2009 года) имеют как
минимум два уровня в иерархической организации – общая память узлов
и сеть межузловых связей.
Level 3
Level 2
Level 1
15. 15
Вложение параллельной программы в структуру
распределенной ВС
Вложение теста High Performance
Linpack в подсистему:
Стандартными MPI-утилитами (MPICH2):
время выполнения 118 сек. (44 GFLOPS)
Разработанными средствами:
время выполнения 100 сек. (53 GFLOPS)
High Performance Linpack
Кластер с иерархической
структурой:
2 узла по 2 процессора Intel Xeon 5150
Сеть связи Gigabit Ethernet
Общая память
Ядро Ядро
Кэш L2
Процессор
Ядро Ядро
Кэш L2
Процессор
Общая память
Ядро Ядро
Кэш L2
Процессор
Ядро Ядро
Кэш L2
Процессор
Граф
программы
16. 16
Библиотека коммуникационных функций TopoMPI
TopoMPI (от англ. Topology-aware MPI library) – библиотека коммуникационных функций стандарта
MPI, ориентированная на эффективную реализацию параллельных программ в большемасштабных
иерархических распределенных ВС.
Основные возможности:
• Оптимизация вложения (mapping) параллельных программ в иерархические распределенные ВС.
• Эффективные алгоритмы реализации коллективных операций информационных обменов (collective
communication) в иерархических распределенных ВС.
• Переносимая реализация на C99 (ISO/IEC 9899:1999) и MPI 2.2.
17. 17
Программное обеспечение мультикластерной ВС
Операционная система GNU/Linux
Подсистема самоконтроля, самодиагностики ВС и организации
отказоустойчивого выполнения параллельных программ
(DMTCP – Distributed MultiThreaded CheckPointing)
Удаленныйдоступимониторинг
(SSH,GlobusToolkit;Ganglia)
Подсистема параллельного мультипрограммирования
(TORQUE, MAUI, mpiexec)
Средства организации распределенной очереди задач
(Gbroker, dqueued, GridWay)
Средства разработки параллельных программ
• MPI: TopoMPI, MPICH2, OpenMPI
• PGAS: Unified Parallel C
• OpenMPI: GNU Compilers, Intel Compilers, Sun Studio Compilers
• Средств анализа MPI-программ: mpistat, otfstat, VampirTrace
Подсистема параллельного мультипрограммирования
Разрабатываемые в ИФП СО РАН и ЦПВТ ГОУ ВПО “СибГУТИ” компоненты