@@ -518,6 +518,50 @@ def update_inferencing_channels_label():
518
518
return gr .update (minimum = 1 , value = 8 , label = INFERENCING_CHANNELS_LABEL )
519
519
520
520
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
+
521
565
# Create the interface
522
566
def create_interface (title : str = "Visual Pipeline and Platform Evaluation Tool" ):
523
567
"""
@@ -636,39 +680,18 @@ def create_interface(title: str = "Visual Pipeline and Platform Evaluation Tool"
636
680
# Inference accordion
637
681
inference_accordion = gr .Accordion ("Inference Parameters" , open = True )
638
682
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
644
683
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"
669
684
670
- # Get available devices for inference
685
+ # Get available devices
671
686
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 )
672
695
673
696
# Object detection model
674
697
# 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"
799
822
# Compositor device
800
823
compositor_device = gr .Dropdown (
801
824
label = "Compositor Device" ,
802
- choices = devices ,
803
- value = preferred_device ,
825
+ choices = non_npu_devices ,
826
+ value = non_npu_preferred_device ,
804
827
elem_id = "compositor_device" ,
805
828
)
806
829
0 commit comments