Задания, задачи и требования к ресурсам описываются на языке JSON [RFC 4627].
Описание задания не может иметь атрибутов, отличных от перечисленных ниже.
Версия используемой схемы описания задания. Версия данной схемы 2.
Описание задания в произвольной форме, для понимания человеком.
Относительные пути, встречающиеся во вложенных описаниях используют данный URI в качестве базы.
Количество повторных попыток передачи каждого файла, завершающихся неудачей, прежде чем передача в целом будет считаться неуспешной. Значение по умолчанию 5.
Задачи, из которых состоит задание. Каждый элемент списка является объектом со следующими свойствами:
Идентификатор задачи. Используется при обращении к задачам задания, а так же при указании связей задач.
Описание задачи в произвольной форме, для понимания человеком.
Описание задачи (согласно схеме описания задачи). Если данный параметр отсутствует, это может означать, что описание задачи будет загружено на сервер отдельно (например, из внешнего файла).
Список идентификаторов задач (id), дочерних для данной задачи.
Имя файла, содержащего описание задачи. При наличии одновременно атрибутов filename и definition, предпочтение отдается описанию задачи из файла, указанного в данном отрибуте.
Данный атрибут целиком обрабатывается в pilot_cli в процессе запуска задания командной pilot-job-submit.
Данный атрибут предназначен для хранения любых пользовательских параметров экземпляра задачи, и может иметь любое содержимое.
Объект требований к ресурсам (согласно схеме описания требований к ресурсам).
Данный атрибут предназначен для хранения любых пользовательских параметров задания, и может иметь любое содержимое.
Значения некоторых параметров описания задачи содержат относительные пути к файлам. Данные пути разрешаются относительно директории, в которой производится запуск задачи на вычислительном узле (эта директория создается автоматически).
Описание задачи не может иметь атрибутов, отличных от перечисленных ниже.
Версия используемой схемы описания задачи. Версия данной схемы 2.
Описание задачи в произвольной форме, для понимания человеком.
Относительный или абсолютный путь выполняемого файла задачи.
Если вы хотите выполнить программу, выполняемый файл которой находится на удаленном ресурсе, необходимо для запуска передать ее в input_files, и она должна иметь атрибут executable на удаленном ресурсе.
Аргументы командной строки, которые будут переданы программе при запуске.
Дополнительные переменные среды окружения, которые будут установлены перед запуском задачи. Атрибуты данного объекта являются названиями переменных окружения (и будут переведены в верхний регистр), значения задают значения переменных.
Пример описания задачи, использующего этот параметр:
{ "version": 2,
"executable": "/usr/bin/env",
"environment":
{ "FOO": "bar",
"qux": "XyZzy" }
}
При запуске такой задачи будут установлены переменные FOO (значение bar) и QUX (значение XyZzy).
Количество процессоров, на которых будет запущена задача. Значение этого атрибута более 1 означает, что задача является MPI-задачей. Любые другие значения или отсутствие атрибута означают, что задача не является MPI-задачей.
В данных параметрах указываются файлы, которые передаются перед запуском и после завершения задачи. Названия атрибутов объектов являются относитльными или абсолютными путями файлов на вычислительном узле. Соответствующие им значения могут быть либо URL’ами соответствующих файлов на удаленных узлах, либо относительными или аблютными путями, разрешаемыми относительно default_storage_base.
Если в описании задачи параметр default_storage_base не указан, то будет использоваться значение этого параметра из описания задания. В случае, если этот параметр указан и в описании задачи, и в описании задания, то значение, указанное в описании задачи имеет приоритет над значением, указанным в описании задания. Если параметр default_storage_base отсутствует как в описании задачи, так и в описании задания, то файлы, для которых будет указан путь, а не URL, будут проигнорированны.
Пример описания задания с несколькими задачами и входными/выходными файлами:
{ "version": 2,
"default_storage_base": "gsiftp://example.org/my/files/",
"tasks": [
{ "id": "a",
"definition":
{ "version": 2,
"executable": "/bin/cp",
"arguments": ["hello.txt", "qux/test.txt"],
"input_files":
{ "hello.txt": "hello.txt",
"foo.txt": "/bar.txt",
"qux": "gsiftp://example.org/my/directory/qux/"
},
"ouput_files":
{ "qux/test.txt": "gsiftp://example.org/my/output/117/test.txt"
}
}
},
{ "id": "b",
"definition":
{ "version": 2,
"executable": "/bin/cat",
"arguments": ["hello.txt", "foo.txt"],
"default_storage_base": "gsiftp://example.org/other/files/",
"input_files":
{ "hello.txt": "hello.txt",
"foo.txt": "/bar.txt"
}
}
}
]
}
В данном примере файлы будут использоваться следующим образом:
Задача |
Направление |
Локальное имя |
Удаленное имя |
|---|---|---|---|
a |
вход |
hello.txt |
gsiftp://example.org/my/files/hello.txt |
a |
вход |
foo.txt |
gsiftp://example.org/bar.txt |
а |
вход |
qux |
gsiftp://example.org/my/directory/qux/ |
а |
выход |
qux/test.txt |
gsiftp://example.org/my/output/117/test.txt |
b |
вход |
hello.txt |
gsiftp://example.org/other/files/hello.txt |
b |
вход |
foo.txt |
gsiftp://example.org/bar.txt |
URL, либо либо относительными или аблютными путями, разрешаемый относительно default_storage_base для стандартных потоков ввода/вывода задачи.
URI, относительно которого разрешаются пути к удаленным файлам в соответсвтвующих параметрах
Количество повторных попыток передачи каждого файла, завершающихся неудачей, прежде чем передача в целом будет считаться неуспешной. По умолчанию используется значение этого параметра из описания всего задания.
Максимальное значение кода выхода программы, при котором завершение считается нормальным (не аварийным). Код выхода рассматривается как беззнаковое целое. Если данный параметр не указан, используется значение по умолчанию, равное 0.
Объект требований к ресурсам (согласно схеме описания требований к ресурсам). Заданные значения из параметра requirements задачи замещают соответствующие значения requirements требований задания.
Например, приведенные ниже фрагменты задают задачи с одинаковыми требованиями к ресурсам:
{ "version": 2,
"tasks": [
{ "id": "a",
"executable": "/bin/hostname",
"requirements": {
"queue": "long"
}
}
],
"requirements": {
"lrms": "Cleo"
}
}
{ "version": 2,
"tasks": [
{ "id": "a",
"executable": "/bin/hostname",
"requirements": {
"lrms": "Cleo",
"queue": "long"
}
}
]
}
Дополнительные расширения для запуска задачи. Атрибуты данного объекта являются названиями требуемых расширений. Значение атрибута может быть строкой, списком строк, объектом или списком объектов.
Если значение является строкой, то в отправляемое на ресурс описание задачи вставляется единственный экземпляр расширения с указанным значением.
Если значение является списком строк, то в отправляемое на ресурс описание задачи вставляется несколько экземпляров данного расширения со всеми указанными значениями
Если значение является объектом, то оно интерпретируется как расширение внутри расширения согласно правилам для атрибута extensions описания задачи, и вставляется единственный экземпляр расширения.
Если значение является списком объектов, то в отправляемое на ресурс описание задачи вставляются все описания, полученные для каждого объекта из списка.
Пример:
"extensions": { "softenv": ["+gcc-4.4.3", "+libcrypto.so.1.0.0"],
"nodes": "activemural:ppn=10+5:ia64-compute:ppn=2",
"resourceAllocationGroup": {
"hostName": ["vis001", "vis002"],
"cpuCount": "10"
},
"complications": [
{ "extraCase": "13" },
{ "extraCase": "15", "sin": "13" }
]
}
Такое описание будет трансформировано в:
<extensions>
<softenv>+gcc-4.4.3</softenv>
<softenv>+libcrypto.so.1.0.0</softenv>
<nodes>activemural:ppn=10+5:ia64-compute:ppn=2</nodes>
<resourceAllocationGroup>
<hostName>vis001</hostName>
<hostName>vis002</hostName>
<cpuCount>10</cpuCount>
</resourceAllocationGroup>
<complications>
<extraCase>13</extraCase>
</complications>
<complications>
<extraCase>15</extraCase>
<sin>13</sin>
</complications>
Данный атрибут предназначен для хранения любых пользовательских параметров задачи, и может иметь любое содержимое.
Требования к ресурсам явлюятся объектами, соответствующими следующему описанию. Результирующее требование задачи к ресурсам получается путем обновления требований к ресурсам всего задания требованиями к ресурсам выбранной задачи. См. пример в описании параметра requirements задачи.
Все параметры в описании требований к ресурсам являются опциональными. Если это не оговоренно специально, то значения по умолчанию для каждого из параметров обеспечивают выбор любого ресурса, удовлетворяющего остальным требованиям.
Список допустимых имен хостов, на которых может выполняться задача.
Тип подходящей batch-системы (например: Fork, PBS, Cleo).
Разрешить использовать lrms Fork в процессе выбора ресурсов. По умолчанию, если данный параметр не указан, или имеет значение false, Fork будет использоваться только в том случае, если он явно выбран как тип lrms в параметре lrms.
Название очереди batch-системы, в которой должна выполняться задача.
Параметры кластера из информационной системы. Проверяются на совпадение. Допускается использование wildcards (* = ноль или более любых символов, ? = один любой символ).
Параметры кластера из информационной системы. Проверяется, что значение из требований задачи не меньше, чем значение из информационной системы.
Требования к установленному на кластере ПО, перечисленные через запятую (то есть: требование1, требование2, ...). Каждое отдельное требование может иметь вид:
Пример:
"software": "mvapich, abinit > 6, orca==2.6.35"
Такая запись означает, что задаче требуетс пакет mvapich любой версии, пакет abinit версии старше, чем 6 и пакет orca строго версии 2.6.35.
Во всех параметрах описаний заданий и задач, которые могут содержать пути к файлам, производится автоматическая замена некоторых подстрок.
- В описании задания замена производится для значения параметра default_storage_base.
- В описании задачи замена производится для:
- значений параметров default_storage_base, executable, arguments, stdin, stdout, stderr;
- значений атрибутов параметра environment;
- ключей и значений параметров input_files, output_files.
Заменяемые подстроки представляют собой последовательности латинских букв в фигурных скобках и имеют вид {something}. Далее приведен список всех поддерживаемых автоматически заменяемых подстрок и значений, на которые будет произведена замена.
| Параметр | Значение |
|---|---|
| {jobid} | Идентификатор задания |
| {taskid} | Идентификатор задачи |
| {lrms_host} | Имя хоста грид-шлюза, используемого для запуска задачи |
| {lrms_port} | Порт грид-глюза, используемого для запуска задачи |
| {lrms} | Тип менеджера ресурсов, используемого для запуска задачи |
| {queue} | Название очереди, в которую производится запуск задачи |
В том случае, если подстрока в фигурных скобках отсутствует в данной таблице, она не будет подвержена автозамене и будет оставлена как есть.