Технология работы с многопроцессорными системами в ЮГИНФО ЮФУ
(краткое руководство для студентов)

    Оглавление

Организация работы
    Вычислительные ресурсы, предоставляемые для обучения параллельному программированию и работе в среде UNIX, представлены в разделе "Ресурсы". Учебный комплекс составляют:

    Учебный кластер работает под управлением диспетчерской системы управления заданиями OpenPBS. Одновременно на кластере может обрабатываться не более 6 обычных однопроцессорных программ. Параллельная программа может использовать до 6 процессоров Linux-кластера. Компиляция программ для кластера выполняется на компьютере HP NetServer, запуск на исполнение либо с этого компьютера, либо с SUN Ultra 60. Если при запуске задания необходимые ресурсы отсутствуют, оно ставится в очередь до освобождения требуемых ресурсов. Имеется достаточно подробная инструкция по работе с системой PBS.

   На двухпроцессорной SUN Ultra 60 через систему PBS можно запускать либо две однопроцессорных задачи, либо одну двухпроцессорную.

    Многопроцессорная система nCUBE 2S диспетчерской системой в настоящее время не обслуживается. Подготовка и запуск заданий для nCUBE 2S выполняется студентами с компьютера SUN Ultra 60 (rsusu2). Для отладки программ на nCUBE 2S с помощью отладчиков необходимо войти на хост-компьютер SGI (sgi1). Более подробную информацию  по работе с nCUBE см. здесь.

Регистрация пользователей-студентов
    Доступ к учебным ресурсам суперкомпьютерного центра ЮФУ студенты получают после регистрации. которая выполняется системным администратором (к. 215 ЮГИНФО ЮФУ) по спискам, представленным преподавателем, или по представлению научного руководителя. Для работы с компьютером SUN Ultra 60 и учебным Linux-кластером регистрация выполняется в сетевой информационной службе (NIS). В результате регистрации пользователи получают идентификационное имя (login) и временный пароль, который после первого соединения с системой должен быть заменен на постоянный (рекомендуется менять пароли не реже одного раза в месяц). Изменение пароля в NIS на rsusu2 выполняется командой:
yppasswd
а в локальной базе данных (host-компьютер nCUBE - sgi1) командой:
passwd
Регистрация сохраняется до окончания учебы в университете, поэтому надо запомнить свой логин и пароль.

Дисковое пространство
    Для каждого зарегистрированного студента на компьютере SUN (rsusu2) создается его домашняя директория /space/users/$USER, только в пределах которой он может создавать свои каталоги и файлы. Объем выделяемого дискового пространства ограничен квотой в 6 Мб, что вполне достаточно для выполнения всех заданий и хранения всех написанных программ. После исчерпания квоты новые файлы нельзя создать ни с помощью команд, ни с помощью программ.
    Для эффективного использования дискового пространства рекомендуется оставлять на длительное хранение только окончательные тексты программ в виде сжатого архива. Желательно собрать их в отдельную директорию и упаковать командой:
gtar cvzf dir.tar.gz dir
где dir - имя упаковываемой директории. В результате выполнения команды будет создан файл dir.tar.gz, после чего каталог dir может быть удален. Напрямую работать с архивом как с директорией позволяет файловый менеджер Midnigth Commander (mc). Для распаковки архива следует использовать команду:
gtar xvzf dir.tar.gz
которая восстановит каталог dir, при этом архивный файл не уничтожается.
    Домашняя директория студента /space/users/$USER с компьютера SUN (rsusu2) экспортируется на все компьютеры учебного Linux-кластера, host-компьютер HP NetServer (rsuss1), а также на host-компьютер SGI (sgi1), управляющий мультипроцессором nCUBE. Это позволяет работать на любой из этих систем без пересылки файлов. Наиболее оптимальный вариант состоит в том, что все манипуляции с файлами (редактирование, удаление, архивирование, пересылка по ftp и т.д.) выполняются на компьютере Sun (rsusu2), где файлы реально находятся.
    Здесь же следует выполнять контроль занятого дискового пространства и текущего значения квот на  дисковое простанство и на  количество файлов, которые могут быть созданы пользователем. Выполняется это командой:
quota -v
Числа, относящиеся к дисковому пространству, выдаются в килобайтах.
Более детальную информацию об объеме дискового пространства, занимаемого каждой директорией, находящейся в текущем каталоге, выдает команда:
dus

Доступ к UNIX системам
    Доступ к высокопроизводительным системам разрешен со всех компьютеров внутренней сети ЮФУ с помощью команд соединения с удаленной системой (telnet, rlogin, ssh, ftp). Для компьютеров, находяшихся за пределами университетской сети, необходима специальная регистрация этих компьютеров, и соединение разрешено только по защищенным протоколам. При использовании в качестве рабочих мест персональных компьютеров с операционной системой Windows на них должны быть установлены соответствующие клиентские программы (telnet, ftp). Такие клиентские программы имеются в стандартном программном обеспечении Windows, однако они, как правило, не очень удобны в работе. В качестве терминальной программы мы рекомендуем использовать SimpTerm. Это очень простая и надежная программа, не требующая инсталляции - достаточно разархивировать ее в какой-либо каталог и создать для нее ярлык на desktop'e. Для пересылки файлов можно использовать Windows Commander. При передаче текстовых файлов в текстовом режиме это приложение производит необходимое преобразование из DOS-формата в UNIX-формат и наоборот. Если приложение, которое вы используете, такого преобразования не выполняет, то на компьютере SUN можно использовать команды dos2unix и unix2dos. Имеется команда рекурсивного преобразования всех файлов во вложенных директориях из DOS-формата в UNIX-формат:
dos2unixr dirname.

Создание текстов программ
   Для манипуляций с файлами используются стандартные UNIX команды cp, rm, mv, diff, cat и так далее.
Описание этих команд можно посмотреть, набрав:
man command
   Достаточно удобные средства для управления файлами предоставляет mc - эквивалент Norton commander'a, наиболее корректно и в полном объеме он работает в окнах xterm, т.е. требует оболочки X-windows. Однако, вполне приемлемо он работает и в окне упоминавшегося выше терминального клиента SimpTerm, если последний правильно настроен (наша ссылка на такой настроенный вариант).
   Рекомендуется каждый новый проект начинать с создания директории, в которой будет находиться программа. Текст программы может состоять из одного или нескольких файлов. В именах файлов рекомендуется использовать расширения для файлов, содержащих программы на языке С, и .f для файлов, содержащих программы на Фортране. Язык C++ на nCUBE не поддерживается. Допускается использование других расширений, но это значительно усложнит жизнь (невозможно будет использовать готовые Makefile).
Создание директории возможно двумя способами:
а) с помощью команды mkdir dirname
б) в файловом менеджере mc c помощью клавиши F7.
   Вход в созданный каталог выполняется командой
cd dirname

    Для модификации текстов программ на UNIX системах имеется множество текстовых редакторов. Если на компьютере, с которого вы работаете, нет X-сервера, то можно использовать терминальные редакторы:

  1. vi - стандартный редактор, работающий на всех без исключения UNIX системах;
  2. fpted - простой экранный редактор, работающий в терминальных окнах, достаточно удобен в работе, имеет строку подсказки, help и меню;
  3. mc - содержит встроенный экранный редактор, вызываемый клавишей F4 (ESC 4, если клавиша F4 не работает).

   На компьютере Sun в редакторе mc нельзя создать новый файл, поэтому создать пустой файл с нужным расширением можно с помощью команды
touch filename.c (или filename.f)
затем открыть этот файл в редакторе mc c помощью клавиши F4 и набрать текст программы.

   Файл может быть набран на PC под Windows и переписан на rsusu2 с помощью какого-либо клиента FTP обязательно в текстовом режиме.

Организация компиляции программ
    Переписать с помощью mc из каталога /export/tutor/parallel/templates в рабочий каталог один из универсальных Makefile's (в зависимости от языка программирования Makefile.c или Makefile.f).
   Переименовать его, убрав расширение с помощью команды
mv Makefile.c Makefile
   Открыть Makefile в каком-либо редакторе и задать подходящие значения 3-м первым переменным:
ARCH - определяет архитектуру, для которой будет создаваться программа (возможные значения NCUBE, LINUX или SUN);
PROG - определяет имя исполнимого файла;
OBJ - список файлов, содержащих текст программы, причем каждому файлу указать расширение .o.
Кроме этого, в Makefile определены имена вызываемых компиляторов, их опции, пути поиска include-файлов и подключаемые библиотеки.

   При переходе к компиляции для другой архитектуры (например, после компиляции для nCUBE начинается компиляция для LINUX или наоборот) нужно выполнить команду
make clean
для удаления объектных файлов предыдущей компиляции. Иначе будут использоваться объектные файлы чужой архитектуры.

Компиляция и запуск программ для nCUBE
   Для компиляции программы для nCUBE переменной ARCH должно быть присвоено значение NCUBE. Компиляция выполняется на rsusu2 с помощью команды make.
В случае успешной компиляции будет создан исполнимый файл с именем $(PROG)_NCUBE, (например, pi_NCUBE). Здесь $(PROG) означает подстановку значения переменной PROG.
Eсли компиляция неуспешная, внести исправления в программу и повторить команду make.
Буфер передачи данных на nCUBE имеет объем 64K, т.е. Вы можете передать массив данных одинарной точности из 16000 элементов, двойной - 8000 элементов. При попытке передать больше данных происходит зависание программы, а иногда и всего nCUBE. Чтобы этого избежать, следует увеличить объем буфера опцией -Ncomm xxxxxx, где хххххх размер буфера в байтах. Это можно делать как на этапе компиляции программы, так и при запуске командой xnc. Такая опция стоит в образце Makefile. Эта проблема отсутствует на Linux-кластере.
   Запуск программы на исполнение на nCUBE выполняется на rsusu2 командой
xnc -d n $(PROG)_NCUBE
где n - размерность подкуба, определяющая число процессоров, равное 2**n.
Снять программу с выполнения можно командой nkill прямо на машине rsusu2, т.е. не обязательно запускать команду nkill на sgi1.
   Иногда происходит зависание узлов nCUBE, что проявляется в зависании даже совершенно правильных задач. При подозрении на такую ситуацию ее можно проверить, запустив тестовую программу tncube 6, которая запускает вычисление числа PI на всех 64-х процессорах. Если отклика нет более 10-15 секунд, значит, какой-то из узлов nCUBE завис, и требуется перезагрузка nCUBE. Об этом следует сообщить администратору root@rsusu1.rnd.runnet.ru или по телефону 297-50-93 (к.215, Виктору Николаевичу). До перезагрузки NCUBE можно переключиться на работу с кластером.

Компиляция и запуск программ для LINUX кластера
   Для компиляции программы для LINUX кластера необходимо:
- в Makefile переменной ARCH присвоить значение LINUX;
- соединиться с машиной rsuss2, (команда r rsuss2);
- перейти в рабочий каталог;
- выполнить команду make.
В случае успешной компиляции будет создан файл $(PROG)_LINUX.
   Запуск программы на исполнение на LINUX-кластере может выполняться и на rsusu2, и на rsuss1 c помощью команды
qsub -q LINUX script
где script - запускающий скрипт, в котором указываются требуемые ресурсы и запускающая команда. Образцы скриптов находятся в директории /space/tutor/parallel/templates.
   При запуске заданию присваивается некоторый целочисленный идентификатор. По этому идентификатору можно снять задание с выполнения или из очереди командой qdel <id> или проследить его состояние с помощью команды qstat -ak.

   Запускающий скрипт автоматически генерируется интерактивной командой qpbs, которая задает интуитивно понятные вопросы и предлагает некоторые подходящие варианты ответов. Перед выполнением этой команды программа уже должна быть скомпилирована и исполнимый файл уже должен существовать.

Внимание! Программа, запускаемая на LINUX кластере, не должна содержать ввода с клавиатуры (значения либо присваиваются в программе, либо считываются из файлов).
Вывод на консоль возможен, но он будет буферизоваться и запишется в специальный файл по окончанию решения задачи. Можно просматривать результаты решения в процессе выполнения программы, если в PBS-скрипте использовать механизм перенаправления вывода.

Результат автоматически записывается в файлы, имена которых генерируются из имени скрипта и идентификатора. Для каждого задания формируется два файла: в один пишется канал диагностики, в другой - канал вывода.

Для проверки работоспособности Linux-кластера написана команда cltest, аналогичная команде tncube 6 для nCUBE. Она также запускает вычисление числа PI на 6-ти узлах через систему PBS. Для синхронизации окончания решения и распечатки файла результатов введена временная задержка 10 сек. Команды tncube 6 и cltest полезны также для сопоставления производительности двух параллельных систем и их вычислительных узлов (напоминаем, что 1 mflops - это 1 миллион операций в секунду).

Визуализация результатов
    Пакетная обработка заданий не предполагает интерактивной выдачи результатов. Тем не менее, существует возможность просмотра результатов программы, запущенной в пакетном режиме, в процессе ее решения. Для этого можно использовать механизм перенаправления выдачи в файл. В PBS скрипте в строке запуска программы записывается конструкция:

./progname > out.dat
Здесь out.dat - имя файла, в который будет перенаправляться информация, выдаваемая на терминал. Тогда, после запуска программы в пакетном режиме можно набрать на терминале команду:
tail -f out.dat ,
которая будет выдавать на терминал информацию по мере ее записи в файл. Прервать просмотр без всякого ущерба для задачи можно, нажав клавиши Ctrl C (ни в коем случае Ctrl Z). Точно так же в любой момент можно возобновить просмотр.
    Чаще всего под визуализацией результатов понимается их обработка в программе и выдача на экран в графическом виде. Пакетная обработка не препятствует такому режиму выполнения задания. Более того, графическая информация может быть выдана на экран любого компьютера (не обязательно того, с которого запущено задание). Однако, для этого должны быть соблюдены два условия:
  1. На компьютере, на экран которого будет выдаваться графическая информация, должен быть запущен Х-сервер в момент начала выполнения программы.
  2. Должен быть разрешен доступ к Х-серверу с того компьютера, на котором выполняется задание.
При несоблюдении этих условий задача будет снята с решения.
    Для того, чтобы организовать такой режим работы, в программу должна быть передана переменная окружения DISPLAY, указывающая адрес экрана, куда должна выдаваться графическая информация. Делается это добавлением в PBS скрипт специальной строки, например:
#PBS -v DISPLAY=rsusu2.cc.rsu.ru:0.0
Здесь rsusu2.cc.rsu.ru - имя компьютера, на экран которого будет выдаваться графическая информация.
Некоторые пакеты и библиотеки графических подпрограм позволяют выдавать результаты в графические файлы (GIF,PS и т.д.). Разумеется, такой режим возможен только для статических картинок, однако это избавляет от необходимости соблюдения условий 1 и 2. В целях унификации программного обеспечения графические пакеты по возможности устанавливаются на все вычислительные системы, но в наиболее полном объеме они поддерживаются на компьютере SUN (rsusu2).

Информационные команды
    Для получения информации о текущем состоянии вычислительных узлов и очередей заданий имеется ряд команд. Приведем некоторые из них.

Служба новостей
    В системе работает служба новостей, которая показывает только непрочитанные новости. Чтобы повторно просмотреть все предыдущие сообщения, нужно набрать команду
news -a

Вопросы по организации работы направляйте по адресу:  root@rsusu1.rnd.runnet.ru
или звоните по телефону: (863) 219-97-13
контактное лицо: Дацюк Виктор Николаевич, начальник сектора