Компиляция приложений

Для компиляции MPI-приложений рекомендуется использовать скрипты, находящиеся в домашнем каталоге пользователя в директории /home/$user/bin т.к. в них прописаны все параметры оптимизации и параллельные библиотеки.

Компиляция программы пользователя programm.c, находящейся в кталоге /home/$user/bin с помощью компилятора GNU C 3.2.1 производится командой

./gnuсc programm.c

и компилятором Intel 5.0 соответственно

./intelcc programm.c

Также вы можете воспользоваться командами mpicc (для программ на С), mpiCC (для программ на С++), и mpif77/mpif90 (для программ на Фортране 77/90), но полученный исполняемый файл не будет оптимизирован для данной среды и для расчета задания потребуется больше времени.

mpif77 -fast -o program program.f

mpiCC -c programm.c

Для сборки многомодульных приложений целесообразно пользоваться утилитой make. Простейшие примеры MPI-программ на С и Фортране 77/90 доступны в /usr/local/examples.

Рекомендуется писать программы таким образом, чтобы при прекращении работы задания по какой-либо причине при следующем запуске программы расчет шел не с начала, а с последнего шага.

Оболочка и текстовые редакторы

В качестве пользовательского командного интерпретатора используется bash, справку по которому можно получить командой "man bash". Для редактирования файлов на системе доступны текстовые редакторы joe и vi. Также доступна NC-подобная оболочка "Midnight Commander" (mc).

Удаленный доступ

Доступ к ресурсам ЦВВ производится по протоколу SSH2. На сервере можно закачать простой и удобный SSH клиент PuTTY.

Из настроек для доступа достаточно указать

HosName

host.name

Port

22

Protocol

SSH

После первого подключения клиент выдаст запрос о хранении ключа

have no guarantee that the server is the computer you

think it is.

The server's key fingerprint is:

ssh-rsa 1024 7b:e5:6f:a7:f4:f9:81:62:5c:e3:1f:bf:8b:57:6c:5a

If you trust this host, hit Yes to add the key to

PuTTY's cache and carry on connecting.

If you want to carry on connecting just once, without

adding the key to the cache, hit No.

If you do not trust this host, hit Cancel to abandon

the connection.

Для сохранения ключа в памяти ответьте yes, если выхотите произвести только одно подключение можете нажать No. Cancel отмена соединения.

Указав свой логин и пароль, выданные администратором, вы подключаетесь к серверу и оказываетесь в своем домашнем каталоге /home/$user/.

Чтобы не указывать все параметры заново, их можно сохранить в виде сессией и для запуска PuTTY сессии, сохраненной, например, под именем mysession, достаточно создать Windows-ярлык с командой

"\path\name\to\putty.exe" @mysession

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

putty -cleanup

которая удаляет всю информацию о соединении из памяти компьютера.

Для загрузки Ваших программ на сервер и получения результатов расчетов используйте программу psftp.exe ( она использует протокол SSH2 ). При подключения используйте команду

psftp username@host.name

Или после запуска psftp.exe в командной строке

open host.name

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

ls

Просмотр содежиого удаленного каталога

cd

Смена удаленного каталога

put

Загрузка файла из локального каталога psftp на удаленный компьютер, имя файла указывается как параметр

get

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

quit

Завершение соединения

Файл помощи putty.hlp

Базовые команды ОС Linux

Для пользователей, не знакомых с операционной системой Linux, приводим базовые команды, необходимые для работы: cd - сменить текущий каталог.

Справку по любой команде можно получить командой man имя_команды

Система управления заданиями

Для управления заданиями на кластере ОмГУ используется бесплатно распросраняемая версия диспетчерской системы OpenPBS ( Portable Batch System - PBS). PBS обеспечивает управление выполнением заданий на вычислительных узлах

Используется устанавливаемый по умолчанию планировщик FIFO, сконфигурированный для эксклюзивного выполнения одного счетного процесса на каждом из 20 процессоров. Таким образом, на 2-х процессорных узлах может выполняться либо одна 2-х процессорная задача, либо 2-е однопроцессорных. Соответственно на кластере либо одна 20-ти процессорная, либо 20 однопроцессорных ( или какие-то промежуточные варианты). PBS автоматически распределяет задания по свободным узлам заданной архитектуры.

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

По истечении заказанного времени решения задача автоматически снимается со счета.

Работа с диспетчерской системой

Запуск исполнимой программы выполняется специальной командой qsub, c помощью запускающего скрипта (командного файла), в котором указывается запускаемая программа, и требуемые ресурсы ( архитектура, число процессоров, время решения ).

qsub <script_name>

< script_name> - имя запускающего скрипта, который находится в каталоге пользователя /home/$user/bin или может быть создан любым текстовым редактором Linux.

В простейшем случае для запуска однопроцессорной программы на Linux-кластере нужно сформировать файл ( nonmpi.script ) следующего содержания:

#!/bin/sh

### Имя Задания

#PBS -N test

### Файлы вывода

#PBS -e test.err

#PBS -o test.log

### Число узлов (требуется свойство linux)

#PBS -l nodes=1:linux

# Рабочий каталог задания

echo Working directory is $PBS_O_WORKDIR

cd $PBS_O_WORKDIR

# Информация о задании

echo Running on host `hostname`

echo Time is `date`

echo Directory is `pwd`

echo This jobs runs on the following processors:

echo `cat $PBS_NODEFILE`

# Define number of processors

NPROCS=`wc -l < $PBS_NODEFILE`

echo This job has allocated $NPROCS nodes

### Имя запускаемой программы

progname

В данном случае будет сформирована однопроцессорная задача для решения на Linux-кластере программы с именем progname и с заказом времени по умолчанию 1 час.

Конструкции #PBS распознаются командой qsub и устанавливают лимиты для задачи.

Указание числа узлов и процессоров #PBS -l nodes=N:ppn=M:linux - где N число запрашиваемых узлов, M - число процессоров на узле.

Указание расчетного времени #PBS -l walltime=01:00:00

-l walltime=4800

Секунды

-l walltime=80:00

Минуты и секунды

-l walltime=1:20:00

Часы, минуты и секунды

Командой cd указывается путь к исполняемой программе. Запуск программы progname должен быть произведен командой:

qsub nonmpi.script

Для запуска параллельной программы на 4-х процессорах Linux-кластера используется тот же самый формат команды, но содержимое скрипта должно быть другим ( скрипт mpirun.script )

#!/bin/sh

### Имя Задания

#PBS -N mpi_prog

### Declare job non-rerunable

#PBS -r n

### Файлы вывода

#PBS -e test.err

#PBS -o test.log

### Число узлов (требуется свойство linux)

#PBS -l nodes=4:ppn=2:linux

### Расчетное время

#PBS -l walltime=03:00:00

# Рабочий каталог задания

echo Working directory is $PBS_O_WORKDIR

cd $PBS_O_WORKDIR

# Информация о задании

echo Running on host `hostname`

echo Time is `date`

echo Directory is `pwd`

echo This jobs runs on the following processors:

echo `cat $PBS_NODEFILE`

# Define number of processors

NPROCS=`wc -l < $PBS_NODEFILE`

echo This job has allocated $NPROCS nodes

# Запуск параллельной MPI программы mpiprog

mpirun -v -machinefile $PBS_NODEFILE -np $NPROCS mpiprog

Здесь заказано время счета 3 часа на 4-х узлах (8 процессорах) Linux кластера для расчета параллельной программы mpiprog. Запуск выполняется командой:

qsub mpirun.script

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

Если для запуска задания системе не хватает запрошенных ресурсов, то задание будет поставлено в очередь (queue), в соответствии с заявленным расчетным временем. В настоящий момент на кластере ОмГУ используются следующие очереди

small

до 20 минут

medium

20 минут - 2 часа

long

2 часа - 12 часов

verylong

12 часов - 72 часа

Первыми на выполнение встанут задания из очередей с наименьшим временем выполнения

Используя в запускающем скрипте конструкции

### Имя очереди (small, medium, long, verylong)

#PBS -q small

можно непосредственно задавать очередь задания.

Информацию о работе программы можно получить, используя команду

qstat

с ключами -a и -f , указывая как параметр идентификационный номер программы

qstat -a 34.server.name

Результат работы программы будет записываться в файл и помещаться в тот каталог, из которого было запущено задание. Имя выходного файла, если не указано на прямую в запускающем скрипте, формируется автоматически следующим образом:
<имя скрипта>.o<номер задания>, a в файл
<имя скрипта>.e<номер задания> - будет записываться стандартный канал диагностики (ошибок).
Замечания:
а) программа не должна быть интерактивной, т.е. содержать ввод с клавиатуры;
б) Рекомендуется писать программы таким образом, чтобы при прекращении работы задания по какой-либо причине при следующем запуске программы расчет шел не с начала, а с последнего шага.

Команды управления заданиями

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

qdel - удаление задания

qhold - поставить запрет на исполнение задания

qmove - переместить задание

qmsg - послать сообщение заданию

qrls - убрать запрет на исполнение, установленный командой qhold

qselect - выборка заданий

qsig - посылка сигнала ( в смысле ОС UNIX) заданию

qstat - выдача состояния очередей

qsub - постановка задания в очередь

По всем вопросам обращайтесь к администратору кластера e-mail.