Skip to content

Commit 5941068

Browse files
committed
npu mustn't act as compositor_device
1 parent 5443aa4 commit 5941068

File tree

1 file changed

+55
-32
lines changed
  • tools/visual-pipeline-and-platform-evaluation-tool

1 file changed

+55
-32
lines changed

tools/visual-pipeline-and-platform-evaluation-tool/app.py

Lines changed: 55 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -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
522566
def 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

Comments
 (0)