(
&self,
gpu_requirements: Option<&GpuResourceRequirements>,
driver_config: &DockerSandboxDriverConfig,
select_default_devices: fn(
&CdiGpuDefaultSelector,
| 596 | } |
| 597 | |
| 598 | async fn resolve_gpu_cdi_devices( |
| 599 | &self, |
| 600 | gpu_requirements: Option<&GpuResourceRequirements>, |
| 601 | driver_config: &DockerSandboxDriverConfig, |
| 602 | select_default_devices: fn( |
| 603 | &CdiGpuDefaultSelector, |
| 604 | u32, |
| 605 | ) -> Result<Vec<String>, CdiGpuSelectionError>, |
| 606 | ) -> Result<Option<Vec<String>>, Status> { |
| 607 | if let Some(cdi_devices) = driver_config.cdi_devices.as_deref() { |
| 608 | validate_specific_gpu_device_request( |
| 609 | gpu_requirements, |
| 610 | cdi_devices, |
| 611 | "driver_config.cdi_devices", |
| 612 | ) |
| 613 | .map_err(Status::invalid_argument)?; |
| 614 | return Ok(Some(cdi_devices.to_vec())); |
| 615 | } |
| 616 | |
| 617 | let Some(count) = |
| 618 | effective_driver_gpu_count(gpu_requirements).map_err(Status::invalid_argument)? |
| 619 | else { |
| 620 | return Ok(None); |
| 621 | }; |
| 622 | |
| 623 | self.refresh_gpu_inventory().await?; |
| 624 | select_default_devices(&self.gpu_selector, count) |
| 625 | .map(Some) |
| 626 | .map_err(docker_gpu_selection_status) |
| 627 | } |
| 628 | |
| 629 | async fn get_sandbox_snapshot( |
| 630 | &self, |
no test coverage detected