Skip to content

Commit 21d23bc

Browse files
committed
Add update-nvidia-params hook to CDI spec
Signed-off-by: Evan Lezar <[email protected]>
1 parent 6396e19 commit 21d23bc

File tree

3 files changed

+30
-0
lines changed

3 files changed

+30
-0
lines changed

pkg/nvcdi/api.go

+3
Original file line numberDiff line numberDiff line change
@@ -44,4 +44,7 @@ const (
4444
// HookEnableCudaCompat refers to the hook used to enable CUDA Forward Compatibility.
4545
// This was added with v1.17.5 of the NVIDIA Container Toolkit.
4646
HookEnableCudaCompat = HookName("enable-cuda-compat")
47+
// HookUpdateNvidiaParams refers to the hook used to ensure that device nodes
48+
// are not created by nvidia-smi in a container.
49+
HookUpdateNvidiaParams = HookName("update-nvidia-params")
4750
)

pkg/nvcdi/driver-nvml.go

+8
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,14 @@ func (l *nvcdilib) NewDriverLibraryDiscoverer(version string) (discover.Discover
115115
updateLDCache, _ := discover.NewLDCacheUpdateHook(l.logger, libraries, l.nvidiaCDIHookPath, l.ldconfigPath)
116116
discoverers = append(discoverers, updateLDCache)
117117

118+
if l.HookIsSupported(HookUpdateNvidiaParams) {
119+
updateNvidiaParams := discover.CreateNvidiaCDIHook(
120+
l.nvidiaCDIHookPath,
121+
"update-nvidia-params",
122+
)
123+
discoverers = append(discoverers, updateNvidiaParams)
124+
}
125+
118126
d := discover.Merge(discoverers...)
119127

120128
return d, nil

tests/e2e/nvidia-container-toolkit_test.go

+19
Original file line numberDiff line numberDiff line change
@@ -215,4 +215,23 @@ var _ = Describe("docker", Ordered, ContinueOnFailure, func() {
215215
Expect(ldconfigOut).To(ContainSubstring("/usr/lib64"))
216216
})
217217
})
218+
219+
Describe("Disabling device node creation", Ordered, func() {
220+
BeforeAll(func(ctx context.Context) {
221+
_, _, err := r.Run("docker pull ubuntu")
222+
Expect(err).ToNot(HaveOccurred())
223+
})
224+
225+
It("should work with nvidia-container-runtime-hook", func(ctx context.Context) {
226+
output, _, err := r.Run("docker run --rm -i --runtime=runc --gpus=all ubuntu bash -c \"grep ModifyDeviceFiles: /proc/driver/nvidia/params\"")
227+
Expect(err).ToNot(HaveOccurred())
228+
Expect(output).To(Equal("ModifyDeviceFiles: 0\n"))
229+
})
230+
231+
It("should work with automatic CDI spec generation", func(ctx context.Context) {
232+
output, _, err := r.Run("docker run --rm -i --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=runtime.nvidia.com/gpu=all ubuntu bash -c \"grep ModifyDeviceFiles: /proc/driver/nvidia/params\"")
233+
Expect(err).ToNot(HaveOccurred())
234+
Expect(output).To(Equal("ModifyDeviceFiles: 0\n"))
235+
})
236+
})
218237
})

0 commit comments

Comments
 (0)