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


Введение

Пространственно-распределенная мультикластрная вычислительная система (ВС) функционирует под управлением программного обеспечения промежуточного уровня GRID-систем Globus Toolkit и диспетчера задач GridWay. Для работы c ресурсами мультикластерной ВС необходимо установить клиентские утилиты пакета Globus Toolkit 5.0 на рабочую машину пользвателя или зайти по протоколу SSH на одну из кластерных ВС системы. Перед начало работы с вычислительными ресурсами необходимо пройти процедуру аутентификации.

1. Аутентификация пользователей для работы с ресурсами мультикластерной ВС

Аутентификация пользователей построена на базе сертификатов безопасности X.509 и выполняется путем обращения к серверу сертификатов командой myproxy-logon. В качестве параметра указавывается адрес сервера сертификатов xeon80.cpct.sibsutis.ru.

 $ myproxy-logon -s xeon80.cpct.sibsutis.ru
 Enter MyProxy pass phrase: ******
 A credential has been received for user quser in /tmp/x509up_u1817.

Также можно указать срок действия сертификата (в часах) через ключ -t, например:

 $ myproxy-logon -s xeon80.cpct.sibsutis.ru -t 168

По умолчанию сертификат выделяется на 12 часов. Посмотреть информацию о нём можно с помощью команды grid-proxy-info.

2. Копирование файлов между сегментами мультикластерной ВС

После аутентификации пользователь может копировать файлы между кластерными ВС системы утилитой globus-url-copy.

 $ globus-url-copy src_url dest_url

где src_url и dest_url – адреса файлов источника и приемника вида

  • file:///path/to/my/file - в том случае, если файл находится на локальной файловой системе (это может быть как машина пользователя, так и кластер, на который он зашел по протоколу SSH),
  • gsiftp://hostname/path/to/remote/file - если файл находится на удаленном сегменте мультикластерной системы.

Пример копирования файла из локальной файловой системы на кластер xeon80.cpct.sibsutis.ru:

 $ globus-url-copy file:///tmp/src.c gsiftp://xeon80.cpct.sibsutis.ru:~/dest.c

Пример копирования файла с кластера xeon80.cpct.sibsutis.ru на локальную файловую систему:

 $ globus-url-copy gsiftp://xeon80.cpct.sibsutis.ru:~/src.c file:///tmp/dest.c

Пример копирования файла между удаленными кластерами:

 $ globus-url-copy gsiftp://xeon80.cpct.sibsutis.ru:~/src.c gsiftp://xeon32.cpct.sibsutis.ru:/tmp/dest.c

3. Запуск программы на заданном кластере

Запуск программы на любом из кластеров системы осуществляется с помощью команды globusrun. В качестве параметров передаются адрес кластера (опция -r), на котором требуется запустить программу, и паспорт задачи на языке ресурсных запросов RSL. Например, чтобы запустить программу на кластере xeon80.cpct.sibsutis.ru, необходимо выполнить команду

 $ globusrun -b -r xeon80.cpct.sibsutis.ru -f job.rsl

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

Паспорт задачи можно задать непосредственно в командной строке (без ключа, в апострофах), например

 $ globusrun -b -r xeon80.cpct.sibsutis.ru "&(executable=prog)(count=4)"

Корректность синтаксиса ресурсного запроса можно проверить с помощью ключа -p

 $ globusrun -p "&(executable=prog)(count=4)"

или

 $ globusrun -p "`cat job.rsl`"

Каждый ресурсный запрос начинается с символа '&', затем следуют параметры запрашиваемых ресурсов в виде

 (<атрибут> = ["]<значение>["])
 (* комментарии *)

Допустимые атрибуты:

argumentsАргументы командной строки для исполняемого файла программы.
countКоличество запусков программы.
directoryКаталог по умолчанию для запускаемой задачи.
environmentПеременные среды окружения, которые будут выставлены для запускаемой задачи дополнительно к тем, которые задаются по умолчанию.
file_clean_upСписок файлов для удаления после выполнения программы.
file_stage_inСписок файлов вида ("remote URL" "local file"), которые должны быть загружены на сегмент перед выполнением программы
file_stage_outСписок файлов вида ("local file" "remote URL"), которые будут доставлены пользователю после выполнения программы.
job_typeОписывает, каким образом должна быть запущена задача. Возможны значения: single (для последовательной или OpenMP-программы), multiple (будет запущено одновременно count процессов), mpi (для случая MPI-программы, будет запущено count процессов).
max_cpu_timeТребуемое процессорное время (в минутах).
max_memoryМаксимальный объем памяти, занимаемый программой (в Мб).
max_timeВремя требуемое программе (в минутах).
min_memoryОбъем необходимой оперативной памяти (в Мб).
queueИмя очереди, в которую будет поставлена программа.
restartИспользуется для возобновления уже запущенной задачи. В качестве значения указывается адрес ресурса и идентификатор задачи. Например, restart="https://grid.example.org:1997/16001700477575114131/5295612977486005428/
rsl_substitutionСтрока, которое может быть подставлено в другие атрибуты, например $(SUBSTITION).
stderrФайл для стандартного потока ошибок.
stdinФайл для стандартного потока ввода.
stdoutФайл для стандартного потока вывода.

Для решения задачи в режиме пакетной обработки необходимо указать ключ -b

 $ globusrun -b -r xeon80.cpct.sibsutis.ru "&(executable=/bin/sleep)(arguments=500)"

В этом случае выведен идентификатор задачи, например https://xeon80.cpct.sibsutis.ru:38824/16001608125017717261/5295612977486019989/
Посмотреть текущий статус задачи можно через ключ -status, например

 $ globusrun -status https://xeon80.cpct.sibsutis.ru:38824/16001608125017717261/5295612977486019989/
 PENDING

Для запуска интерактивной задачи необходимо указать ключ -s. В этом случае стандартные потоки ошибок и вывода будут выведены на терминал пользователя, например

 $ globusrun -s -r xeon80.cpct.sibsutis.ru "&(executable=/bin/hostname)"

Для завершения задачи нужно выполнить команду

 $ globusrun -k https://xeon80.cpct.sibsutis.ru:38824/16001608125017717261/5295612977486019989/

Если срок действия сертификата истечет в момент решения задачи, будет получено сообщение вида

 $ globusrun -r xeon80.cpct.sibsutis.ru "&(executable=prog)"
 globus_gram_client_callback_allow successful
 GRAM Job submission successful
 GLOBUS_GRAM_PROTOCOL_JOB_STATE_ACTIVE
 GLOBUS_GRAM_PROTOCOL_JOB_STATE_FAILED
 GRAM Job failed because the user proxy expired (job is still running) (error code 131)

Возможно заново получить сертификат посредством команды myproxy-logon и возобновить решение задачи следующим образом

 $ globusrun -r grid.example.org "&(restart="xeon80.cpct.sibsutis.ru:1997/38824/16001608125017717261/5295612977486019989/)"
 globus_gram_client_callback_allow successful
 GRAM Job submission successful
 GLOBUS_GRAM_PROTOCOL_JOB_STATE_ACTIVE
 GLOBUS_GRAM_PROTOCOL_JOB_STATE_DONE

3.2. Запуск последовательной или OpenMP-программы

Для OpenMP-программы можно установить число параллельных потоков, задав в паспорте задачи переменную среды окружения OMP_NUM_THREADS, например (environment = (OMP_NUM_THREADS 4)). Ниже приведен пример запуска программы с числом потоков 4 на кластере xeon80.cpct.sibsutis.ru

 $ globusrun -b -r xeon80.cpct.sibsutis.ru -f pi_openmp.rsl

где паспорт задачи pi_openmp.rsl:

 &(executable = $(HOME)/pi_openmp)
  (environment = (OMP_NUM_THREADS 4))

3.3. Запуск MPI-программы

В целях совместимости с разными версиями компиляторов и библиотек на кластерных ВС системы, рекомендуется MPI-программы собирать статически. Для этого при компиляции нужно указать ключ -static:

 $ mpicc -static -o mpiprog mpiprog.c

Для запуска MPI-программы на сегменте мультикластерной системы в ресурсном запросе должна быть указана опция (job_type = mpi) и число параллельных ветвей (count = <proc_count>).

Пример запуска MPI-программы программы с числом процессов 4 на кластере xeon80.cpct.sibsutis.ru

 $ globusrun -b -r xeon80.cpct.sibsutis.ru -f pi_mpi.rsl

паспорт задачи pi_mpi.rsl:

 &(executable = $(HOME)/pi_mpi)
  (stdout = $(HOME)/stdout)
  (job_type = mpi)
  (count = 4)

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

Globus Toolkit для передачи файлов поддерживает протоколы ftp, gsiftp, http и https. Управление входными и выходными файлами осуществляется с помощью атрибутов file_stage_in и file_stage_out. Кроме того, входными могут быть файлы, указанные в параметрах executable и stdin, а выходными - файлы, указанные в атрибутах stdout и stderr.

Пример доставки входного файла staged_file из домашнего каталога пользователя сегмента xeon32.cpct.sibsutis.ru на сегмент xeon80.cpct.sibsutis.ru при запуске задачи на сегменте xeon80.cpct.sibsutis.ru

 $ globusrun -b -r xeon80.cpct.sibsutis.ru -f job.rsl

где job.rsl:

 &(rsl_substitution = (GRIDFTP_SERVER gsiftp://xeon32.cpct.sibsutis.ru))
  (executable = /bin/ls)
  (arguments = -l $(HOME)/staged_file)
  (file_stage_in = ($(GRIDFTP_SERVER)/$(HOME)/staged_file $(HOME)/staged_file))

Пример запуска задачи на кластере xeon32.cpct.sibsutis.ru и доставки выходного файла stdout в домашний каталог пользователя файловой системы на сегменте xeon80.cpct.sibsutis.ru

 $ globusrun -s -r xeon80.cpct.sibsutis.ru -f job.rsl

где job.rsl:

 &(rsl_substitution = (GRIDFTP_SERVER gsiftp://xeon80.cpct.sibsutis.ru))
  (executable = /bin/cat)
  (arguments = /etc/passwd)
  (stdout = $(HOME)/stdout)
  (file_stage_out = ($(HOME)/stdout $(GRIDFTP_SERVER)/$(HOME)/stdout))
  (file_clean_up = $(HOME)/stdout)

атрибут (file_clean_up = $(HOME)/stdout) необходим для удаления файла $(HOME)/stdout после выполнения программы на сегменте xeon32.cpct.sibsutis.ru.

4. Запуск программ через диспетчер GridWay

На сегментах мультикластерной системы функционирует диспетчер параллельных программ GridWay [2], который для каждой задачи осуществляет поиск (суб)оптимальных ресурсов. Чтобы запустить задачу через диспетчер мультикластерной системы, необходимо зайти на любой из сегментов по протоколу SSH и выполнить команду команду gwsubmit, указав в качестве параметра паспорт задачи. Например:

Команда gwps отображает текущее состояние очереди задач

 USER         JID DM   EM   START    END      EXEC    XFER    EXIT NAME            HOST                      
 griduser:0   0   done ---- 16:53:29 16:53:50 0:00:11 0:00:01 0    job1.jt         xeon32.cpct.sibsutis.ru/jobmanager-pbs 
 griduser:0   1   wrap actv 17:15:15 --:--:-- 0:00:04 0:00:00 --   job2.jt         xeon80.cpct.sibsutis.ru/jobmanager-pbs 

По завершении решения в столблце DM будет отображаться done.

 USER         JID DM   EM   START    END      EXEC    XFER    EXIT NAME            HOST                      
 griduser:0   0   done ---- 16:53:29 16:53:50 0:00:11 0:00:01 0    ls.jt           xeon32.cpct.sibsutis.ru/jobmanager-pbs 
 griduser:0   1   done ---- 17:15:15 17:15:35 0:00:10 0:00:02 0    ls.jt           xeon80.cpct.sibsutis.ru/jobmanager-pbs 

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

 gwkill JID

где JID - идентификатор задачи.

Паспорт задачи имеет следующий синтаксис:

 <атрибут> = ["]<значение>["]
 # <Комментарии>

В таблице приведены возможные атрибуты

NAMEИмя задачи (по умолчанию - имя файла паспорта задачи). Например: NAME = pi_mpi_job
EXECUTABLEИсполняемый файл. Например: EXECUTABLE = pi_mpi.${ARCH}
ARGUMENTSАргументы исполняемого файла. Например: ARGUMENTS = 1000000
TYPEТип задачи. Возможные значения: single (по умолчанию), multiple и mpi
NPЧисло процессов в MPI-программе
INPUT_FILESСписок входных файлов, которые загружаются на сегмент перед выполнением программы. Например: INPUT_FILES = input1, input2, input3
OUTPUT_FILESСписок выходных файлов, которые доставляются по указанному адресу после выполнения программы. Например: OUTPUT_FILES = output1, output2, output3
STDIN_FILEФайл стандартного потока ввода. Копируется на удаленный сегмент перед запуском задачи. Например: STDIN_FILE = /dev/null
STDOUT_FILEФайл стандартного потока вывода. Доставляются пользователю после выполнения программы. Например: STDOUT_FILE = stdout_file.${JOB_ID}
STDERR_FILEФайл стандартного потока ошибок. Доставляются пользователю после выполнения программы. Например: STDERR_FILE = stderr_file.${JOB_ID}
REQUIREMENTSБулевое выражение, проверяемое для каждого ресурса. Если проверка возвращает истину, ресурс учитывается при диспетчеризации задачи. Например при данном значении REQUIREMENTS = ARCH = "i686" & CPU_MHZ > 1000 рассматриваются ресурсы, имеющие архитектуру i686 и тактовую частоту процессора больше 1000 МГц.
RANKВыражение, используемое для ранжирования ресурсов: ресурс с большим значением выражения обладает большим приоритетом при диспетчеризации. Например: RANK = (CPU_MHZ * 2) + FREE_MEM_MB.
RESCHEDULING_INTERVALКак часто диспетчер осуществляет поиск лучших ресурсов для задачи (0 - никогда).
RESCHEDULING_THRESHOLDЕсли найден ресурс, который лучше текущего, и задача перед этим выполнялась меньше данного порогового значения (в секундах), задача мигрирует на новый ресурс.
DEADLINEСрок окончания решения задачи в формате [[D:]H:]M (0 - без срока окончания).
SUSPENSION_TIMEOUTМаксимальное время ожидания (в секундах) задачи в очереди локального менеджера ресурсов. При превышении указанного значения, задача мигрирует на другой сегмент.
RESCHEDULE_ON_FAILUREПоведение в случае отказа при выполнении программы (возможные значения: yes и no). Если значение равно yes, задача будет перенаправлена для решения на другой сегмент.
NUMBER_OF_RETRIESКоличество попыток решения задачи в случае отказов.

Также доступны следующие команды диспетчера:

  • gwps - отображает состояние очереди и список задач в ней;
  • gwhost - выводит информацию о сегментах мультикластера;
  • gwwait - команда для синхронизации выполнения программ;
  • gwuser - выводит информацию о пользователе системы;
  • gwhistory - отображает, какие ресурсы были использованы при решении задачи;
  • gwkill - удаляет задачу из очереди.

(справку по командам можно получить с помощью опции -h)

4.1. Запуск последовательных и OpenMP-программ

Для OpenMP-программы можно установить число параллельных потоков, указав в паспорте задачи переменную среды окружения OMP_NUM_THREADS, например ENVIRONMENT = OMP_NUM_THREADS = 8. Ниже приведен пример запуска OpenMP-программы pi_openmp с числом потоков 4

 $ gwsubmit pi_openmp.jt

где паспорт задачи pi_openmp.jt:

 EXECUTABLE  = pi_openmp
 ARGUMENTS   = 10000000
 ENVIRONMENT = OMP_NUM_THREADS = 4

4.2. Запуск MPI-программ

В целях совместимости с разными версиями компиляторов, рекомендуется MPI-программы собирать статически. Для статической сборки нужно указать ключ -static, например

 $ mpicc -static -o mpiprog mpiprog.c

Для запуска MPI-программы через диспетчер мультикластерной системы необходимо указать в ресурсном запросе опцию TYPE = mpi и число параллельных ветвей (например, NP = 8). Приведен пример запуска MPI-программы с числом параллельных ветвей 8:

 $ gwsubmit pi_mpi.jt

где паспорт задачи pi_mpi.jt:

 EXECUTABLE  = pi_mpi
 ARGUMENTS   = 10000000
 TYPE        = mpi
 NP          = 8

4.3. Входные и выходные файлы

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

  • Абсолютный путь. В этом случае будет использован файл на удаленной файловой системе.
 INPUT_FILES = /etc/passwd
  • Адрес файла на удаленной файловой системе (GridFTP). Файл будет загружен из указанного адреса и помещен во временный каталог. В примере файл input_exp1, расположенный на узле machine, копируется из директории /tmp на удаленный сегмент, на котором будет запущена задача.
 INPUT_FILES = gsiftp://machine/tmp/input_exp1 input
  • Абсолютный путь до файла на локальной файловой системе.
 INPUT_FILES = file:///etc/passwd
  • Имя файла в текущей директории (в которой находится паспорт задачи) на локальной файловой системе.
 INPUT_FILES = pi_comp.bin

Следует заметить, что файл в поле EXECUTABLE также является входным файлом.

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

  • Абсолютный путь. Файл, расположенный на удаленном сегменте, будет скопирован на локальную файловую систему. В примере выходной файл output.bin копируется на локальную машину в директорию /tmp с именем outfile:
 OUTPUT_FILES  = output.bin /tmp/outfile
  • Адрес по протоколу GridFTP. Файл будет скопирован в соответствии с указанным адресом. В примере файл out по окончании выполнения программы будет отправлен на сегмент xeon16.cpct.sibsutis.ru и помещен в домашний каталог пользователя:
 OUTPUT_FILES  = out gsiftp://xeon16.cpct.sibsutis.ru/~/output
  • Имя файла на локальной файловой системе в текущей директории (в которой расположен паспорт задачи), например:
 OUTPUT_FILES  = output

Файл output будет скопирован в текущую директорию с таким же именем.

 OUTPUT_FILES  = output Out/file.${JOB_ID}

Файл output будет скопирован с именем file.${JOB_ID} в директорию Out, находящуюся в текущей директории.

4.4. Файлы стандартных потоков ввода-вывода

Файл стандартного потока ввода STDIN_FILE может быть задан с использованием любого из методов, описанных для входных файлов (при этом может быть указан только файл-источник). В примере в качестве входного будет использован файл, находящийся в локальной текущей директории In:

 STDIN_FILE = In/input.${JOB_ID}

Файлы стандартных потоков вывода и ошибок STDOUT_FILE и STDERR_FILE могут быть заданы с использованием любых способов описания выходных файлов (при этом может быть определен только файл-приемник). В примере выходной файл после выполнения программы будет помещен в директорию Out (относительно временной директории) с именем ofile:

 STDOUT_FILE = Out/ofile

4.5. Использование переменных в паспорте задачи

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

 ${GW_VARIABLE}

При запуске программы перменные замещаются на соответствующие им значения. Например,

 STDOUT_FILE = stdout.${JOB_ID}

значение параметра STDOUT_FILE для задачи с идентификатором 23 будет stdout.23.

В таблице представлен список доступных переменных.

${JOB_ID}Идентификатор задачи
${ARRAY_ID}Идентификатор массива задач
${TASK_ID}Идентификатор задачи внутри массива
${TOTAL_TASKS}Общее число задач в массиве
${ARCH}Архитектура узла, выбранного для решения задачи

4.6. Выражения для выбора ресурсов

Выражения для описания требований, предъявляемых к ресурсам, имеют следующий синтаксис:

  stmt::= expr';'
  expr::= VARIABLE '=' INTEGER
          | VARIABLE '>' INTEGER
          | VARIABLE '<' INTEGER
          | VARIABLE '=' STRING
          | expr '&' expr
          | expr '|' expr
          | '!' expr
          | '(' expr ')'

Каждое выражение может быть истинным (1, TRUE) или ложным (0, FALSE). Только те ресурсы, для которых значение выражения истинно, будут учитываться при диспетчеризации задачи.

В выражении допустимо использование логических операторов (меньше '<', больше '>', '&' AND, '|' OR, '!' NOT). '=' означает равенство целочисленных переменных. Примеры:

  REQUIREMENTS = LRMS_NAME = "*pbs*"; # Только менеджеры ресурсов PBS
  REQUIREMENTS = HOSTNAME = "*.ru"; # Только ресурсы, расположенные в России
  REQUIREMENTS = HOSTNAME = "xeon80.cpct.sibsutis.ru"; # Используется только xeon80.cpct.sibsutis.ru

Выражения для ранжирования ресурсов имеют следующий синтаксис:

  stmt::= expr';'
  expr::= VARIABLE
          | INTEGER
          | expr '+' expr
          | expr '-' expr
          | expr '*' expr
          | expr '/' expr
          | '-' expr
          | '(' expr ')'

Допустимы арифметические операторы '+', ', '*', '/' и '. При этом разрешается использовать только целочисленные величины.

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

HOSTNAMEАдрес сегмента мультикластерной системы (например, xeon16.cpct.sibsutis.ru)
ARCHПроцессорная архитектура (например, i686, alpha)
OS_NAMEОперационная система (например, Linux, SL)
OS_VERSIONВерсия операционной системы (например, 2.6.9-1.66, 3
CPU_MODELМодель процессора (например, Intel(R) Pentium(R) 4 CPU 2, PIV)
CPU_MHZТактовая частота процессора (в МГц)
CPU_FREEПроцент незагруженности процессора
CPU_SMPКоличество ядер в SMP-процессоре
NODECOUNTКоличество вычислительных узлов
SIZE_MEM_MBСуммарный объем памяти (в Мб)
FREE_MEM_MBОбъем свободной память (в Мб)
SIZE_DISK_MBСуммарный размер дискового пространства (в Мб)
FREE_DISK_MBОбъем свободного дискового пространства (в Мб)
LRMS_NAMEЛокальный менеджер ресурсов (система пакетной обработки) (например, jobmanager-pbs, PBS, jobmanager-sge, SGE)
LRMS_TYPEТип менеджера ресурсов (например, pbs, sge)
QUEUE_NAMEНазвание очереди задач (например, default, debug, release, batch)
QUEUE_NODECOUNTКоличество узлов, выделенных под очередь
QUEUE_FREENODECOUNTКоличество свободных узлов, выделенных под очередь
QUEUE_MAXTIMEМаксимальное время нахождения задачи в очереди
QUEUE_MAXCPUTIMEМаксимальное время выполнения задачи в очереди
QUEUE_MAXCOUNTМаксимальное количество задач, которые могут быть поставлены в очередь за один запрос
QUEUE_MAXRUNNINGJOBSМаксимальное число выполняющихся в очереди задач
QUEUE_MAXJOBSINQUEUEМаксимальное число задач в очереди, ожидающих обслуживания
QUEUE_DISPATCHTYPEТип диспетчеризации для очереди (например, batch, inmediate)
QUEUE_PRIORITYПриоритет очереди
QUEUE_STATUSСтатус очереди (например, active, production)

Переменные среды окружения для задачи могут быть выставлены с помощью параметра ENVIRONMENT. При диспетчеризации значение ENVIRONMENT будут переданы в обочку bash и интерпретированы. В примере переменной среды VAR будет присвоено значение JOB_ID + 3:

 ENVIRONMENT = VAR = "`expr ${JOB_ID} + 3`" 

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

  • GW_RESTARTED
  • GW_EXECUTABLE
  • GW_HOSTNAME
  • GW_ARCH
  • GW_CPU_MHZ
  • GW_MEM_MB
  • GW_RESTART_FILES
  • GW_CPULOAD_THRESHOLD
  • GW_ARGUMENTS
  • GW_TASK_ID
  • GW_CPU_MODEL
  • GW_ARRAY_ID
  • GW_TOTAL_TASKS
  • GW_JOB_ID
  • GW_OUTPUT_FILES
  • GW_INPUT_FILES
  • GW_OS_NAME
  • GW_USER
  • GW_DISK_MB
  • GW_OS_VERSION

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

В стадии разработки

Приложение. Шаблоны паспортов задач

А.1. Запуск OpenMP-программы на заданном кластере

 &(executable = <PATH_TO_EXECUTABLE>)
  (arguments = <ARGUMENTS>)
  (environment = (OMP_NUM_THREADS <NTHREADS>))
  (file_stage_in = (<SRC_URL> <DEST_URL>))
  (file_stage_out = (<SRC_URL> <DEST_URL>))
  (file_clean_up = <PATH_TO_FILE>)

где
PATH_TO_EXECUTABLE - путь до исполняемого файла (возможно, на удаленной файловой системе),
ARGUMENTS - аргументы командной строки исполняемого файла,
NTHREADS - число потоков параллельной программы,
SRC_URL - адрес отправляемого файла,
DEST_URL - адрес получаемого файла,
PATH_TO_FILE - путь до файла, который необходимо удалить.

Пути и адреса могут быть заданы как на локальной машине (file:///), так и на удаленной с использованием протокола GridFTP (gsiftp://).

А.2. Запуск MPI-программы на заданном кластере

 &(executable = <PATH_TO_EXECUTABLE>)
  (stdout = <PATH_TO_STDOUT>)
  (job_type = mpi)
  (count = <NPROCESSES>)
  (file_stage_in = (<SRC_URL> <DEST_URL>))
  (file_stage_out = (<SRC_URL> <DEST_URL>))
  (file_clean_up = <PATH_TO_FILE>)

где
PATH_TO_EXECUTABLE - путь до исполняемого файла (возможно, на удаленной файловой системе),
ARGUMENTS - аргументы командной строки исполняемого файла,
NPROCESSES - число процессов параллельной программы,
SRC_URL - адрес отправляемого файла,
DEST_URL - адрес получаемого файла,
PATH_TO_FILE - путь до файла, который необходимо удалить.

Пути и адреса могут быть заданы как на локальной машине (file:///), так и на удаленной с использованием протокола GridFTP (gsiftp://).

B.1. Запуск OpenMP-программы через диспетчер GridWay

 EXECUTABLE   = <PATH_TO_EXECUTABLE>
 ARGUMENTS    = <ARGUMENTS>
 ENVIRONMENT  = OMP_NUM_THREADS = <NTHREADS>
 INPUT_FILES  = <SRC_URL> <DEST_URL>
 OUTPUT_FILES = <SRC_URL> <DEST_URL>

где
PATH_TO_EXECUTABLE - путь до исполняемого файла (возможно, на удаленной файловой системе),
ARGUMENTS - аргументы командной строки исполняемого файла,
NTHREADS - число потоков параллельной программы,
SRC_URL - адрес отправляемого файла,
DEST_URL - адрес получаемого файла.

Пути и адреса могут быть заданы как на локальной машине (file:///), так и на удаленной с использованием протокола GridFTP (gsiftp://).

B.2. Запуск MPI-программы через диспетчер GridWay

 EXECUTABLE   = <PATH_TO_EXECUTABLE>
 TYPE         = mpi
 NP           = <NPROCESSES>
 INPUT_FILES  = <SRC_URL> <DEST_URL>
 OUTPUT_FILES = <SRC_URL> <DEST_URL>

где
PATH_TO_EXECUTABLE - путь до исполняемого файла (возможно, на удаленной файловой системе),
ARGUMENTS - аргументы командной строки исполняемого файла,
NPROCESSES - число процессов параллельной программы,
SRC_URL - адрес отправляемого файла,
DEST_URL - адрес получаемого файла.

Пути и адреса могут быть заданы как на локальной машине (file:///), так и на удаленной с использованием протокола GridFTP (gsiftp://).

Дополнительная литература

1. Globus Toolkit // http://www.globus.org/.
2. GridWay // https://www.gridway.org.
3. Globus Toolkit User Guide // http://www.globus.org/toolkit/docs/latest-stable/user/.
4. GridWay User Guide // http://www.gridway.org/doku.php?id=documentation:release_5.6:ug.

Последнее изменение: August 24, 2010, at 12:53 PM editor