@@ -518,6 +518,50 @@ def update_inferencing_channels_label():
518518 return gr .update (minimum = 1 , value = 8 , label = INFERENCING_CHANNELS_LABEL )
519519
520520
521+ def select_preferred_devices (device_list ):
522+ """
523+ Returns:
524+ preferred_device: str - preferred device for inference (GPU > NPU > CPU)
525+ non_npu_preferred_device: str - preferred device for inference, but never NPU (GPU > CPU)
526+ """
527+ # Select preferred device for inference
528+ # 1. If any discrete GPU, pick the one with the smallest gpu_id
529+ # 2. If any GPU, pick the one with the smallest gpu_id
530+ # 3. Else pick NPU
531+ # 4. Else pick CPU
532+
533+ # Find discrete GPUs
534+ discrete_gpus = [
535+ d
536+ for d in device_list
537+ if d .device_family == DeviceFamily .GPU and d .device_type == DeviceType .DISCRETE
538+ ]
539+ if discrete_gpus :
540+ # Pick discrete GPU with smallest gpu_id
541+ preferred_device = min (discrete_gpus , key = lambda d : d .gpu_id ).device_name
542+ non_npu_preferred_device = preferred_device
543+ else :
544+ # Find any GPU
545+ gpus = [d for d in device_list if d .device_family == DeviceFamily .GPU ]
546+ if gpus :
547+ # Pick GPU with smallest gpu_id
548+ preferred_device = min (gpus , key = lambda d : d .gpu_id ).device_name
549+ non_npu_preferred_device = preferred_device
550+ else :
551+ # Find NPU
552+ npus = [d for d in device_list if d .device_family == DeviceFamily .NPU ]
553+ if npus :
554+ # Pick first NPU
555+ preferred_device = npus [0 ].device_name
556+ # For non_npu_preferred_device, fallback to CPU if no GPU
557+ non_npu_preferred_device = "CPU"
558+ else :
559+ # Default to CPU
560+ preferred_device = "CPU"
561+ non_npu_preferred_device = "CPU"
562+ return preferred_device , non_npu_preferred_device
563+
564+
521565# Create the interface
522566def create_interface (title : str = "Visual Pipeline and Platform Evaluation Tool" ):
523567 """
@@ -636,39 +680,18 @@ def create_interface(title: str = "Visual Pipeline and Platform Evaluation Tool"
636680 # Inference accordion
637681 inference_accordion = gr .Accordion ("Inference Parameters" , open = True )
638682
639- # Select preferred device for inference
640- # 1. If any discrete GPU, pick the one with the smallest gpu_id
641- # 2. If any GPU, pick the one with the smallest gpu_id
642- # 3. Else pick NPU
643- # 4. Else pick CPU
644683 device_list = device_discovery .list_devices ()
645- # Find discrete GPUs
646- discrete_gpus = [
647- d
648- for d in device_list
649- if d .device_family == DeviceFamily .GPU and d .device_type == DeviceType .DISCRETE
650- ]
651- if discrete_gpus :
652- # Pick discrete GPU with smallest gpu_id
653- preferred_device = min (discrete_gpus , key = lambda d : d .gpu_id ).device_name
654- else :
655- # Find any GPU
656- gpus = [d for d in device_list if d .device_family == DeviceFamily .GPU ]
657- if gpus :
658- # Pick GPU with smallest gpu_id
659- preferred_device = min (gpus , key = lambda d : d .gpu_id ).device_name
660- else :
661- # Find NPU
662- npus = [d for d in device_list if d .device_family == DeviceFamily .NPU ]
663- if npus :
664- # Pick first NPU
665- preferred_device = npus [0 ].device_name
666- else :
667- # Default to CPU
668- preferred_device = "CPU"
669684
670- # Get available devices for inference
685+ # Get available devices
671686 devices = [(device .full_device_name , device .device_name ) for device in device_list ]
687+ non_npu_devices = [
688+ (device .full_device_name , device .device_name )
689+ for device in device_list
690+ if device .device_family != DeviceFamily .NPU
691+ ]
692+
693+ # Select preferred devices
694+ preferred_device , non_npu_preferred_device = select_preferred_devices (device_list )
672695
673696 # Object detection model
674697 # Mapping of these choices to actual model path in utils.py
@@ -799,8 +822,8 @@ def create_interface(title: str = "Visual Pipeline and Platform Evaluation Tool"
799822 # Compositor device
800823 compositor_device = gr .Dropdown (
801824 label = "Compositor Device" ,
802- choices = devices ,
803- value = preferred_device ,
825+ choices = non_npu_devices ,
826+ value = non_npu_preferred_device ,
804827 elem_id = "compositor_device" ,
805828 )
806829
0 commit comments