Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 1 addition & 8 deletions internal/config/image/cuda_image.go
Original file line number Diff line number Diff line change
Expand Up @@ -180,14 +180,7 @@ func (i CUDA) devicesFromEnvvars(envVars ...string) []string {

// GetDriverCapabilities returns the requested driver capabilities.
func (i CUDA) GetDriverCapabilities() DriverCapabilities {
env := i.env[EnvVarNvidiaDriverCapabilities]

capabilities := make(DriverCapabilities)
for c := range strings.SplitSeq(env, ",") {
capabilities[DriverCapability(c)] = true
}

return capabilities
return NewDriverCapabilities(i.env[EnvVarNvidiaDriverCapabilities])
}

func (i CUDA) legacyVersion() (string, error) {
Expand Down
50 changes: 50 additions & 0 deletions internal/config/image/cuda_image_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -216,6 +216,56 @@ func TestGetRequirements(t *testing.T) {
}
}

func TestGetDriverCapabilities(t *testing.T) {
testCases := []struct {
description string
env map[string]string
expected []string
}{
{
description: "envvar unset",
expected: nil,
},
{
description: "envvar empty",
env: map[string]string{
EnvVarNvidiaDriverCapabilities: "",
},
expected: nil,
},
{
description: "comma-separated capabilities",
env: map[string]string{
EnvVarNvidiaDriverCapabilities: "compute,graphics",
},
expected: []string{"compute", "graphics"},
},
{
description: "whitespace around capabilities is trimmed",
env: map[string]string{
EnvVarNvidiaDriverCapabilities: " compute , graphics ",
},
expected: []string{"compute", "graphics"},
},
{
description: "empty entries are ignored",
env: map[string]string{
EnvVarNvidiaDriverCapabilities: "compute,,utility,",
},
expected: []string{"compute", "utility"},
},
}

for _, tc := range testCases {
t.Run(tc.description, func(t *testing.T) {
image, err := New(WithEnvMap(tc.env))
require.NoError(t, err)

require.EqualValues(t, tc.expected, image.GetDriverCapabilities().List())
})
}
}

func TestGetDevicesFromEnvvar(t *testing.T) {
envDockerResourceGPUs := "DOCKER_RESOURCE_GPUS"
gpuID := "GPU-12345"
Expand Down
8 changes: 8 additions & 0 deletions internal/modifier/graphics_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,14 @@ func TestGraphicsModifier(t *testing.T) {
},
expectedDevices: []string{"all"},
},
{
description: "devices with whitespace around graphics capability creates modifier",
envmap: map[string]string{
"NVIDIA_VISIBLE_DEVICES": "all",
"NVIDIA_DRIVER_CAPABILITIES": "compute, graphics",
},
expectedDevices: []string{"all"},
},
{
description: "devices with display capability creates modifier",
envmap: map[string]string{
Expand Down