1. Удаленный вход на кластер.
  2. Операционная система Linux.
  3. Компилирование последовательных программ (Fortran/C/C++).
  4. Создание параллельной программы с использованием MPI.
  5. Запуск параллельной MPI программы.
  6. Работа с системой пакетной обработки задач.

1. Удаленный вход на кластер.

Для входа на кластер с персонального компьютера, имеющего выход в интернет,   необходимо использовать ssh-клиент.

Пользователям операционной системы Microsoft Windows рекомендуется использовать программу putty. (http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html).

Чтобы установить соединение с кластером при помощи putty необходимо:

  1. В поле Host Name ввести cyberia.tsu.ru, port 22.
  2. Connection type: SSH.
  3. В Category — Window — Translation — Character set translation on received data выбрать UTF-8
  4. В поле Saved Sessions ввести любое удобное название. Нажать кнопку «Save». Под этим именем будут сохранены настройки
  5. Теперь для входа на кластер достаточно загрузить сохраненные настройки, выбрать их в меню Saved sessions и нажать «load».
  6. Нажать «Open».

Сеанс работы с операционной системой начинается с ввода идентификатора пользователя (username) и его пароля (password). Приглашением к вводу идентификатора является фраза «login as». Пароль при вводе не отображается.

Пользователи Unix-подобных операционных систем также могут воспользоваться putty или использовать стандартный консольный ssh-клиент.

Чтобы установить соединение с кластером при помощи стандартного ssh-клиента необходимо:

  1. В командной строке вызвать команду ssh -l username cyberia.tsu.ru или ssh username@cyberia.tsu.ru.
  2. Ввести пароль(password).

Для обмена файлами с кластером пользователям ОС Microsoft Windows  рекомендуется применять программу WinSCP (http://winscp.net/eng/docs/lang:ru) или консольный клиент psftp из пакета putty. WinSCP выполняет все основные операции с файлами, такие как загрузка и выгрузка файлов. Он также позволяет переименовывать файлы и папки, создавать папки, изменять свойства файлов и папок

Для передачи файлов через WinSCP необходимо:

  1. В поле Host Name указать cyberia.tsu.ru, port 22.
  2. Указать User name
  3. File Protocol: SFTP.
  4. Сохранить настройки.
  5. Нажать «login», ввести пароль.

Работа с WinSCP во многом похожа на работу Norton Commander (Far). Также, существует возможность использовать WinSCP Far plugin. (http://winscp.net/eng/docs/fm_plugins)

Для передачи файлов с помощью psftp необходимо:

  1. Запустить psftp.
  2. Вызвать команду open username@cyberia.tsu.ru.
  3. Ввести пароль.

Основные команды psftp:

ls — показывает список файлов и подкаталогов;

get filename— «cкачивает» файл filename на ваш компьютер;

put filename — загружает файл filename из локального каталога на удаленный компьютер;

cd dir – устанавливает текущим каталогом удаленный каталог с именем dir,

Дополнительную справку можно получить командами «help» и «help имя_команды«.

Под Unix-подобными операционными системами можно пользоваться программой sftp, scp или Midnight Commander(пункт меню «shell link»).

2. Операционная система Linux

 

Операционная система (ОС) – это комплекс программ, обеспечивающих управление ресурсами компьютера и процессами, выполняющимися на компьютере, а также взаимодействие пользователей и компьютера.

Linux — это свободная UNIX-подобная операционная система. На кластере установлена операционная система Suse Linux Enterprise Server 10 (SLES).

2.1 Интерфейс ОС Linux

 

В операционной системе Linux при наборе команд, имен файлов и каталогов различаются заглавные и прописные буквы. Процесс общения с ОС Linux осуществляется, в основном, при помощи консольного терминала (при помощи клавиатуры и монитора). После входа в систему на экране можно увидеть один из двух элементов интерфейса Linux: командную строку или графическую оболочку.

Командная строка – традиционный способ общения в Linux. Когда Linux ожидает команду, на экране высвечивается приглашение – «$». Чтобы дать команду системе, нужно в командной строке набрать имя команды, а затем – ее опции и аргументы (могут отсутствовать), разделенные пробелами. После набора ввод команды осуществляется нажатием клавиши ENTER. Команды Linux имеют структуру

command option(s) argument(s)

Опции обычно сопровождаются знаком «минус» и модифицируют поведение команды. Аргументы – это обычно имена каталогов или файлов. Следует помнить, что строчные и заглавные буквы в Linux обрабатываются по-разному, поэтому, например, команды man и Man воспринимаются ОС как различные. Это распространяется и на имена файлов.

Заметим, что каталог пользователя находится в папке /home/user_name корневого каталога системы.

2.2 Некоторые команды Linux

 

Ниже приводятся некоторые наиболее употребляемые команды Linux. Чтобы получить более полную информацию по любой отдельной командеcommand, нужно ввести

man command

Выход из описания команды производится при нажатии клавиши «q».

2.3 Работа с каталогами

 

pwd – показывает название текущей директории;

cd dir – устанавливает текущим каталогом каталог с именем dir, вызов команды cd без параметров возвращает в домашний каталог /home/username ($HOME);

mkdir subdir – создает новый подкаталог с именем subdir;

rmdir subdir – удаляет пустой подкаталог с именем subdir;

ls – показывает список файлов и подкаталогов текущей директории,

ls dir – показывает список файлов и подкаталогов каталога dir;

ls –A — показывает все файлы, в том числе и скрытые;

ls –l — показывает атрибуты (владелец, разрешение на доступ, размер файла и время последней модификации);

mv oldname newname — изменяет имя подкаталога или перемещает его;

cp -R dirname destination — копирует подкаталог dirname в другое место destination.

2.4 Работа с файлами

 

file filename(s) — определяет тип файла (например, ASCII , JPEG image data и др.)

cat filename(s) — показывает содержание файлов (используется только для текстовых файлов!);

more filename(s) — действует так же, как и cat, но позволяет листать страницы;

less filename(s) – улучшенный вариант команды more;

head filename — показывает первые десять строк файла filename;

tail filename — показывает последние десять строк файла filename;

wc filename(s) — показывает число строк, слов и байт для указанного файла;

rm filename(s) — уничтожает файлы или директории, для рекурсивного удаления следует использовать rm с ключом -rf.

cp filename newname — создает копии файлов с новыми именами;

cp filename(s) dir- копирует один или более файлов в другой каталог;

mv oldname newname — изменяет имя файла или каталога;

mv filename(s) dir — перемещает один или более файлов в другой каталог;

find dir -name filename — пытается локализовать файл (подкаталог) filename рекурсивно в подкаталоге dir.

2.5 Другие полезные команды

 

passwd — изменяет пароль пользователя системы Linux; требует подтверждения старого;

who – показывает, кто в настоящее время работает в сети;

finger – дает более подробную информацию о пользователях сети;

write – позволяет послать сообщение пользователю, работающему в сети в данное время;

top — отображает информацию о процессах, использующих процессоры узла;

ps –U user_name — показывает номера процессов(pid), инициированных пользователем user_name;

kill xxxxx – досрочно завершает работы процесса с номером xxxxx;

killall proc_name— досрочно завершает работу процесса proc_name;

date — отображает дату и время;

cal – показывает календарь.

exit – выйти из терминала

clear – очистить окно терминала

du dir– показывает занятое место в директории dir

Для облегчения взаимодействия с ОС были предложены программы-оболочки, которые делают наглядным и простым выполнение следующих базовых операций над файлами и каталогами:

перемещение по каталогам и подкаталогам;

создание и удаление подкаталога;

просмотр, редактирование файла;

копирование, перенос, переименование, удаление файлов;

запуск программ и др.

В ОС Linux к таким программам-оболочкам относится Midnight Commander, который в основных чертах аналогичен известным оболочкам операционных систем DOS и Windows – Norton Commander и FAR. Запуск Midnight Commander осуществляется выполнением команды mc. Выход  производится после последовательного нажатия клавиш F10 и Enter.

2.6 Редактирование файлов

 

Текстовый редактор необходим для изменения содержания текстового файла или подготовки и редактирования текста программы на каком-либо языке программирования. В операционной системе Linux кластера ТГУ СКИФ Cyberia используются редакторы vim, mcedit.

Редактор vim – простой, но очень мощный, однако неопытным пользователям не рекомендуется его применять. Выход из редактора без сохранения изменений редактируемого файла – :qa!.

Встроенный в Midnight Commander редактор mcedit гораздо проще в работе.

Запуск этих редакторов в командной строке производится следующим образом:

vi(m) filename

mcedit filename

Если же используется программа-оболочка (Midnight Commander), то нужно установить курсор на filename и нажать клавишу F4. Загрузится редактор, настроенный на действие этой опции.

3. Компилирование последовательных программ(Fortran/C/C++)

 

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

На вычислительном кластере установлены компиляторы Intel (icc, ifort) и компиляторы GNU (gcc, gfortran). Рекомендуется пользоваться компиляторами Intel.

В случае если была подготовлена программа на FORTRAN, то соответствующий текстовый файл должен иметь расширение .f иди .for (например,myprog.f) для программы написанной в соответствии со стандартом FORTRAN 90 — .f90. Чтобы произвести его компиляцию, нужно ввести команду

ifort – O myprog.f –o myprog.exe

Опция – О означает, что будет создан рабочий модуль, оптимизированный с точки зрения скорости выполнения программы, если компилятор не обнаружит ошибки. Подчеркнутая часть команды говорит о том, что рабочий модуль будет иметь имя myprog.out. Если же эта часть будет опущена, то имя рабочей программы будет a.out.

Для компиляции программ, написанных на языке программирования C (С++), используется программа iсc. Более подробно о ifort и icc можно узнать, выполнив команды

man ifort

man icc.

Для запуска рабочего модуля последовательной программы необходимо использовать установленную систему очередей. [см. пункт 6]

4.Создание параллельной программы с использованием MPI

 

Библиотека MPI (Message Passing Interface) была разработана для создания параллельных программ. Реализация MPI-программ позволяет наиболее оптимально использовать кластерный вычислительный ресурс. На вычислительном кластере установлена библиотека MPI, оптимизированная для работы с высокопроизводительной средой передачи данных InfiniPath, входящей в состав вычислительного комплекса.

Кроме самой библиотеки на кластере установлены «привязки» к языкам программирования C, C++ и Fortran. Для облегчения компиляции и сборки программ рекомендуется использовать следующие утилиты:

mpicc — для программ написанных на языке программирования C;

mpixx (mpiCC) — для программ написанных на языке программирования C++;

mpif77 и mpif90 — для программ написанных на языке программирования Fortran.

Синтаксис данных утилит во многом похож на синтаксис компиляторов icc и ifort, более полная информация о синтаксисе доступна по команде man имя_утилиты.

Например, для компиляции программы fisrt.f90 можно выполнить команду

mpif90 -O first.f90 -o first.exe

5. Запуск параллельной MPI-программы

 

Запуск MPI-приложения на вычислительном кластере возможен только через систему пакетной обработки заданий. [см. пункт 6.]

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

Например,

mpirun -np 20 ./first.exe

запустит параллельную программу first.exe на 20 процессорах, т.е. на 5 узлах. (Каждый узел имеет 2 двуядерных процессора). Стоит обратить внимание, что для запуска исполняемого модуля находящего в текущей директории ($pwd) необходимо явно указать путь «./»

6. Работа с системой пакетной обработки задач

 

На вычислительном кластере установлена система пакетной обработки заданий torque. Данная система предназначена для контроля вычислительных ресурсов и выделения их под задачи пользователя.

Скрипт mpirun помещает задачу в очередь, но при таком подходе на каждом узле будет использоваться максимальное количество процессоров/ядер, т.е. задача будет запущена 4 раза на каждом вычислительном узле. В некоторых случаях, например при использовании OpenMP, MPI+OpenMP или для запуска последовательных программ целесообразно использовать систему пакетной обработки заданий.

6.1 Основные команды

 

qstat — утилита для просмотра состояния очереди заданий. По команде «qstat -f» на экране выводится полный список задач с параметрами.

qsub — утилита для установки задачи в очередь на выполнение. По данной команде в очередь на выполнение будет поставлен сценарий оболочки, из которого происходит запуск самой вычислительной задачи. При постановке задачи на выполнение пользователь указывает требуемое количество ресурсов, а также дополнительные параметры, такие как: рабочая директория, имена файлов вывода стандартных поток stdout и stderr, имена переменных для передачи в качестве системного окружения задачи и т.д. Полное описание ресурсов задачи можно получить по команде man pbs_resources, а описание атрибутов задачи по команде man pbs_job_attributes.

Пример

qsub script.sh

Синтаксис script.sh

#PBS -o $DIR/stdout.log

Определяет имя файла, в который будет перенаправлен стандартный поток stdout

#PBS -e $DIR/stderr.log

Определяет имя файла, в который будет перенаправлен стандартный поток stderr

#PBS -l nodes=8:ppn=2:cpp=1

Определяет какое количество узлов и процессоров на них необходимо задействовать.

nodes —  количество узлов

 ppn — число процессоров на узле

 cpp — число процессов на процессоре

#PBS -l walltime=20:00:00

Определяет максимальное время счета задания

#PBS -l mem=1000mb

Определяет количество необходимой оперативной памяти

cat $PBS_NODEFILE | grep -v master | sort | uniq -c   | awk ‘{printf «%s:%s\n», $2, $1}’ > $PBS_O_WORKDIR/temp.tmp

Составляет список узлов в необходимом формате, на которых будет запущена задача и записывает их в файл temp.tmp

cd $PBS_O_WORKDIR

/usr/bin/mpirun.ipath -m temp.tmp –np 100 ./a.out

Запускает на узлах указанных в файле temp.tmp задачу 100 раз.

Пример скрипта:

#PBS -o $DIR/stdout.log

#PBS -e $DIR/stderr.log

#PBS -l nodes=50:ppn=2

#PBS -l walltime=20:00:00

#PBS -l mem=1000mb

cat $PBS_NODEFILE | grep -v master | sort | uniq -c   | awk ‘{printf «%s:%s\n», $2, $1}’ > $PBS_O_WORKDIR/script1.temp.sh.mf

cd $PBS_O_WORKDIR

/usr/bin/mpirun.ipath -m script1.temp.sh.mf -np 100 ./a.out

Здесь будет запущена параллельная программа a.out на 50 узлах, с каждого узла будет использоваться 2 процессора. Файл вывода стандартного потока stdout — stdout.log, стандартного потока stderr — stderr.log. $DIR содержит путь к файлам stdout.log и stderr.log, например может принимать значение /home/user_name. Под задачу отведено 20 часов. Необходимое количество памяти 1000 мегабайт.

Для запуска последовательной программы first.exe можно использовать следующий скрипт:

#PBS -o $DIR/stdout.log

#PBS -e $DIR/stderr.log

#PBS -l walltime=10:00

#PBS -l mem=100mb

./first.exe

При запуске программы через команду qsub заданию присваивается уникальный целочисленный идентификатор.

qsub script.sh

Starting MPI job under Torque resource manager…

20213.master.cyberia.tsu.ru

Здесь идентификатор 20213.

qdel – утилита для удаления задачи. В случае, если задача уже запущена, процесс ее работы будет прерван. Синтаксис данной утилиты следующий:

qdel [-W время задержки] идентификаторы задачи.

Выполнение такой команды удалит задачи с заданными идентификаторами через указанное время. Если часть вычислительных узлов, на которых выполнялась задача, недоступны, то принудительно удалить ее с сервера можно путем добавления ключа -p.

Более подробное описание синтаксиса команд можно получить, выполнив команду

man имя_утилиты,