Привет, у меня есть приложение, которое может использовать NPU в новых процессорах Core Ultra, установленных в моем PVE-хосте. Приложение будет работать в Ubuntu, и у Intel готовы драйверы для установки в виртуальной машине. Я не уверен, как его передать виртуальной машине, оно не отображается в списке устройств на экране PCI-отображения. Думаю, мне придется сначала установить драйверы на хост? Похоже, что apt-пакеты можно получить у Intel, если подписаться на их SDK-программу: https://amrdocs.intel.com/docs/2.2/gsg_robot/install-npu-driver.html Есть ли кто-нибудь еще, кто это делал или у кого есть какие-нибудь советы, пожалуйста? Спасибо, Oli.
Я никогда не делал passthrough с Intel, но возможно, что с этими новыми поколениями GPU потребуется предоставить драйвер на хосте, который сможет разделить GPU на 2 или 4 "mediated devices". Один из этих mediated devices вы потом выберете для passthrough. Это дает вам ускорение внутри VM, но без VGA-выхода. Если вам нужен VGA-выход из VM, вам нужно будет passthrough всего устройства, и нет, с этим вам не нужен драйвер на хосте. Тогда нужно активировать IOMMU + VT-d, соответственно, AMD-Vi в BIOS. https://pve.proxmox.com/wiki/PCI(e)_Passthrough
Спасибо. Хочу добавить, что хотя концепции похожи, NPU, насколько я знаю, это не совсем тип GPU (по крайней мере). Но он есть на чипе, так что, наверное, схожий подход применим. Мне не нужно, чтобы VM имели VGA-вывод и все такое, это все для обработки на бэкенде. Поэтому, когда я смотрю на сопоставление PCI-устройства, добавляя его, я вижу список пунктов в выпадающем списке (необработанное устройство) - включая контроллеры TB4 и т.д., но ничего, что относится к NPU, я не вижу. Я проверил до установки, и IOMMU и т.д. были включены в BIOS. Думаю, тот факт, что я вижу некоторые устройства для сопоставления, говорит о том, что передача работает в какой-то степени.
В общем, особой разницы нет, GPU с физическим VGA-коннектором или без внутри VM - это просто акселератор... opencl, vulkan, CUDA, tensorflow, pytorch... У меня пока нет опыта с NPU, возможно, они привязаны к GPU, даже при разделении IOMMU-групп. Вот lspci от Ryzen 8600G, там вроде должна быть NPU:
Code: 00:00.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Device 14e8 00:00.2 IOMMU: Advanced Micro Devices, Inc. [AMD] Device 14e9 00:01.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Device 14ea 00:01.1 PCI bridge: Advanced Micro Devices, Inc. [AMD] Device 14ed 00:01.2 PCI bridge: Advanced Micro Devices, Inc. [AMD] Device 14ed 00:02.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Device 14ea 00:02.1 PCI bridge: Advanced Micro Devices, Inc. [AMD] Device 14ee 00:02.2 PCI bridge: Advanced Micro Devices, Inc. [AMD] Device 14ee 00:03.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Device 14ea 00:04.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Device 14ea 00:08.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Device 14ea 00:08.1 PCI bridge: Advanced Micro Devices, Inc. [AMD] Device 14eb 00:08.2 PCI bridge: Advanced Micro Devices, Inc. [AMD] Device 14eb 00:08.3 PCI bridge: Advanced Micro Devices, Inc. [AMD] Device 14eb 00:14.0 SMBus: Advanced Micro Devices, Inc. [AMD] FCH SMBus Controller (rev 71) 00:14.3 ISA bridge: Advanced Micro Devices, Inc. [AMD] FCH LPC Bridge (rev 51) 00:18.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Device 14f0 00:18.1 Host bridge: Advanced Micro Devices, Inc. [AMD] Device 14f1 00:18.2 Host bridge: Advanced Micro Devices, Inc. [AMD] Device 14f2 00:18.3 Host bridge: Advanced Micro Devices, Inc. [AMD] Device 14f3 00:18.4 Host bridge: Advanced Micro Devices, Inc. [AMD] Device 14f4 00:18.5 Host bridge: Advanced Micro Devices, Inc. [AMD] Device 14f5 00:18.6 Host bridge: Advanced Micro Devices, Inc. [AMD] Device 14f6 00:18.7 Host bridge: Advanced Micro Devices, Inc. [AMD] Device 14f7 01:00.0 VGA compatible controller: NVIDIA Corporation GP107 [GeForce GTX 1050 Ti] (rev a1) 01:00.1 Audio device: NVIDIA Corporation GP107GL High Definition Audio Controller (rev a1) 02:00.0 Non-Volatile memory controller: Micron Technology Inc 7450 PRO NVMe SSD (rev 01) 03:00.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] 600 Series Chipset PCIe Switch Upstream Port (rev 01) 04:00.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] 600 Series Chipset PCIe Switch Downstream Port (rev 01) 04:08.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] 600 Series Chipset PCIe Switch Downstream Port (rev 01) 04:09.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] 600 Series Chipset PCIe Switch Downstream Port (rev 01) 04:0a.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] 600 Series Chipset PCIe Switch Downstream Port (rev 01) 04:0c.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] 600 Series Chipset PCIe Switch Downstream Port (rev 01) 04:0d.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] 600 Series Chipset PCIe Switch Downstream Port (rev 01) 05:00.0 Ethernet controller: Solarflare Communications SFC9120 10G Ethernet Controller (rev 01) 05:00.1 Ethernet controller: Solarflare Communications SFC9120 10G Ethernet Controller (rev 01) 08:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8125 2.5GbE Controller (rev 05) 09:00.0 USB controller: Advanced Micro Devices, Inc. [AMD] 600 Series Chipset USB 3.2 Controller (rev 01) 0a:00.0 SATA controller: Advanced Micro Devices, Inc. [AMD] 600 Series Chipset SATA Controller (rev 01) 0b:00.0 Non-Volatile memory controller: Seagate Technology PLC FireCuda 530 SSD (rev 01) 0c:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Phoenix1 (rev 05) 0c:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Rembrandt Radeon High Definition Audio Controller 0c:00.2 Encryption controller: Advanced Micro Devices, Inc. [AMD] Family 19h (Model 74h) CCP/PSP 3.0 Device 0c:00.3 USB controller: Advanced Micro Devices, Inc. [AMD] Device 15b9 0c:00.4 USB controller: Advanced Micro Devices, Inc. [AMD] Device 15ba 0c:00.6 Audio device: Advanced Micro Devices, Inc. [AMD] Family 17h/19h HD Audio Controller 0d:00.0 Non-Essential Instrumentation [1300]: Advanced Micro Devices, Inc. [AMD] Device 14ec 0d:00.1 Signal processing controller: Advanced Micro Devices, Inc. [AMD] AMD IPU Device 0e:00.0 Non-Essential Instrumentation [1300]: Advanced Micro Devices, Inc. [AMD] Device 14ec 0e:00.3 USB controller: Advanced Micro Devices, Inc. [AMD] Device 15c0 0e:00.4 USB controller: Advanced Micro Devices, Inc. [AMD] Device 15c1 My best guess would be 0c:00.2 Encryption controller: Advanced Micro Devices, Inc. [AMD] Family 19h (Model 74h) CCP/PSP 3.0 Device or 0d:00.1 Signal processing controller: Advanced Micro Devices, Inc. [AMD] AMD IPU Device
Окей, я кое-каких успехов добился *по-моему*. Похоже, разобрался с PCI ID – он оказался 00:0b.0, и передал это значение. Теперь я вижу PCI-устройство внутри VM, но после установки драйвера внутри VM получаю вот это:
1. 615869] intel\_vpu 0000:00:10.0: \[drm] Firmware: intel/vpu/vpu\_37xx\_v0.0.bin, version: 0726\*MTL\_CLIENT\_SILICON-release\*2101\*ci\_tag\_mtl\_pv\_vpu\_rc\_20230726\_2101\*648a666b8b9 [ 2.670924] intel\_vpu 0000:00:10.0: \[drm] \*ERROR\* ivpu\_boot(): Не удалось загрузить прошивку: -110 [ 2.671105] intel\_vpu 0000:00:10.0: \[drm] \*ERROR\* ivpu\_mmu\_dump\_event(): MMU EVTQ: 0x10 (Translation fault) SSID: 0 SID: 3, e\[2] 00000000, e\[3] 00000208, in addr: 0x84803000, fetch addr: 0x0 [ 2.671382] intel\_vpu 0000:00:10.0: \[drm] \*ERROR\* ivpu\_mmu\_dump\_event(): MMU EVTQ: 0x10 (Translation fault) SSID: 0 SID: 3, e\[2] 00000000, e\[3] 00000208, in addr: 0x84803010, fetch addr: 0x0 [ 2.675752] intel\_vpu 0000:00:10.0: \[drm] ivpu\_hw\_37xx\_power\_down(): VPU не простаивает во время выключения питания [ 2.676306] intel\_vpu: probe of 0000:00:10.0 failed with error -110
[ 124.667316] intel\_vpu 0000:00:10.0: \[drm] Firmware: intel/vpu/vpu\_37xx\_v0.0.bin, version: 025\*MTL\_CLIENT\_SILICON-release\*1830\*ci\_tag\_ud202444\_vpu\_rc\_20241025\_1830\*ae072b315bc [ 125.670862] intel\_vpu 0000:00:10.0: \[drm] \*ERROR\* ivpu\_boot(): Не удалось загрузить прошивку: -110 [ 125.670889] intel\_vpu 0000:00:10.0: \[drm] \*ERROR\* ivpu\_mmu\_dump\_event(): MMU EVTQ: 0x10 (Translation fault) SSID: 0 SID: 3, e\[2] 00000000, e\[3] 00000208, in addr: 0x84803000, fetch addr: 0x0 [ 125.670902] intel\_vpu 0000:00:10.0: \[drm] \*ERROR\* ivpu\_mmu\_dump\_event(): MMU EVTQ: 0x10 (Translation fault) SSID: 0 SID: 3, e\[2] 00000000, e\[3] 00000208, in addr: 0x84803010, fetch addr: 0x0 [ 125.681336] intel\_vpu 0000:00:10.0: \[drm] ivpu\_hw\_37xx\_power\_down(): VPU не простаивает во время выключения питания [ 125.683518] intel\_vpu: probe of 0000:00:10.0 failed with error -110
(Sorry code option doesn’t work on iOS) Могу описать, что делал, чтобы дойти до этого, но хочу сначала разобраться с остальным.
Мгм, возможно, в BIOS нужно что-то включить. Существует ли этот путь, и есть ли там файл? intel/vpu/vpu_37xx_v0.0.bin где бы он ни был. Пожалуйста, покажи полный вывод lspci с хоста и VM.
Выглядит неплохо, это должно быть правильное устройство. Что это?: Код: 00:04.0 Контроллер обработки сигналов: Intel Corporation Device ad03 (rev 01) 00:0a.0 Контроллер обработки сигналов: Intel Corporation Device ad0d (rev 01) Эти ошибки похожи на те, что возникают при пробросе GPU без его аудиоустройства. Например, у моей NVIDIA нужны оба устройства для работы, даже если аудио-часть не используется: Код: 01:00.0 VGA-совместимый контроллер: NVIDIA Corporation GP107 [GeForce GTX 1050 Ti] (rev a1) 01:00.1 Аудиоустройство: NVIDIA Corporation GP107GL High Definition Audio Controller (rev a1) = 01:00.0 + 01:00.1 Поэтому просто предположение, но, возможно, вам нужно, чтобы эти устройства работали вместе: Код: 00:0a.0 Контроллер обработки сигналов: Intel Corporation Device ad0d (rev 01) 00:0b.0 Ускорители обработки: Intel Corporation Arrow Lake NPU (rev 01) Или просто 00:0b.0 + "Все функции" отключены.
У меня та же проблема. Единственное отличие в том, что на хосте все работает, а внутри гостевой виртуальной машины (Ubuntu 24) я получаю ошибку "Failed to boot the firmware: -110". Я перепробовал, кажется, все и надеюсь, что кто-то уже нашел решение.
Обратите внимание на последнюю строку; NPU передается в ВМ. Я знаю, что у меня Meteor Lake, но я также пробовал это, и безрезультатно. Мне кажется, что это ошибка драйвера, но возможно, я что-то делаю неправильно. Буду благодарен за любую помощь – спасибо заранее.