Руководство пользователя мультикластерной вычислительной системы
Введение
Пространственно-распределенная мультикластрная вычислительная система (ВС) функционирует под управлением программного обеспечения промежуточного уровня 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 04:53 AM editor