14
14
# limitations under the License.
15
15
**/
16
16
17
- package nvcdi
17
+ package dgpu
18
18
19
19
import (
20
20
"fmt"
@@ -31,66 +31,50 @@ import (
31
31
"github.com/NVIDIA/nvidia-container-toolkit/internal/lookup/root"
32
32
)
33
33
34
- // NewDriverDiscoverer creates a discoverer for the libraries and binaries associated with a driver installation.
35
- // The supplied NVML Library is used to query the expected driver version.
36
- func NewDriverDiscoverer (logger logger.Interface , driver * root.Driver , nvidiaCDIHookPath string , ldconfigPath string , version string ) (discover.Discover , error ) {
37
- return newDriverVersionDiscoverer (logger , driver , nvidiaCDIHookPath , ldconfigPath , version )
38
- }
39
-
40
- func newDriverVersionDiscoverer (logger logger.Interface , driver * root.Driver , nvidiaCDIHookPath , ldconfigPath , version string ) (discover.Discover , error ) {
41
- libraries , err := NewDriverLibraryDiscoverer (logger , driver , nvidiaCDIHookPath , ldconfigPath , version )
34
+ // newNvmlDriverDiscoverer constructs a discoverer from the specified NVML library.
35
+ func (o * options ) newNvmlDriverDiscoverer () (discover.Discover , error ) {
36
+ libraries , err := o .newNvmlDriverLibraryDiscoverer ()
42
37
if err != nil {
43
38
return nil , fmt .Errorf ("failed to create discoverer for driver libraries: %v" , err )
44
39
}
45
40
46
- ipcs , err := discover .NewIPCDiscoverer (logger , driver .Root )
47
- if err != nil {
48
- return nil , fmt .Errorf ("failed to create discoverer for IPC sockets: %v" , err )
49
- }
50
-
51
- firmwares , err := NewDriverFirmwareDiscoverer (logger , driver .Root , version )
41
+ firmwares , err := o .newNvmlDriverFirmwareDiscoverer ()
52
42
if err != nil {
53
43
return nil , fmt .Errorf ("failed to create discoverer for GSP firmware: %v" , err )
54
44
}
55
45
56
- binaries := NewDriverBinariesDiscoverer ( logger , driver . Root )
46
+ binaries := o . newNvmlDriverBinariesDiscoverer ( )
57
47
58
48
d := discover .Merge (
59
49
libraries ,
60
- ipcs ,
61
50
firmwares ,
62
51
binaries ,
63
52
)
64
53
65
54
return d , nil
66
55
}
67
56
68
- // NewDriverLibraryDiscoverer creates a discoverer for the libraries associated with the specified driver version.
69
- func NewDriverLibraryDiscoverer ( logger logger. Interface , driver * root. Driver , nvidiaCDIHookPath , ldconfigPath , version string ) (discover.Discover , error ) {
70
- libraryPaths , err := getVersionLibs (logger , driver , version )
57
+ // newNvmlDriverLibraryDiscoverer creates a discoverer for the libraries associated with the specified driver version.
58
+ func ( o * options ) newNvmlDriverLibraryDiscoverer ( ) (discover.Discover , error ) {
59
+ libraryPaths , err := getVersionLibs (o . logger , o . driver , o . version )
71
60
if err != nil {
72
61
return nil , fmt .Errorf ("failed to get libraries for driver version: %v" , err )
73
62
}
74
63
75
64
libraries := discover .NewMounts (
76
- logger ,
65
+ o . logger ,
77
66
lookup .NewFileLocator (
78
- lookup .WithLogger (logger ),
79
- lookup .WithRoot (driver .Root ),
67
+ lookup .WithLogger (o . logger ),
68
+ lookup .WithRoot (o . driver .Root ),
80
69
),
81
- driver .Root ,
70
+ o . driver .Root ,
82
71
libraryPaths ,
83
72
)
84
73
85
- updateLDCache , _ := discover .NewLDCacheUpdateHook (logger , libraries , nvidiaCDIHookPath , ldconfigPath )
86
-
87
- d := discover .Merge (
88
- discover .WithDriverDotSoSymlinks (
89
- libraries ,
90
- version ,
91
- nvidiaCDIHookPath ,
92
- ),
93
- updateLDCache ,
74
+ d := discover .WithDriverDotSoSymlinks (
75
+ libraries ,
76
+ o .version ,
77
+ o .nvidiaCDIHookPath ,
94
78
)
95
79
96
80
return d , nil
@@ -138,31 +122,31 @@ func getCustomFirmwareClassPath(logger logger.Interface) string {
138
122
return strings .TrimSpace (string (customFirmwareClassPath ))
139
123
}
140
124
141
- // NewDriverFirmwareDiscoverer creates a discoverer for GSP firmware associated with the specified driver version.
142
- func NewDriverFirmwareDiscoverer ( logger logger. Interface , driverRoot string , version string ) (discover.Discover , error ) {
143
- gspFirmwareSearchPaths , err := getFirmwareSearchPaths (logger )
125
+ // newNvmlDriverFirmwareDiscoverer creates a discoverer for GSP firmware associated with the specified driver version.
126
+ func ( o * options ) newNvmlDriverFirmwareDiscoverer ( ) (discover.Discover , error ) {
127
+ gspFirmwareSearchPaths , err := getFirmwareSearchPaths (o . logger )
144
128
if err != nil {
145
129
return nil , fmt .Errorf ("failed to get firmware search paths: %v" , err )
146
130
}
147
- gspFirmwarePaths := filepath .Join ("nvidia" , version , "gsp*.bin" )
131
+ gspFirmwarePaths := filepath .Join ("nvidia" , o . version , "gsp*.bin" )
148
132
return discover .NewMounts (
149
- logger ,
133
+ o . logger ,
150
134
lookup .NewFileLocator (
151
- lookup .WithLogger (logger ),
152
- lookup .WithRoot (driverRoot ),
135
+ lookup .WithLogger (o . logger ),
136
+ lookup .WithRoot (o . driver . Root ),
153
137
lookup .WithSearchPaths (gspFirmwareSearchPaths ... ),
154
138
),
155
- driverRoot ,
139
+ o . driver . Root ,
156
140
[]string {gspFirmwarePaths },
157
141
), nil
158
142
}
159
143
160
- // NewDriverBinariesDiscoverer creates a discoverer for GSP firmware associated with the GPU driver.
161
- func NewDriverBinariesDiscoverer ( logger logger. Interface , driverRoot string ) discover.Discover {
144
+ // newNvmlDriverBinariesDiscoverer creates a discoverer for binaries associated with the specified driver version .
145
+ func ( o * options ) newNvmlDriverBinariesDiscoverer ( ) discover.Discover {
162
146
return discover .NewMounts (
163
- logger ,
164
- lookup .NewExecutableLocator (logger , driverRoot ),
165
- driverRoot ,
147
+ o . logger ,
148
+ lookup .NewExecutableLocator (o . logger , o . driver . Root ),
149
+ o . driver . Root ,
166
150
[]string {
167
151
"nvidia-smi" , /* System management interface */
168
152
"nvidia-debugdump" , /* GPU coredump utility */
0 commit comments