dpsctl gpu-policy#
dpsctl gpu-policy Usage Guide#
Set GPU power policies on an active resource group.
Note: The per-GPU values you pass here are applied to each GPU individually. A node-level GPU policy that carries no per-GPU values is instead spread uniformly across the node’s GPUs. An applied set limit can still differ from the value you requested when DPS clamps it to the resource-group GPU budget or to the device’s per-GPU hardware limits.
dpsctl gpu-policy is the released Go CLI path for explicit per-GPU limits.
It operates on nodes in active resource groups; these limits are standalone and
are not policy-bundle entries. The released resource-group update command has no
GPU-policy flag.
Shared GPU mode defaults to on. On a shared-GPU resource group, DPS validates the post-update group total against the policy-derived resource-group GPU budget, then against non-compute topology ancestors such as racks and PDN devices. A request can pass every per-node arithmetic check and still be clamped or rejected. Refer to Shared GPU Budget.
Usage#
dpsctl gpu-policy --node <nodeName>=<watts1>,<watts2>,...
Flags#
Includes global dpsctl options.
--node key=value1,value2,... (can be multiple) nodeName=<watts1>,<watts2>,... (e.g. node1=250,250) (required)
--help, -h show help
Examples#
Basic Usage#
This example uses the default shared-GPU path. You have created and activated resource group example1 with the MaxP policy bundle and three members: node001, node002, and node003. You want to set the GPU policy of node001 to the following values:
GPU0: 500W
GPU1: 550W
GPU2: 600W
GPU3: 700W
GPU4: 650W
GPU5: 700W
GPU6: 550W
GPU7: 600W
DPS does not accept or reject this request by comparing node001 alone to its node policy. It sums the requested watts on node001 with the currently allocated GPU watts on node002 and node003, then compares that group total to the resource-group GPU budget. That budget is the policy-derived ceiling described in Shared GPU Budget, not the live allocated sum. Each GPU value must still fall inside the device hardware min and max. After the group-budget check, the request must also fit non-compute topology ancestors such as racks and PDN devices.
Apply the update with dpsctl:
$ dpsctl gpu-policy --node node001=500,550,600,700,650,700,550,600
{
"results": [
{
"resource_name": "node001",
"gpu_id": 0,
"ok": true,
"set_limit": 500.0,
"diag_msg": "Success"
},
{
"resource_name": "node001",
"gpu_id": 1,
"ok": true,
"set_limit": 550.0,
"diag_msg": "Success"
},
{
"resource_name": "node001",
"gpu_id": 2,
"ok": true,
"set_limit": 600.0,
"diag_msg": "Success"
},
{
"resource_name": "node001",
"gpu_id": 3,
"ok": true,
"set_limit": 700.0,
"diag_msg": "Success"
},
{
"resource_name": "node001",
"gpu_id": 4,
"ok": true,
"set_limit": 650.0,
"diag_msg": "Success"
},
{
"resource_name": "node001",
"gpu_id": 5,
"ok": true,
"set_limit": 700.0,
"diag_msg": "Success"
},
{
"resource_name": "node001",
"gpu_id": 6,
"ok": true,
"set_limit": 550.0,
"diag_msg": "Success"
},
{
"resource_name": "node001",
"gpu_id": 7,
"ok": true,
"set_limit": 600.0,
"diag_msg": "Success"
}
],
"status": {
"ok": true,
"diag_msg": "Success"
}
}