Описание заданий, задач и ресурсных требований

Задания, задачи и требования к ресурсам описываются на языке JSON [RFC 4627].

Описание задания

Описание задания не может иметь атрибутов, отличных от перечисленных ниже.

  • version, целое число

    Версия используемой схемы описания задания. Версия данной схемы 2.

  • description, строка, опциональный параметр

    Описание задания в произвольной форме, для понимания человеком.

  • default_storage_base, строка, опциональный параметр

    Относительные пути, встречающиеся во вложенных описаниях используют данный URI в качестве базы.

  • max_transfer_attempts, целое число, опциональный параметр

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

  • tasks, список, тип элемента: объект, не менее 1 элемента

    Задачи, из которых состоит задание. Каждый элемент списка является объектом со следующими свойствами:

    • id, строка, разрешается использовать только символы [a-zA-Z0-9_]*

      Идентификатор задачи. Используется при обращении к задачам задания, а так же при указании связей задач.

    • description, строка, опциональный параметр

      Описание задачи в произвольной форме, для понимания человеком.

    • definition, объект, опциональный параметр

      Описание задачи (согласно схеме описания задачи). Если данный параметр отсутствует, это может означать, что описание задачи будет загружено на сервер отдельно (например, из внешнего файла).

    • children, список, тип элемента: строка, опциональный параметр

      Список идентификаторов задач (id), дочерних для данной задачи.

    • filename, строка, опциональный параметр

      Имя файла, содержащего описание задачи. При наличии одновременно атрибутов filename и definition, предпочтение отдается описанию задачи из файла, указанного в данном отрибуте.

      Данный атрибут целиком обрабатывается в pilot_cli в процессе запуска задания командной pilot-job-submit.

    • meta, объект, опциональный параметр

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

  • requirements, список, тип элемента: объект, опциональный параметр

    Объект требований к ресурсам (согласно схеме описания требований к ресурсам).

  • meta, объект, опциональный параметр

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

Описание задачи

Значения некоторых параметров описания задачи содержат относительные пути к файлам. Данные пути разрешаются относительно директории, в которой производится запуск задачи на вычислительном узле (эта директория создается автоматически).

Описание задачи не может иметь атрибутов, отличных от перечисленных ниже.

  • version, целое число

    Версия используемой схемы описания задачи. Версия данной схемы 2.

  • description, строка, опциональный параметр

    Описание задачи в произвольной форме, для понимания человеком.

  • executable, строка

    Относительный или абсолютный путь выполняемого файла задачи.

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

  • arguments, список, тип элемента: строка, опциональный параметр

    Аргументы командной строки, которые будут переданы программе при запуске.

  • environment, объект, опциональный параметр

    Дополнительные переменные среды окружения, которые будут установлены перед запуском задачи. Атрибуты данного объекта являются названиями переменных окружения (и будут переведены в верхний регистр), значения задают значения переменных.

    Пример описания задачи, использующего этот параметр:

    { "version": 2,
      "executable": "/usr/bin/env",
      "environment":
      { "FOO": "bar",
        "qux": "XyZzy" }
    }
    

    При запуске такой задачи будут установлены переменные FOO (значение bar) и QUX (значение XyZzy).

  • count, целое число, опциональный параметр

    Количество процессоров, на которых будет запущена задача. Значение этого атрибута более 1 означает, что задача является MPI-задачей. Любые другие значения или отсутствие атрибута означают, что задача не является MPI-задачей.

  • input_files, объект, опциональный параметр
    output_files, объект, опциональный параметр

    В данных параметрах указываются файлы, которые передаются перед запуском и после завершения задачи. Названия атрибутов объектов являются относитльными или абсолютными путями файлов на вычислительном узле. Соответствующие им значения могут быть либо 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

  • stdin, строка, опциональный параметр
    stdout, строка, опциональный параметр
    stderr, строка, опциональный параметр

    URL, либо либо относительными или аблютными путями, разрешаемый относительно default_storage_base для стандартных потоков ввода/вывода задачи.

  • default_storage_base, строка, опциональный параметр

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

  • max_transfer_attempts, целое число, опциональный параметр

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

  • max_success_code, целое число, опциональный параметр

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

  • requirements, объект, опциональный параметр

    Объект требований к ресурсам (согласно схеме описания требований к ресурсам). Заданные значения из параметра 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 описания задачи, и вставляется единственный экземпляр расширения.

    Если значение является списком объектов, то в отправляемое на ресурс описание задачи вставляются все описания, полученные для каждого объекта из списка.

    Пример:

    "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>
    
  • meta, объект, опциональный параметр

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

Описание требований к ресурсам

Требования к ресурсам явлюятся объектами, соответствующими следующему описанию. Результирующее требование задачи к ресурсам получается путем обновления требований к ресурсам всего задания требованиями к ресурсам выбранной задачи. См. пример в описании параметра requirements задачи.

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

  • hostname, список, тип элемента: строка, опциональный параметр

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

  • lrms, строка, опциональный параметр

    Тип подходящей batch-системы (например: Fork, PBS, Cleo).

  • fork, истина/ложь, опциональный параметр

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

  • queue, строка, опциональный параметр

    Название очереди batch-системы, в которой должна выполняться задача.

  • os_name, строка, опциональный параметр
    os_release, строка, опциональный параметр
    os_version, строка, опциональный параметр
    platform, строка, опциональный параметр
    cpu_instruction_set, строка, опциональный параметр

    Параметры кластера из информационной системы. Проверяются на совпадение. Допускается использование wildcards (* = ноль или более любых символов, ? = один любой символ).

  • smp_size, целое число, опциональный параметр
    ram_size, целое число, опциональный параметр
    virtual_size, целое число, опциональный параметр
    cpu_hz, целое число, опциональный параметр

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

  • software, строка, опциональный параметр

    Требования к установленному на кластере ПО, перечисленные через запятую (то есть: требование1, требование2, ...). Каждое отдельное требование может иметь вид:

    • название означает, что необходим пакет название.
    • название операция версия. Требования пакета название указанной версии. Допустимые операции: <, <=, ==, >, >=.

    Пример:

    "software": "mvapich, abinit > 6, orca==2.6.35"
    

    Такая запись означает, что задаче требуетс пакет mvapich любой версии, пакет abinit версии старше, чем 6 и пакет orca строго версии 2.6.35.

Автоматическая подстановка параметров

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

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

Параметр Значение
{jobid} Идентификатор задания
{taskid} Идентификатор задачи
{lrms_host} Имя хоста грид-шлюза, используемого для запуска задачи
{lrms_port} Порт грид-глюза, используемого для запуска задачи
{lrms} Тип менеджера ресурсов, используемого для запуска задачи
{queue} Название очереди, в которую производится запуск задачи

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