Moscow State University Regatta community

· Regatta
· Новости
· Инструкция
· Документация
· Downloads
· Форум
· Контакты
· Ссылки



Инструкция

  • Введение
  • Подключение к комплексу (UNIX, Windows)
  • UNIX (AIX) среда на комплексе (редакторы, архивация, копирование файлов, Midnight Commander)
  • Подготовка заданий (компиляция программ)
  • Запуск заданий (Постановка в очередь; Просмотр состояния очереди; Удаление задания из очереди


  • Введение


    Комплекс состоит из двух машин:
    1. regatta.cs.msu.su, фронтэнд. К этой машине имеется доступ из сети Интернет по протоколу SSH. Все другие протоколы закрыты. Вся связь с комплексом осуществляется только через эту машину. Машина предназначена для компилирования проектов и для задач не требующих большой вычислительной мощности. (конфигурация: 2хPower4 процессора, 4 GB памяти).
    2. regata2.cs.msu.su. вычислитель. К этой машине доступа по SSH нет. Машина предназначена только для выполнения задач поставленных в очередь на планировщике (конфигурация 16xPower4 процессора, 64GB памяти).

    Домашние директории пользователей монтируются по NFS, с вычислителя, и одинаковы на обеих машинах. Это означает, что пользователю нет необходимости заботиться о переписывании файлов c фронтэнд машины на вычислитель для обеспечения запуска своих задач.
    На машинах установлена операционная система IBM AIX 5L v5.2. Русскоязычная документация по использованию системы
    http://www.ibm.com/ru/eserver/pseries/goods.html. Более полная документация, на английском языке http://www-1.ibm.com/servers/eserver/pseries/library/.

    О параллельном программировании для вычислительного комплекса IBM Regatta.

    В качестве средства для написания параллельных программ для многопроцессорных систем чаще всего используют 2 стандарта:
  • OpenMP - стандарт для написания параллельных программ в условиях общей памяти. Программа представляется как набор потоков объединённых общей памятью, где проблема синхронизации решается введением критических секций и приватных переменных,. информацию о нём можно найти на http://www.openmp.org. (на русском языке http://www.parallel.ru/tech/tech_dev/openmp.html.)
  • Message Passing Interface (MPI) - стандарт, предназначенный для написания программ в условиях разделённой памяти, данный стандарт описывает параллельную программу как набор нитей, взаимодействующих посредством передачи сообщений. информацию о нём можно найти на http://www.mpi-forum.org. (на русском языке http://www.parallel.ru/tech/tech_dev/mpi.html)



  • Подключение к комплексу


    Вход возможен с любой машины в сети Интернет, имеющей клиента ssh.

    Если вы заходите на комплекс с Unix подобной операционной системы, и у вас установлен ssh, в этом случае вам достаточно набрать команду "ssh @regatta.cs.msu.su", например "ssh salnikov@regatta.cs.msu.su". Файлы можно передать между машинами, используя команду scp: "scp <локальный путь до файла или файлов> @<имя хоста удалённой машины>:<удалённый путь, куда будет передан файл>", например "scp ./prog.c salnikov@salnikov.regatta.cs.msu.su:src/". Более подробную информацию можно прочитать, набрав в командной строке man scp и man ssh. В Unix подобных операционных системах, рекомендуется использовать OpenSSH. OpenSSH предоставляет клиента и сервер, исходные тексты и откомпилированный уже код для некоторых платформ можно получить с
    http://www.openssh.org.
    Также можно пользоваться встроенным в Midnight Commander, команда mc (http://www.ibiblio.org/mc/) scp клиентом, который позволяет передавать файлы между машинами, копируя их с одной панели mc в другую панель. Иногда бывает необходимо поверх SSH протокола организовывать туннели для протокола, по которому работает Xwindow System. для этой цели можно использовать ключ -X команды ssh, в результате, можно получать вывод на свой экран Xwindows программ запущенных на удалённой машине.

    В случае необходимости доступа к комплексу с Windows машины придётся, на данную Windows машину, поставить ssh клиент. ssh не входит в базовую поставку Windows. Одним из ssh клиентов для Windows является программа рutty. При настройке рutty надо указать адрес Host Name regatta.cmc.msu.ru и режим ssh Причём настраивать рutty можно как через командную строку, так и через графический интерфейс. Для копирования файлов удобно использовать программу можно использовать программу WinSCP , или его plugin для FAR, который можно скачать с http://www.rarlab.com версию не меньше 1.70b5, или команду pscp. Если необходима какая-либо интерактивная визуализация данных без перекачки наработанных данных на свою, локальную машину, то вам, вероятнее всего придётся поставить Cygwin и Xserver для него. Cygwin можно скачать с http://www.cygwin.com.

    UNIX (AIX) среда на комплексе


    Комплекс работает под управлением операционной системы AIX v 5.2. Данная операционная система разработана IBM и в текущий момент является основной операционной системой для работы pSeries 690. Это Unix-подобная операционная система и для работы с ней, на пользовательском уровне, необходим некоторый начальный набор знаний. Подробную информацию о функционировании AIX можно почерпнуть с сайта, посвященного этой операционной системе
    http://www.rootvg.net.

    Для пользователя по умолчанию в качестве оболочки shell установлен bash. Информацию о том, как использовать bash, можно прочитать http://www.linux.org.ru/books/bash-conspect.html, а так же, посмотреть перевод соответствующей man страницы на русский язык здесь: http://ln.com.ua/~openxs/projects/man/solaris8/bash.html.

    Кроме стандартных команд Unix ls, rm, cd, mkdir, для работы с файловой системой можно использовать Midnight Commander, который вызывается командой мс. Midnight Commander является аналогом Norton Commander.
    Переписывание по сети большого количества файлов маленького размера происходит значительно медленнее, чем одного файла, большого размера. Поэтому рекомендуется упаковывать все файлы маленького размера в один архивный файл и в таком виде передавать по сети. Традиционно для этой цели используется команда tar. К сожалению, команда tar, поставляющаяся с AIX, имеет отличный от Linux и FreeBSD набор ключей, поэтому вместо tar лучше использовать архиватор zip.

    Например: zip -v -r -9 src.zip src.

    Здесь ключ -v задаёт так называемый verbose mode - режим, когда пользователь видит какие файлы и насколько сжимаютя; ключ -r - означает, что добавлять файлы в архив нужно рекурсивно, проходясь по всем поддиректориям; -9 - степень сжатия файлов, в данном случае наибольшая; далее идёт имя архивного файла, а затем, список файлов и каталогов которые будут добавлены в архив.

    Для просмотра почты, по умолчанию по завершению задачи пользователю на его почтовый ящик на regatta.cs.msu.su отправляется почта. Для просмотра и манипулирования почтой можно использовать примитивный почтовый клиент mail, а так же более продвинутые почтовые клиенты, такие как mutt и pine. Собственно, мы рекомендуем пользоваться последними 2-мя клиентами.

    Редакторы
    Для редактирования текстов в системе имеются следующие редакторы: vim, emacs. Можно использовать ещё встроенный в Midnight commander, команда mc, редактор mcedit . Самый простой из них mcedit, он наиболее похож на большинство редакторов под Windows, а так же на редактор встроенный в Norton commander и редактор встроенный в FAR manager. К недостаткам можно отнести недостаточно богатые возможности для продвинутой манипуляции с текстом. Значительно более богатые возможности предоставляет редактор vim, однако он значительно более сложный, и более тяжело изучаемый.
    vim работает в нескольких режимах: режим команд, режим ввода текста, так называемый визуальный режим. При запуске редактора пользователь попадает в режим ввода команд. Команды делятся на 2-категории: команды редактору, команды по манипулированию с текстом. Все команды начинаются с символа двоеточие. Некоторые команды ассоциированы с клавишами клавиатуры. В режиме ввода текста осуществляется ввод и редактирование текста самым обычным образом, в этом случае нажатие на клавишу приводит к набору соответствующего символа, в отличии от режима команд, где клавиша может вызывать команду. Переход из текстового режима в режим ввода команд осуществляется по нажатию клавиши < ESC >. В режим вставки текста можно перейти нажав < i > или < insert >. В режим замены текста или . Визуальный режим позволяет выделить многострочный фрагмент текста и применить к нему команду. Переход в визуальный режим осуществляется по нажатию клавиши . Список некоторых команд редактора vim:
    q - выход из редактора
    w - записать редактируемый текст в файловую систему.
    d - удалить строчку
    число - перейти на нужную строчку
    s - поиск и замена.
    h - помощь по редактору.
    w! - попытаться записать в файловую систему, даже если файл открыт только для чтения.
    q! - выйти из редактора даже в том случае, если редактор считает, что это опасно. Например есть не сохраненный текст.
    y - копировать в буфер.
    p - вставить из буфера.


    Подготовка заданий (компиляция программ)


    Для компилирования программ на комплексе установлены фирменные компиляторы IBM (Visual Age for AIX) поддерживающие языки программирования C, C++, Fortran77, Fortran90. С помощью комплекта компиляторов, присутствующих на системе можно собирать как обычные программы, так и программы, использующие OpenMP и MPI.
    компилятор	Программы	Программы 	Обычные 
                     OpenMP           MPI           программы
    C 		Xlc_r		mpicc 		xlc
    С++ 		XlC_r		mpiCC 		xlC
    Fortran77 	Xlf_r		mpif 		xlf
    Fortran90 	xlf90_r		mpif90 		xlf90
    


    Для всех компиляторов, не только компиляторов IBM, но и gcc, а так же большинства других компиляторов, имеются следующие ключи:

    -I include_dir - опция, которая задаёт пути для поиска include файлов.
    -L library_dir - задаёт пути для поиска подключаемых библиотек.
    -l library_name - линкует с указанной библиотекой,
    -c - только компиляция без линковки.
    -g - добавление отладочной информации в бинарный код, после этого при запуске программы через отладчик будет доступна информация об исходном коде программы.
    -o file_name - задаёт имя файла, который будет получен как результат деятельности компилятора, например: xlc -o test test.c sub_test.c будет создан бинарный файл, который собственно и есть программа, которую можно исполнять.
    -O - Опция начального уровня оптимизации.

    Нестандартные ключи компиляторов IBM:

    -qsmp=omp обеспечивает возможность писать программы с использованием OpenMP стандарта.
    -qsmp=auto для автоматического распараллеливания программ для SMP архитектур,
    -qarch=pwr4 - тогда компилятор будет генерировать оптимальный код для Power4 процессоров.
    -q64, -q32 - используются для указания, сколько разрядный код генерировать. Если ключ не указан, то по умолчанию установлен ключ -q64
    -b64, -b32 - указывает линкеру ld связывать 64-битные объекты или 32-х битные.
    -qlanglvl=extc99:ucs для использования в тексте кода комментариев на русском языке;
    -cpluscmt при использовании символа комментария "//" в коде на С.
    -qhot оптимизация кода с принудительным внедрением параллелизма внутрь кода, здесь начинает использоваться параллелизм функциональных устройств архитектуры Power4. Тем самым, можно добиться ускорения на одном Power4 процессоре до 8-раз. При этом нарушается последовательность команд, которая была задана в исходном файле. В результате, программа становится недетерминированной.
    -bmaxdata=size которая задаёт максимальный размер выделяемой динамически памяти в байтах. Эту опцию стоит использовать если возникают проблемы с использованием большого объёма динамической памяти программой написанной на C или C++. ( bmaxdata=0x1000000000 - размер выделяемой динамической памяти в 1Gb. )
    -qlargepage будут использоваться большие таблицы виртуальной памяти, что увеличит производительность программы, если она использует большие объёмы памяти.

    Посмотреть более подробную информацию об опциях компиляторов вы можете, набрав в командной строке xlc - для С, и xlf - для Фортрана.

    Примеры:

    xlc_r -qsmp=omp -O3 -qarch=pwr4 -q64 -o my_c_program *.c

    скомпилирует все находящиеся в данной директории *.c файлы в исполняемый 64-х разрядный файл с именем my_с_program, оптимизирует его под имеющуюся архитектуру, и учтет все директивы OpenMP. Можно попытаться использовать опцию автоматического распараллеливания:

    xlf_r -qsmp=auto -qarch=pwr4 -q64 -o my_fortran_program *.f

    Посмотреть более подробную информацию об опциях компиляторов вы можете, набрав в командной строке xlc - для С, и xlf - для Фортрана.

    Для сборки собственных программ рекомендуется использовать make. На комплексе установлено, на текущий момент, 2-разновидности make. Первая - разновидность, предоставляемая вместе с AIX от IBM, вторая - GNU разновидность make. GNU версия make вызывается по команде gmake. Как показывает практика, gmake выдаёт более информативные сообщения. Для использования make необходимо написать Makefile. Самое начальное описание того, как писать Makefile на русском языке
    http://www.linux.org.ru/books/make.html. Полное описание GNU make можно найти на сайте http://www.gnu.org/software/make/.

    Для создания и запуска программ написанных с использованием MPI стандарта на комплексе установлен пакет mpich версии 1.2.5. Компиляция программ, использующих MPI производится при помощи стандартных для Mpich утилит:
  • mpicc - C компилятор;
  • mpiCC - С++ компилятор;
  • mpif - Fortran 77 компилятор;
  • mpif90 - Fortran 90 компилятор.

  • Для получения дополнительной информации можно читать мануалы (man mpirun, man mpicc, man mpiCC, ... )

    Запуск заданий


    Запуск заданий происходит через стандартный планировщик IBM LoadLeveler. При постановке задания в очередь пользователь может указать число процессоров и максимальное время счета (по умолчанию 1 процессор и 10 минут) и другие параметры. При наличии достаточного числа свободных процессоров задание начнет выполняться. После постановки на счет задание будет выполняться не больше указанного времени, если оно не успеет завершиться само - его удалит планировщик.
    На данный момент (12.03.04) задания делятся по заказанному времени работы на три класса:

    short - задания продолжительностью до 5 минут
    test - задания продолжительностью до 31 минуты для проведения коротких тестовых расчетов;
    night - задания большей продолжительности.

    short имеет приоритет перед заданиями test, а test перед заданиями night. Если в очереди возникает задание более высокого приоритета, оно начинает выполняться, а задание с более низким приоритетом переходит в режим ожидания.

    Постановка в очередь

    Для обращения к планировщику используются специальные скрипты bompsubmit и mpisubmit.

    ompsubmit - для заданий, использующих OpenMP
    mpisubmit - для заданий, использующих MPI

    Синтаксис и семантика их использования следующие:

    <имя скрипта> [ параметры скрипта ] <исполняемый файл задачи> [ параметры задачи ]
    -w <лимит счетного времени>
    -n <число процессоров>
    -m <почтовый адрес>
    -stdout <файл для потока вывода>
    -stdin <файл для потока ввода >
    -stderr <файл для потока ошибок >

    Обязательным параметром является только имя задания, для остальных параметров существуют умолчания.

    ключ

    Наименование

    Значение по умолчанию

    Примечание

    -w

    лимит счетного времени

    10 минут

    предполагаемое время счета задания в формате чч:мм:сс или сс, или мм:сс;

    -n

    число процессоров

    1

    требуемое число процессоров,

    максимально 16

    -m

    почтовый адрес

    <username>@regatta.cmc.msu.ru

    На данный адрес будет послана информация по завершению задачи

    -stdout

    файл для потока вывода

    Имя_задания.nnnn.out

     

    в каталог, из которого происходила постановка задания в очередь.

    -stderr

    файл для потока ошибок

    имя_задания.nnnn.err

     

    в каталог, из которого происходила постановка задания в очередь.

    -stdin

    файл для потока ввода

     

     





    Каждому заданию планировщик присваивает уникальное имя regatta.nnnn.0, где nnnn - номер задания. Для постановки "обычных' последовательных заданий и OpenMP заданий в очередь используется скрипт ompsubmit.
    Примеры:

    ompsubmit my_program
    поставит my_program в очередь для работы на 1 процессоре, не более 10 минут.

    ompsubmit -w 25:00 -n 4 my_omp_program its_parameters
    запустит задание my_omp_program с использованием OpenMP на 25 минут на 4-х процессорах, и передаст ему в качестве параметров командной строки "its_parameters".

    ompsubmit -n 16 -w 3:00:00 -m gur@cmc.msu.ru -stdout /home/guru/output/run_1.out prog
    запустит задание prog на 16 процессорах на 3 часа. По завершении будет отправлено письмо по адресу gur@cmc.msu.ru и стандартный поток вывода будет перенаправлен в файл /home/guru/output/run_1.out. Этот подход можно использовать для разделения результатов в случае, если необходимо запустить несколько экземпляров одной и той же программы.

    Для постановки заданий с использованием MPI, соответствующим образом откомпилированных используется mpisubmit.

    mpisubmit -w 25:00 -n 16 my_mpi_program 0.001
    Данная команда запустит задание с использованием MPI на 25 минут на 16-ти процессорах.


    Просмотр состояния очереди

    Для просмотра состояния очереди используется команда llq.

    oz@regatta$llq
    Id Owner Submitted ST Class Time Limit Time Left CPU
    ------------------- -------- ---------------- ---- ------- ------------- ------------ -----regatta.38867.0 oz Jun 16 13:10 Ru short 0:03:00 0:00:00 1
    regatta.38866.0 oz Jun 16 13:10 Ru test_ 0:30:00 0:00:00 1
    regatta.38865.0 oz Jun 16 13:10 Ru night 3:00:00 0:00:00 1
    regatta.38864.0 oz Jun 16 14:10 Pe night 3:00:00 0:00:00 8
    regatta.38863.0 popov Jun 16 13:10 Ru night 3:00:00 0:00:00 8

    Команда выводит на экран текущее состояние очереди. Для каждого задания выводится идентификатор задания (Id), имя владельца (Owner), дата постановки в очередь или запуска (если задача уже стартовала) (Submitted), текущий статус (ST), класс задания (Class), заказанное пользователем время (Time Limit), остаток времени счета (Time Left), заказанное пользователем число процессоров (CPU). Текущий статус (ST) может принимать следующие значения:

    Ru ( Run ) -- задание выполняется в данный момент;
    St ( Starting ) -- задание запускается, производиться предварительная работа;
    Id ( Idle ) -- задание ожидает своей очереди на запуск;
    Pe ( Pending ) -- задание временно приостановлено, потребовались ресурсы для задания из более приоритеного класса.

    Более подробную информацию можно получить по команде: llq -l Для конкретной задачи по команде: llq -l <id задачи (колонка Id)>. Причину, по которой задание не ставится на выполнение, можно выяснить по команде: llq -s <id задания>.

    Удаление задания из очереди

    Для того чтобы удалить задание из очереди или снять его со счёта, нужно воспользоваться командой

    llcancel <id задания>

    Например: llcancel regatta.38867.0

    llcancel -u $USER: удаляет из очереди все задания определённого пользователя.

    Например: llcancel -u oz завершит все задачи пользователя oz, естественно если у вызывающего команду есть права завершать задачи пользователя oz.