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:MMformat.resource_class(str, default"")Named resource class from runner config. When set, overrides
coresandmemorywith 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:
If
resource_classis set on the tag, the named class is looked up from the runner config. The class providescores,memory, and optionallyqueueandresource_select.Otherwise, explicit
cores,memory,queuevalues from the tag are used.Any field not set by the tag or resource class falls back to the runner config
defaultssection.The
projectfield always comes fromrunner.lsf.projectin the config (not from the tag).resource_selectpredicates 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.