Skip to content

Commit

Permalink
Merge pull request #376 from elezar/cherry-pick-v1.14.6
Browse files Browse the repository at this point in the history
Cherry pick v1.14.6
  • Loading branch information
elezar authored Feb 27, 2024
2 parents d57d834 + 8281e7d commit 5d246ad
Show file tree
Hide file tree
Showing 5 changed files with 24 additions and 3 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
# NVIDIA Container Toolkit Changelog

## v1.14.6
* Add support for extracting device major number from `/proc/devices` if `nvidia` is used as a device name over `nvidia-frontend`.
* Add support for selecting IMEX channels using the NVIDIA_IMEX_CHANNELS environement variable.

## v1.14.5
* Fix `nvidia-ctk runtime configure --cdi.enabled` for Docker. This was incorrectly setting `experimental = true` instead
Expand Down
18 changes: 17 additions & 1 deletion cmd/nvidia-container-runtime-hook/container_config.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,10 @@ import (
"path/filepath"
"strings"

"github.com/NVIDIA/nvidia-container-toolkit/internal/config/image"
"github.com/opencontainers/runtime-spec/specs-go"
"golang.org/x/mod/semver"

"github.com/NVIDIA/nvidia-container-toolkit/internal/config/image"
)

const (
Expand All @@ -22,6 +23,7 @@ const (
envNVVisibleDevices = "NVIDIA_VISIBLE_DEVICES"
envNVMigConfigDevices = "NVIDIA_MIG_CONFIG_DEVICES"
envNVMigMonitorDevices = "NVIDIA_MIG_MONITOR_DEVICES"
envNVImexChannels = "NVIDIA_IMEX_CHANNELS"
envNVDriverCapabilities = "NVIDIA_DRIVER_CAPABILITIES"
)

Expand All @@ -37,6 +39,7 @@ type nvidiaConfig struct {
Devices string
MigConfigDevices string
MigMonitorDevices string
ImexChannels string
DriverCapabilities string
// Requirements defines the requirements DSL for the container to run.
// This is empty if no specific requirements are needed, or if requirements are
Expand Down Expand Up @@ -271,6 +274,13 @@ func getMigMonitorDevices(env map[string]string) *string {
return nil
}

func getImexChannels(env map[string]string) *string {
if chans, ok := env[envNVImexChannels]; ok {
return &chans
}
return nil
}

func (c *HookConfig) getDriverCapabilities(env map[string]string, legacyImage bool) image.DriverCapabilities {
// We use the default driver capabilities by default. This is filtered to only include the
// supported capabilities
Expand Down Expand Up @@ -324,6 +334,11 @@ func getNvidiaConfig(hookConfig *HookConfig, image image.CUDA, mounts []Mount, p
log.Panicln("cannot set MIG_MONITOR_DEVICES in non privileged container")
}

var imexChannels string
if c := getImexChannels(image); c != nil {
imexChannels = *c
}

driverCapabilities := hookConfig.getDriverCapabilities(image, legacyImage).String()

requirements, err := image.GetRequirements()
Expand All @@ -335,6 +350,7 @@ func getNvidiaConfig(hookConfig *HookConfig, image image.CUDA, mounts []Mount, p
Devices: devices,
MigConfigDevices: migConfigDevices,
MigMonitorDevices: migMonitorDevices,
ImexChannels: imexChannels,
DriverCapabilities: driverCapabilities,
Requirements: requirements,
}
Expand Down
3 changes: 3 additions & 0 deletions cmd/nvidia-container-runtime-hook/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,9 @@ func doPrestart() {
if len(nvidia.MigMonitorDevices) > 0 {
args = append(args, fmt.Sprintf("--mig-monitor=%s", nvidia.MigMonitorDevices))
}
if len(nvidia.ImexChannels) > 0 {
args = append(args, fmt.Sprintf("--imex-channel=%s", nvidia.ImexChannels))
}

for _, cap := range strings.Split(nvidia.DriverCapabilities, ",") {
if len(cap) == 0 {
Expand Down
2 changes: 1 addition & 1 deletion third_party/libnvidia-container
Submodule libnvidia-container updated from 8971b9 to d2eb0a
2 changes: 1 addition & 1 deletion versions.mk
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
# limitations under the License.

LIB_NAME := nvidia-container-toolkit
LIB_VERSION := 1.14.5
LIB_VERSION := 1.14.6
LIB_TAG :=

# The package version is the combination of the library version and tag.
Expand Down

0 comments on commit 5d246ad

Please sign in to comment.