in src/hpc/autoscale/example/readme.py [0:0]
def default_resources() -> None:
"""
An example of how to programmatically create default resources.
"""
# now we will disable the default resources, ncpus/pcpus/gpus etc
# and define them ourselves.
CONFIG["disable_default_resources"] = True
node_mgr = new_node_manager(CONFIG)
# let's define gpus for every node
# then, for nodes that actually have a gpu, let's set the pcpus
# to equal the number of gpus * 2
# define ngpus
node_mgr.add_default_resource({}, "ngpus", "node.gpu_count")
# also could have just passed in a lambda/function
# node_mgr.add_default_resource({}, "gpus", lambda node: node.gpu_count)
# now that ngpus is defined, we can use ngpus: 1 here to filter out nodes that
# have at least one ngpu. Let's set pcpus to 2 * ngpus
node_mgr.add_default_resource(
selection={"ngpus": 1},
resource_name="pcpus",
default_value=lambda node: node.resources["ngpus"] * 2,
)
# and for nodes without GPUs, let's just use the actual pcpu_count
node_mgr.add_default_resource(
selection={"ngpus": 0},
resource_name="pcpus",
default_value=lambda node: node.pcpu_count,
)
# note that a blank selection would have accomplished the same thing, as default resources
# are processed in order.
# node_mgr.add_default_resource({}, "pcpus", lambda node: node.pcpu_count)
has_gpu = node_mgr.example_node("southcentralus", "Standard_NV24")
no_gpu = node_mgr.example_node("southcentralus", "Standard_F16s")
print(
has_gpu.vm_size,
"(pcpu_count=%s)" % has_gpu.pcpu_count,
"-> %(ngpus)s ngpus %(pcpus)s pcpus" % has_gpu.resources,
)
print(
no_gpu.vm_size,
"(pcpu_count=%s)" % has_gpu.pcpu_count,
"-> %(ngpus)s ngpus %(pcpus)s pcpus" % no_gpu.resources,
)