Компьютерный кластер ИРЭ РАН. Руководство пользователя

Работа пользователей на компьютерах кластера возможна в трех  режимах:

А) терминальный режим (доступ по SSH) - для решения задач с использованием MPI; этот режим предполагает наличие у пользователя начальных навыков работы в операционной системе UNIX,

Б) пакетный режим "SINGLE",

В) пакетный режим "MPI".

1. Регистрация пользователей

Для того, чтобы стать пользователем кластера, необходимо выслать по электронной почте (admin@cluster.cplire.ru) администратору системы следующие анкетные данные:

Содержание

1

Фамилия, имя, отчество (полностью)

2

Место работы (Организация, подразделение, должность)

3

Номер контактного телефона и адрес электронной почты

4

Краткое описание решаемой проблемы

5

Краткое описание алгоритма решения

6

Оценка требуемого вычислительного ресурса для решения задачи (объем оперативной памяти и дискового пространства)

7

Предполагаемый режим работы( А), Б) или В))

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

2. Работа в терминальном режиме

Для обеспечения работы в этом режиме на компьютере пользователя должна быть установлена программа-клиент SSH. После запуска программы-клиента пользователь должен ввести присвоенные ему имя и пароль. Если авторизация прошла успешно, пользователь входит в систему и начинает работу в UNIX оболочке bash.

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

сс

компилятор языка С

СС

компилятор языка С++

f77

компилятор языка FORTRAN77

mpicc

компилятор программ, написанных на языке С с использованием функций MPI

mpiCC

компилятор программ, написанных на языке С++ с использованием функций MPI

mpif77

компилятор программ, написанных на языке FORTRAN77 с использованием функций MPI

mpirun

команда запуска программы, использующей механизм MPI

 Замечания

1. Максимальное количество процессов для одной задачи - 16.

2. Выполнение "непараллельных" программ в этом режиме нежелательно.

3. Работа в пакетном режиме "SINGLE"

При работе в этом режиме пользователь формирует у себя на компьютере пакет задачи, оформленный по правилам, приведенным п.3.1., и высылает его в виде электронного письма по адресу cluster@cluster.cplire.ru.

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

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

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

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

  • в теле пакета не должно содержаться символов ASCII с номерами выше 127.

  • символы табуляции должны быть заменены соответствующим количеством пробелов;

  • размер электронного письма, содержащего пакет, не должен быть больше 1 МБ;

  • файлы данных, формируемые прикладной программой, должны быть текстовыми и не содержать символов ASCII с номерами выше 127;

  • размер файла данных не должен превосходить 1 МБ.

  • электронное письмо должно быть написано в формате text/plane.

       3.1. Описание пакета задачи пользователя ("SINGLE")

Пакет, размещенный в теле электронного письма, обрамляется тэгами

[*BEGIN*] и [*END*]

Наличие обоих тегов в теле письма обязательно!

После тэга [*BEGIN*] в произвольном порядке следуют внутренние тэги пакета, в том числе контейнерные.

В таблице приведены описания тэгов. Обязательная информация взята в угловые скобки (< >).

Синтаксис

 

1

[USER=<имя пользователя>]

Описание

2

[USERMAIL=<адрес электронной почты пользователя>]

Описание

3

[LANGUAGE=<язык>]

Описание

4.

[CALCTIME=<время_в_часах>]

Описание

5

[MEMORY=<объем_в_Мегабайтах>]

Описание

6

[DISK=<объем_в_Мегабайтах>]

Описание

7

[COMPILE_OPT]

[/COMPILE_OPT]

Описание

8

[LINK_OPT]

[/LINK_OPT]

Описание

9

[COMMAND_STRING]

[/COMMAND_STRING]

Описание

10

[PROGRAM]

[/PROGRAM]

Описание

11

[STDIN]

[/STDIN]

Описание

12

[OUTFILES]

[/OUTFILES]

Описание

13

[INFILES]

[/INFILES]

Описание

14

[FILE NAME=<имя_файла>]

[/FILE]

Описание


Общие замечания

Система разбора пакета является чувствительной к регистру символов.

       3.2. Пример пакета "SINGLE"

[*BEGIN*]
[USER=tester]
[USERMAIL=test@mail.ru]
[LANGUAGE=C]
[COMPILE_OPT]
-O3
[/COMPILE_OPT]
[LINK_OPT]
-lm
[/LINK_OPT]
[PROGRAM]
demo.c
[/PROGRAM]
[OUTFILES]
data.tst
[/OUTFILES]
[FILE NAME=demo.c]
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <math.h>
long REPEAT_CONST_1 = 5000000;
long REPEAT_CONST_2 = 1000;
clock_t StartClock, EndClock;
int main(void)>
{
FILE *OutFile;
char *Buffer;
int i, j;
float Time, A, B;
OutFile = fopen("data.tst","wt");
printf("Allocate/deallocate 1M memory without filling..\n");
StartClock = clock();
for (i=0;i<REPEAT_CONST_2;i++)
{
Buffer = (char*) malloc(1024*1000);
if (Buffer != NULL) free(Buffer);
}
EndClock = clock();
Time = (float)(EndClock - StartClock)/(float)(CLOCKS_PER_SEC*REPEAT_CONST_2);
printf("Done. %e sec per 1M alloc and free\n", Time);
fprintf(OutFile,"1M malloc/free: %e sec\n",Time);
printf("Allocate/deallocate 1M memory with filling..\n");
StartClock = clock();
for (i=0;i<REPEAT_CONST_2;i++)
{
Buffer = (char*) calloc(1024*1000, sizeof(char));
if (Buffer != NULL) free(Buffer);
}
EndClock = clock();
Time = (float)(EndClock - StartClock)/(float)(CLOCKS_PER_SEC*REPEAT_CONST_2);
printf("Done. %e sec per 1M alloc with filling and free\n", Time);
fprintf(OutFile,"1M calloc/free: %e sec\n",Time);
printf("float + - / *:\n");
A = 1.5;
B = 3.1415926;
StartClock = clock();
for (i=0;i<REPEAT_CONST_1;i++)
{
A = A+B;
B= A*B;
A = A-B;
B = A/B;
}
EndClock = clock();
Time = (float)(EndClock - StartClock)/(float)(CLOCKS_PER_SEC*REPEAT_CONST_1);
printf("+-*/ %e sec per four operations\n", Time);
fprintf(OutFile,"+-*/ %e sec per four operations\n", Time);
printf("math functions:\n");
A = B = 0;
StartClock = clock();
for (i=0;i<REPEAT_CONST_1;i++)
{
A = sin(A+i);
}
EndClock = clock();
Time = (float)(EndClock - StartClock)/(float)(CLOCKS_PER_SEC*REPEAT_CONST_1);
printf("sin - %e sec per function\n", Time);
fprintf(OutFile,"sin - %e sec per function\n", Time);
StartClock = clock();
for (i=0;i<REPEAT_CONST_1;i++)
{
A = cos(A+i);
}
EndClock = clock();
Time = (float)(EndClock - StartClock)/(float)(CLOCKS_PER_SEC*REPEAT_CONST_1);
printf("cos - %e sec per function\n", Time);
fprintf(OutFile,"cos - %e sec per function\n", Time);
StartClock = clock();
for (i=0;i<REPEAT_CONST_1;i++)
{
A = exp(-(A+i));
}
EndClock = clock();
Time = (float)(EndClock - StartClock)/(float)(CLOCKS_PER_SEC*REPEAT_CONST_1);
printf("exp - %e sec per function\n", Time);
fprintf(OutFile,"exp - %e sec per function\n", Time);
fclose(OutFile);
return 0;
}
[/FILE]
[*END*]

4. Работа в пакетном режиме "MPI"

При работе в этом режиме пользователь формирует у себя на компьютере пакет задачи, оформленный по правилам, приведенным п. 4.1. и высылает его в виде электронного письма по адресу mpi@cluster.cplire.ru.

В отличие от пакетного режима "SINGLE", пользователю предоставляется возможность управления выполнением задачи, а именно, пользователь может запросить:

  • информацию о текущем состоянии пакета (компилирование, выполнение и пр.)
  • любой файл пакета, включая файлы, формируемые прикладной задачей в процессе выполнения

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

Кроме того, добавлены возможности изменения состава пакета, а именно:

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

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

  • в теле пакета не должно содержаться символов ASCII с номерами выше 127;
  • символы табуляции должны быть заменены соответствующим количеством пробелов;
  • размер электронного письма, содержащего пакет, не должен быть больше 1 МБ;
  • файлы данных, формируемые прикладной программой, должны быть текстовыми и не содержать символов ASCII с номерами выше 127;
  • размер файла данных не должен превосходить 1 МБ.
  • электронное письмо должно быть написано в формате text/plane.

       4.1. Описание пакета задачи пользователя ("MPI")

Пакет, размещенный в теле электронного письма, обрамляется тэгами

[*BEGIN*] и [*END*]

Наличие обоих тегов в теле письма обязательно!

После тэга [*BEGIN*] в произвольном порядке следуют внутренние тэги пакета, в том числе контейнерные.

В таблице приведены описания тэгов. Обязательная информация взята в угловые скобки (< >).

Синтаксис

 

1

[USER=<имя пользователя>]

Описание

2

[USERMAIL=<адрес электронной почты пользователя>]

Описание

3

[LANGUAGE=<язык>]

Описание

4

[PACKET=<номер пакета>]

Описание

5

[PNAME=<имя пакета>]

Описание

6

[COMPILE]

Описание

7

[COMPILE_OPT]

[/COMPILE_OPT]

Описание

8

[LINK_OPT]

[/LINK_OPT]

Описание

9

[COMMAND_STRING]

[/COMMAND_STRING]

Описание

10

[PROGRAM]

[/PROGRAM]

Описание

11

[EXECUTE] Описание

12

[RUN_OPT]

[/RUN_OPT]

Описание

13

[NEWFILE NAME= <имя файла>]

[/NEWFILE]

Описание
14 [ADDFILE NAME= <имя файла>]

[/ADDFILE]

Описание
15 [GETSTATUS] Описание

16

[ERASE] Описание
17 [KILL] Описание

Общие замечания

Система разбора пакета является чувствительной к регистру символов.

"Карты" тэгов должны содержаться в одной строке (без переходов на новую строку).

 

       4.2. Пример пакета "MPI"

             4.2.1.  Создание нового пакета

[*BEGIN*]
[USER=test]

[USERMAIL=test@com]
[PACKET=NEW]
[LANGUAGE=C]
[PROGRAM]
test.c
[/PROGRAM]
[NEWFILE NAME=test.c]
#include <stdio.h>
#include "mpi.h"
int main(int Num, char *Args[])
{
return 0;
}
[/NEWFILE]

[*END*]

 

            4.2.2.  Компилирование и запуск на счет

Пусть ранее созданный пакет имеет номер 10101 и прикладную программу необходимо запустить на 8-ми процессорах.

[*BEGIN*]
[USER=test]

[USERMAIL=test@com]
[PACKET=10101]
[COMPILE]
[EXECUTE]
[RUN_OPT]
-np 8
[/RUN_OPT]

[*END*]

 

 

           

 

 

4.2.3.  Получение пользователем файлов пакета

Пусть ранее созданный пакет имеет номер 10101 и пользователь желает получить файл с именем test.dat, формируемый прикладной программой в процессе выполнения.

[*BEGIN*]
[USER=test]

[USERMAIL=test@com]
[PACKET=10101]
[GETFILE NAME=test.dat]

[*END*]

           4.2.4. Прерывание выполнения программы

Пусть  созданный пакет имеет номер 10101 и пользователь желает прервать выполнение запущенной ранее программы.

[*BEGIN*]
[USER=test]

[USERMAIL=test@com]
[PACKET=10101]
[KILL]

[*END*]

            4.2.5. Уничтожение пакета

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

[*BEGIN*]
[USER=test]

[USERMAIL=test@com]
[PACKET=10101]
[ERASE]

[*END*]

Программно-аппаратная платформа

 

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

Компьютерный центр коллективного пользования ИРЭ РАН