Як користуватися CUDA з NVIDIA Prime


10

Я знайшов півдесятка публікацій про це в усьому Інтернеті, але жодне з них насправді не відповідає на питання.

Я хочу налаштувати свій nvidia GPU, щоб він тільки робив обчислення, а не керував дисплеєм. Але коли я переходжу до використання графічного процесора Intel у конфігурації nvidia-prime, я більше не можу завантажувати модуль nvidia.

modprobe: ERROR: could not insert 'nvidia_352': No such device

Без модуля, CUDA, очевидно, не працює.

Отже, що саме робить nvidia-prime, що робить неможливим завантаження модуля? Це не в чорний список. Файлу xorg.conf немає, тож як система знає використовувати GPU Intel замість дискретного?

Я перебуваю на Dell 5510 Precision з встановленою на заводі Ubuntu 14.04, а мій GPU - Quadro M1000M.

Деякі пропонують використовувати джмеля, але це не повинно бути необхідним для чистих обчислень.

Також, мабуть, джміль здатний завантажити модуль. Так що саме це робить?

Оновлення: Тому чому завжди здається, що я знаходжу відповідь, коли нарешті розміщую запитання, після годин спроб розібратися. Це фактично лише часткова відповідь, але я на чомусь.

Поки я визначив, що прем'єр робить щонайменше дві речі:

  • Вимкніть GPU за допомогою bbswitch.
  • Змінює альтернативи для /etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf.

Використовуючи bbswitch, щоб увімкнути GPU, я тепер можу завантажити модуль NVIDIA.

Але питання все ще залишається: який найкращий спосіб налаштувати систему для використання карти NVIDIA лише для обчислень?

Чи варто встановити nvidia-prime на використання графічного процесора Intel і спробувати розкрити вручну, що це зробило для роботи CUDA?

Як переконатися, що система все ще використовує графічний процесор Intel для відображення?

Як би я не міг просто відключити NVIDIA prime та налаштувати все вручну?

Або я повинен jsut поступатися та користуватися джмелем та optirun? Які недоліки цього є, якщо такі є?

Будь-які рекомендації?


Чи можете вимкнути дисплей на графічному процесорі в додатку Налаштування сервера NVIDIA X?
Роджер Даль

Утиліта NVIDIA дозволяє вибирати лише Intel та NVIDIA GPU. Він не забезпечує тонкозернисті налаштування, наприклад, яку карту використовувати для відображення.
orodbhen

Відповіді:


5

У моєму випадку я виявив, що карта NVidia насправді не вимкнута, і єдине, що мені потрібно було зробити, щоб запустити код CUDA:

export LD_LIBRARY_PATH=/usr/lib/nvidia-352

в оболонці, де я хочу її запустити (я припускаю, що глобальна зміна параметрів альтернатив порушить compiz, тощо, тощо.)

Щоб дійти до цього пункту (на Dell Optiplex 7010, з Ubuntu 14.04, CUDA 7.5 та GTX 980), я вважаю, що кроки були такими:

  1. На вкладці Профілі PRIME виберіть Intel
  2. Перезавантажте систему та виберіть Intel в якості BIOS за замовчуванням
  3. Вимкніть комп’ютер
  4. Підключіть монітори до бортового відео :)

Начебто все працює нормально (nvidia-smi бачить карту, проби зразків cuda, theano використовує карту тощо)


1
Так, на жаль, здається, не існує послідовного рішення, саме тому я дуже хотів зрозуміти, що відбувається під капотом.
інструбхен

2

Я вважаю, що я знайшов принаймні коротке вирішення цього питання, як описано в оновленні до моєї початкової публікації. Дійсно, я знайшов два рішення, хоча я впевнений, що є й інші.

1 - У режимі Prime в режимі Intel знову ввімкніть картку NVIDIA через bbswitch , після чого запустіть modprobe nvidiaдля завантаження модуля та створення вузлів пристрою.

2 - Використовуйте Bumblebee optirun, щоб запустити баш-сеанс, з якого ви можете виконувати всі свої CUDA речі.

Обидва ці рішення дозволяють використовувати вбудовану графіку для дисплея, використовуючи карту NVIDIA для обчислення навантажень. Рішення optirun здається більш універсальним, але я віддаю перевагу першому для його мінімалізму.

Я сподіваюся, що хтось з більшою розумінням покращиться у цій відповіді.


Ви можете пояснити перший варіант більш чітко? Як увімкнути та вимкнути карту за допомогою bbswitch?
Абонець

Я насправді з’ясував, як змусити джмеля добре працювати, і я оновлю свою відповідь, коли отримаю час. Я в основному дотримувався цього . Розчаровує те, що цей матеріал настільки погано задокументований, бо він справді досить простий.
інструбхен

2

Я використовую NVIDIA-карту лише для виконання CUDA і дізнаюся такий підхід:

Я весь час використовую Intel-карту, і це підтверджується командою lspci | grep -E "VGA|3D":

00:02.0 VGA compatible controller: Intel Corporation Skylake Integrated Graphics (rev 06)
01:00.0 3D controller: NVIDIA Corporation GM107M [GeForce GTX 960M] (rev ff)

У відповідному рядку для NVIDIA-картки слід побачити, що (rev ff)вона вимкнена.

Щоб увімкнути карту та використати її для обчислень CUDA, я використовую дві наступні команди:

sudo prime-select nvidia
sudo prime-switch

Після цього lspci | grep -E "VGA|3D"звіту команди :

00:02.0 VGA compatible controller: Intel Corporation Skylake Integrated Graphics (rev 06)
01:00.0 3D controller: NVIDIA Corporation GM107M [GeForce GTX 960M] (rev a2)

Зауважте (rev a2), що не (rev ff)у відповідному рядку. Тепер карта готова до обчислення.

Після обчислень я використовую зворотні дії:

sudo prime-select intel
sudo prime-switch

І lspci | grep -E "VGA|3D"звіти:

00:02.0 VGA compatible controller: Intel Corporation Skylake Integrated Graphics (rev 06)
01:00.0 3D controller: NVIDIA Corporation GM107M [GeForce GTX 960M] (rev ff)

Отже, в основному вам потрібно увійти до системи лише після переключення з праймером, якщо ви хочете переключити, який графічний процесор працює на дисплеї? Я цього не мав, але це має сенс. Звичайно, вам потрібно переконатися, що ви переключились назад, перш ніж вийти з системи або перезапустити його.
orodbhen

Я використовую такий підхід. Я входжу з активним інтелектуальним профілем, тому Xorg і firefox не використовують GPU. Потім я перемикаюся на профіль nvidia, і вся моя CUDA робота надходить на GPU, і не потрібно конкурувати з firefox та Xorg за пам'ять :)!
Іван,

0

Якщо хтось все-таки знайде проблеми після виконання кроків у прийнятій відповіді, спробуйте це:

echo "install bbswitch /bin/true" > /etc/modprobe.d/blacklist-bbswitch.conf
update-initramfs -u

Це повністю відключить bbswitch. Недолік полягає в тому, що ви не зможете вимкнути NVIDIA-карту для економії енергії (Xorg як і раніше використовує інтегровану графіку prime-select intel).


0

Я використовую 1070 ti з thinkpad T420 в egpu, створеному для видобутку криптовалюти, поки я працюю. GPU теоретично оплатить себе через пару місяців таким чином.

Я виявив, що при експортуванні nvidia 387 LD_LIBRARY_PATH = / usr / lib / nvidia-387 працював з etminer, використовуючи cuda.

Однак єдиним способом я міг змусити систему продовжувати працювати після того, як "першочерговий інтелект" був, якби у мене був другий монітор, підключений до карти, коли я робив вибір і виходив із системи. В іншому випадку я отримав би помилку "Система працює в режимі низької графіки" або постійний порожній екран. Звичайно, коли я входжу під керуючий графічний інтелект, монітор, підключений до графічного процесора, нічого не відображає, тому я повинен відключити його від gpu та підключити його назад до системи (вихід док-станції DVI), щоб запустити налаштування монітора дуелі. .

Я вважаю, що це тому, що gpu-менеджер виявляє, що bbswitch не працює, а потім видаляє конфігурацію xorg.

Я розміщую це питання, щоб показати вирішення проблем для тих, хто може опинитися в подібній ситуації, але щоб побачити, чи є у когось ідея, щоб не допустити цього, бо необхідність пересувати цей кабель для кожної перезавантаження - це трохи незручність.

log_file: /var/log/gpu-manager.log

last_boot_file: / var / lib / ubuntu-drivers-common / last_gfx_boot new_boot_file: / var / lib / ubuntu-drivers-common / last_gfx_boot не може отримати доступ / запустити / udc-fglrx-загружений файл Шукаю модулі fglrx в / lib /modules/4.4.0-104-generic/updates/dkms Шукаєте модулі nvidia у /lib/modules/4.4.0-104-generic/updates/dkms Знайдено модуль nvidia: nvidia_387_drm.ko Завантажується nvidia? так, Nvidia була вивантажена? ні Чи nvidia перебуває у чорному списку? так, завантажується fglrx? ні Не було завантажено fglrx? ні Чи fglrx перебуває у чорному списку? ні Завантажений інтелект? так Завантажений Radeon? ні Чи працює в чорний список Radeon? ні Завантажується amdgpu? ні Чи амдгпу в чорний список? ні Завантажується модерн? ні Чи є модерн у чорному списку? так Чи доступний модуль ядра fglrx? ні Модуль ядра nvidia доступний? так Ідентифікатор постачальника / пристрою: 8086: 126 BusID "PCI: 0 @ 0: 2: 0" Це завантажувач vga? так Ідентифікатор постачальника / пристрою: 10de: 1b82 BusID "PCI: conf Поточна альтернатива core: (null) Поточна альтернатива egl: /usr/lib/nvidia-387-prime/ld.so.conf Чи ввімкнено nvidia? ні Увімкнено nvidia egl? ні Увімкнено fglrx? ні Увімкнено меса? ні Увімкнено mesa egl? ні Увімкнено pxpress? ні Увімкнено прайм? Так, чи увімкнено простий egl? так Чи доступна nvidia? так Чи доступний nvidia egl? ні fglrx доступний? ні Чи доступний fglrx-core? ні Меса доступні? так Чи доступні mesa egl? так Чи доступний pxpress? ні Прем'єр доступний? так Чи доступний простий егл? не виявлено Intel IGP гібридної системи Intel драйвер Nvidia версія 387.34 виявлено / sys / class / dmi / id / product_version = "ThinkPad T420" / sys / class / dmi / id / product_name = "4236L23" Перша спроба: bbswitch без хитрощів Завантаження bbswitch з Параметри "load_state = -1 unload_state = 1" Помилка: може " t відкрити / proc / acpi / bbswitch Видалення xorg.conf. Шлях: /etc/X11/xorg.conf не може отримати доступ /usr/share/gpu-manager.d/hybrid-power-saving Не потрібно змінювати поточний статус bbswitch

Якщо я нано xorg.conf після цього, він порожній. Я публікую це, виконуючи трюк перемикання монітора, при цьому майнінг триває у фоновому режимі, і мій xorg.conf все ще порожній. Тож я здогадуюсь, що з якихось причин, коли я тримаю монітор підключеним до GPU при перезапуску lightdm, не має значення, що мій xorg.conf видалений. Будь-які ідеї?


Крім того ... У мене перебуває чорний список, як було запропоновано вище, тому що я отримаю постійну помилку з ним під час завантаження. Мені вдалося перейти в режим Intel, використовуючи nvidia-384 один або два рази, але у мене виникли проблеми з видобутком цього, і я подумав, що це може бути, оскільки підтримка 1070 ti була додана з nvidia-387.
прийняття дозволу
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.