Resource Tags

The std.ResourceTag type declares compute resource requirements on individual tasks. Cluster runners (LSF, SLURM) use these tags to select appropriate worker nodes. The local runner ignores them.

Type Definition

std.ResourceTag extends std.Tag and adds the following fields:

cores (int, default 1)

Number of CPU cores required.

memory (str, default "1G")

Memory requirement with unit suffix (e.g. "512M", "2G", "32G").

queue (str, default "")

Target queue name. Empty means use the queue from runner config.

walltime (str, default "1:00")

Maximum walltime in HH:MM format.

resource_class (str, default "")

Named resource class from runner config. When set, overrides cores and memory with the class definition.

Usage Examples

Explicit resource requirements:

tasks:
  - name: compile_rtl
    uses: hdl.Compile
    tags:
      - std.ResourceTag:
          cores: 4
          memory: "8G"

Named resource class:

tasks:
  - name: run_sim
    uses: hdl.Simulate
    tags:
      - std.ResourceTag:
          resource_class: large
          walltime: "4:00"

Resource Resolution Precedence

When the runner resolves resource requirements for a task:

  1. If resource_class is set on the tag, the named class is looked up from the runner config. The class provides cores, memory, and optionally queue and resource_select.

  2. Otherwise, explicit cores, memory, queue values from the tag are used.

  3. Any field not set by the tag or resource class falls back to the runner config defaults section.

  4. The project field always comes from runner.lsf.project in the config (not from the tag).

  5. resource_select predicates from the config and the resource class are accumulated (combined with &&).

Resource Classes

Resource classes are named bundles defined in runner config:

runner:
  resource_classes:
    small:   { cores: 1,  memory: "2G" }
    medium:  { cores: 4,  memory: "8G" }
    large:   { cores: 8,  memory: "32G" }
    gpu:
      cores: 4
      memory: "16G"
      queue: gpu_queue
      resource_select: ["ngpus>0"]

A class may include its own queue and resource_select overrides. See Runner Config for the full config reference.