Skip to content

Commit 693cd2e

Browse files
committed
add basic gpu support
1 parent 609c1a3 commit 693cd2e

2 files changed

Lines changed: 26 additions & 0 deletions

File tree

internal/commands/deploy.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ var Deploy = &cli.Command{
2727
containerPortFlag,
2828
requestedMemoryFlag,
2929
requestedCPUFlag,
30+
requestedGPUFlag,
3031
additionalContainerPortsFlag,
3132
envVarsFlag,
3233
idleTimeoutFlag,
@@ -77,6 +78,7 @@ var Deploy = &cli.Command{
7778
ContainerPort: deploy.ContainerPort,
7879
RequestedMemoryMB: deploy.RequestedMemoryMB,
7980
RequestedCPU: deploy.RequestedCPU,
81+
ExperimentalRequestedGPU: &deploy.RequestedGPU, // TODO: add support for final API field when it exists
8082
AdditionalContainerPorts: deploy.AdditionalContainerPorts,
8183
Env: deploy.Env,
8284
DeploymentTag: deploymentTag,
@@ -149,6 +151,11 @@ func (c *DeployConfig) Merge(latest *components.DeploymentV3, isIdleTimeoutDefau
149151
c.RequestedCPU = latest.RequestedCPU
150152
}
151153

154+
if c.RequestedGPU == 0 {
155+
// TODO: add support for final API field when it exists
156+
c.RequestedGPU = *latest.ExperimentalRequestedGPU
157+
}
158+
152159
if len(c.AdditionalContainerPorts) == 0 {
153160
c.AdditionalContainerPorts = latest.AdditionalContainerPorts
154161
}

internal/commands/deployment.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,7 @@ var Deployment = &cli.Command{
181181
ContainerPort: deployment.ContainerPort,
182182
RequestedMemoryMB: deployment.RequestedMemoryMB,
183183
RequestedCPU: deployment.RequestedCPU,
184+
ExperimentalRequestedGPU: &deployment.RequestedGPU, // TODO: add support for final API field when it exists
184185
AdditionalContainerPorts: deployment.AdditionalContainerPorts,
185186
Env: deployment.Env,
186187
DeploymentTag: deploymentTag,
@@ -297,6 +298,17 @@ var (
297298
Category: "Deployment:",
298299
}
299300

301+
requestedGPUFlag = &workaround.FloatFlag{
302+
Name: "requested-gpu",
303+
Sources: cli.NewValueSourceChain(
304+
cli.EnvVar(deploymentEnvVar("REQUESTED_GPU")),
305+
altsrc.ConfigFile(configFlag.Name, "deployment.requested-gpu"),
306+
),
307+
Usage: "`<gpus>` to allocate to your process",
308+
Persistent: true,
309+
Category: "Deployment:",
310+
}
311+
300312
fromLatestFlag = &cli.BoolFlag{
301313
Name: "from-latest",
302314
Sources: cli.EnvVars(deploymentEnvVar("FROM_LATEST")),
@@ -457,6 +469,7 @@ type CreateDeploymentConfig struct {
457469
ContainerPort int
458470
RequestedMemoryMB float64
459471
RequestedCPU float64
472+
RequestedGPU float64
460473
AdditionalContainerPorts []components.ContainerPort
461474
Env []components.DeploymentConfigV3Env
462475
DeploymentTag string
@@ -490,6 +503,7 @@ func (c *CreateDeploymentConfig) Load(cmd *cli.Command) error {
490503
c.ContainerPort = int(cmd.Int(containerPortFlag.Name))
491504
c.RequestedMemoryMB = cmd.Float(requestedMemoryFlag.Name)
492505
c.RequestedCPU = cmd.Float(requestedCPUFlag.Name)
506+
c.RequestedGPU = cmd.Float(requestedGPUFlag.Name)
493507
c.DeploymentTag = cmd.String(deploymentTagFlag.Name)
494508

495509
addlPorts := cmd.StringSlice(additionalContainerPortsFlag.Name)
@@ -542,6 +556,11 @@ func (c *CreateDeploymentConfig) Merge(latest *components.DeploymentV3) {
542556
c.RequestedCPU = latest.RequestedCPU
543557
}
544558

559+
if c.RequestedGPU == 0 {
560+
// TODO: add support for final API field when it exists
561+
c.RequestedGPU = *latest.ExperimentalRequestedGPU
562+
}
563+
545564
if len(c.AdditionalContainerPorts) == 0 {
546565
c.AdditionalContainerPorts = latest.AdditionalContainerPorts
547566
}

0 commit comments

Comments
 (0)