in pkg/gpu/nvidia/manager.go [205:232]
func (ngm *nvidiaGPUManager) DeviceSpec(deviceID string) ([]pluginapi.DeviceSpec, error) {
deviceSpecs := make([]pluginapi.DeviceSpec, 0)
// With GPU sharing, the input deviceID will be a virtual Device ID.
// We need to map it to the corresponding physical device ID.
if ngm.gpuConfig.GPUSharingConfig.MaxSharedClientsPerGPU > 0 {
physicalDeviceID, err := gpusharing.VirtualToPhysicalDeviceID(deviceID)
if err != nil {
return nil, err
}
deviceID = physicalDeviceID
}
if ngm.gpuConfig.GPUPartitionSize == "" {
dev, ok := ngm.devices[deviceID]
if !ok {
return deviceSpecs, fmt.Errorf("invalid allocation request with non-existing device %s", deviceID)
}
if dev.Health != pluginapi.Healthy {
return deviceSpecs, fmt.Errorf("invalid allocation request with unhealthy device %s", deviceID)
}
deviceSpecs = append(deviceSpecs, pluginapi.DeviceSpec{
HostPath: path.Join(ngm.devDirectory, deviceID),
ContainerPath: path.Join(ngm.devDirectory, deviceID),
Permissions: "mrw",
})
return deviceSpecs, nil
}
return ngm.migDeviceManager.DeviceSpec(deviceID)
}