in src/hpc/autoscale/example/readme.py [0:0]
def target_counts_demand() -> None:
"""
Handle a mixture of 'target count' style allocation of ncpus and nodes via the
DemandCalculator.
"""
dcalc = new_demand_calculator(CONFIG)
# job requires 10 cores (ncpus)
dcalc.add_job(
Job(
name="tc-10",
constraints={"node.nodearray": "htc", "ncpus": 1, "exclusive": False},
iterations=10,
)
)
# job requires 10 nodes with 4 cores (ncpus)
dcalc.add_job(
Job(
name="tn-10",
constraints={"node.nodearray": "htc", "ncpus": 4, "exclusive": True},
node_count=10,
)
)
# 2 x 5 nodes
dcalc.add_job(
Job(
name="tn-2x5",
constraints={"node.nodearray": "htc", "ncpus": 2, "exclusive": True},
node_count=5,
),
)
demand_result = dcalc.finish()
if not DRY_RUN:
dcalc.bootup()
# note that /ncpus will display available/total. ncpus will display the total, and
# *ncpus will display available.
print_demand(["name", "job_ids", "nodearray", "/ncpus"], demand_result)