Як можна змусити nVidia CUDA або OpenCL працювати на ноутбуці з дискретною картою nVidia / інтегрованою графікою Intel?


28

Передумови: Я є 3D-виконавцем (як хобі) і нещодавно почав використовувати Ubuntu 12.04 LTS як подвійний завантажувач із Windows 7. Він працює на моєму досить новому 64-бітному ноутбуці Toshiba з nVidia GeForce GT 540M GPU ( відеокарта). Однак він також має інтегровану графіку Intel (яку я підозрюю, що Ubuntu використовує).

Отже, коли я показую свої 3D-сцени зображенням у Windows, я можу вибирати між процесором чи графічним процесором nVidia (швидше). У програмі 3D я можу налаштувати GPU на використання CUDA або OpenCL. В Ubuntu немає можливості GPU.

Провівши (занадто багато?) Дослідження проблем з Linux та технологією nVidia Optimus, я трохи просвітлений, але набагато більше розгублений.

Мене не хвилює жодна проблема щодо технології Optimus, оскільки час роботи акумулятора для мене жодним чином не є проблемою.

Ось моє запитання: Що я можу зробити, щоб мати можливість використовувати програми, що використовують CUDA (наприклад, Blender) на моїй GPU nVidia в Ubuntu? Чи потрібні будуть драйвери nVidia? (Я чув, що вони не дуже добре грають із налаштуваннями Optimus в Linux.) Чи є принаймні спосіб використовувати OpenCL на моєму графічному процесорі в Ubuntu?

Відповіді:


27

Я щойно провів кілька експериментів і можу підтвердити висловлювання Еріка Епплмена про те, що джміль не потрібен для CUDA. (докладніше про джмеля : чи підтримується Ubuntu NVIDIA GeForce з Optimus Technology? )

Тим НЕ менше, коли вам потрібно , щоб показати графічні приклади з використанням OpenGL, ви робите що - то потрібно , як Джміль для систем Optimus, в іншому випадку ви або не бачите що - або на екрані або отримати повідомлення про помилку:

ERROR: Support for necessary OpenGL extensions missing.

Під час запуску програми CUDA потрібно встановити набір інструментів CUDA та драйвер nvidia. Якщо ви збираєтесь компілювати програми, вам також знадобиться SDK. Інсталяторів можна знайти на веб- сайті http://developer.nvidia.com/cuda-downloads , будь ласка, ознайомтеся з наведеними нижче інструкціями, перш ніж забивати ваш ноутбук Optimus.

Встановлення CUDA

Водій

Я рекомендую встановити драйвер nvidia з менеджера пакетів Ubuntu. Якщо ви встановите Bumblebee, вам не потрібно турбуватися про драйвер. В іншому випадку після встановлення вимкніть бібліотеки nvidia, як описано на /ubuntu//a/107746/6969 . Якщо цього не зробити, ви втратите 3D прискорення і, можливо, застрягнете при низькій роздільній здатності.

Інструментарій

В основному вам потрібно завантажити інсталятор, зробити його виконуваним і запустити його. - Завантажте інсталятор. Станом на це написання, 4.2.9 - це останній драйвер. Оскільки у мене 64-бітна ОС, я використовую 64-розрядний пакет Ubuntu 11.04 (хоча я працюю 12.04) - Зробіть його виконуваним і дозвольте встановити /usr/local/cuda:

chmod +x cudatoolkit_4.2.9_linux_64_ubuntu11.04.run
sudo ./cudatoolkit_4.2.9_linux_64_ubuntu11.04.run

Коли з'явиться повідомлення про встановлення, яке запитує вас, де встановити CUDA, просто натисніть Enter, щоб прийняти стандартну настройку /usr/local/cuda:

......................................
Enter install path (default /usr/local/cuda, '/cuda' will be appended):

Після встановлення він надрукує деякі повідомлення, які пропонують перенести каталог бібліотеки cuda до шляху пошуку вашої бібліотеки:

========================================

* Please make sure your PATH includes /tmp/cuda/cuda/bin
* Please make sure your LD_LIBRARY_PATH
*   for 32-bit Linux distributions includes /tmp/cuda/cuda/lib
*   for 64-bit Linux distributions includes /tmp/cuda/cuda/lib64:/tmp/cuda/cuda/lib
* OR
*   for 32-bit Linux distributions add /tmp/cuda/cuda/lib
*   for 64-bit Linux distributions add /tmp/cuda/cuda/lib64 and /tmp/cuda/cuda/lib
* to /etc/ld.so.conf and run ldconfig as root

* Please read the release notes in /tmp/cuda/cuda/doc/

* To uninstall CUDA, remove the CUDA files in /tmp/cuda/cuda
* Installation Complete

Ви можете пропустити цей крок, якщо хочете, але потім це потрібно встановити LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/lib:$LD_LIBRARY_PATHпізніше під час запуску програми.

SDK

Якщо ви хочете мати можливість компілювати програми CUDA, ви можете встановити SDK аналогічно описаному вище. Завантажте, зробіть його виконуваним і запустіть його (не як root, наприклад, без sudo!). Складаючи його частини, я повинен був внести деякі зміни, NVIDIA_GPU_Computing_SDK/C/common/common.mkхоча:

  • після рядка 189 OPENGLLIB := -lGL -lGLU -lX11 -lXi -lXmu, додайте:

    OPENGLLIB += -L/usr/lib/nvidia-current -L/usr/lib32/nvidia-current
    
  • після того, як про лінії 271, своп ${RENDERCHECKGLLIB}з ${OPENGLLIB}таким чином, що вона виглядає наступним чином :

    LIB += $(RENDERCHECKGLLIB) ${OPENGLLIB} $(PARAMGLLIB) ${LIB} -ldl -rdynamic
    
  • ще кілька (5) рядків, зробіть те ж саме, але також видаліть -lcuda.
  • ще кілька (7) рядків, зробіть те саме, що ви робили в рядку 271.

Використання CUDA

Для роботи CUDA не потрібен X-сервер, керований nvidia. У такому випадку ви можете запустити свою випадкову програму тестування, наприклад:

LD_LIBRARY_PATH = / usr / lib / nvidia-current: / usr / lib32 / nvidia-current: $ LD_LIBRARY_PATH someComputallyIntensiveProgram

Якщо ви не додали CUDA до свого бібліотечного шляху, вам знадобиться:

LD_LIBRARY_PATH = / usr / lib / nvidia-current: / usr / lib32 / nvidia-current: / usr / local / cuda / lib64: / usr / local / cuda / lib: $ LD_LIBRARY_PATH someComputallyIntensiveProgram

(ви можете зняти 32-бітні шляхи з нього, якщо ваша програма 64-бітна).

Якщо програма CUDA має щось відображати за допомогою OpenGL, ви повинні використовувати optirun:

 optirun blender

Або якщо у вас не було додано CUDA до шляху за замовчуванням:

LD_LIBRARY_PATH = / usr / local / cuda / lib64: / usr / local / cuda / lib: $ LD_LIBRARY_PATH optirun blender


Дякую, я присуджую вам нагороду (але я прийму свою відповідь на Wiki Wiki).
Пітер Кассетта

Крім того, 100 представників та оплата коштів не вказують точно, наскільки я ціную вашу роботу над проектом джмелів. Ви та ваші колеги зробили це чудовим програмним забезпеченням, яке воно є. Тож дякую. :)
Пітер Кассетта

2
Вітаю вас, зараз я сподіваюся, що час нагородить нас остаточним рішенням у вигляді PRIME з оновленим стеком xorg + mesa (або Wayland?) :)
Lekensteyn

1
PRIME , Xorg - сервер дисплеїв, який відповідає за показ графіки, Mesa - для OpenGL, Wayland - можливий наступник Xorg.
Лекенштейн

1
Слід зазначити, що для CUDA потрібен мінімальний драйвер NVIDIA. Наприклад, CUDA 6.5 потребує щонайменше NVIDIA 340.21.
Яманеко

15

Ось повна відповідь (заснована на відповідях Алекса Фалаппи та Лекенштейна ):

Дійсно можна змусити nVidia Optimus GPU для запуску CUDA на Ubuntu.

Шмель не потрібна для CUDA. (докладніше про джмеля : чи підтримується Ubuntu NVIDIA GeForce з Optimus Technology? )

Тим НЕ менше, коли вам потрібно , щоб показати графічні приклади з використанням OpenGL, ви робите що - то потрібно , як Джміль для систем Optimus, в іншому випадку ви або не бачите що - або на екрані або отримати повідомлення про помилку:

ERROR: Support for necessary OpenGL extensions missing. 

Якщо вам потрібно використовувати графічно інтенсивну програму, таку як Blender, Bumblebee - це хороший шлях.

Перейдіть до встановлення CUDA, якщо ви не хочете встановлювати Bumblebee (тобто якщо вам не потрібен OpenGL).
Інакше читайте далі.

Встановлення джмеля

Дотримуйтесь вказівок наскільки добре працюють ноутбуки з Nvidia Optimus?

Наразі вони оновлюються розробником Bumblebee.

Після того, як ви встановите Bumblebee і перезавантажите, ви зможете вибрати графічну карту, яку слід використовувати при запуску програм, використовуючи optirunпрограму.
Наприклад:

optirun blender

Щоб швидко перевірити, чи все працює правильно, використовуйте:

optirun glxspheres

Ви побачите програму з різнокольоровими прядими сферами, якщо все працює правильно.

Переконайтеся, що рядок постачальника GL у терміналі містить слово nvidia .
Якщо ви працюєте лише glxspheres, ви побачите, що рядок постачальника містить натомість карту Intel.

Під час запуску програми CUDA потрібно встановити набір інструментів CUDA та драйвер nvidia. Якщо ви збираєтесь компілювати програми, вам також знадобиться SDK. Інсталяторів можна знайти на веб- сайті http://developer.nvidia.com/cuda-downloads , будь ласка, ознайомтеся з наведеними нижче інструкціями, перш ніж забивати ваш ноутбук Optimus.

Встановлення CUDA

Водій

Я рекомендую встановити драйвер nvidia з менеджера пакетів Ubuntu. Якщо ви встановите Bumblebee, вам не потрібно турбуватися про драйвер. В іншому випадку після встановлення вимкніть бібліотеки nvidia, як описано на /ubuntu//a/107746/6969 . Якщо цього не зробити, ви втратите прискорення 3D і, можливо, застрягнете при низькій роздільній здатності.

Інструментарій

В основному вам потрібно завантажити інсталятор, зробити його виконуваним і запустити його. - Завантажте інсталятор. Станом на 9 січня 2013 року 5,0,35 є останнім водієм. Оскільки у мене 64-розрядна ОС, я використовую 64-розрядний пакет Ubuntu 11.10 (хоча я працюю 12.10) - Зробіть його виконуваним і дозвольте встановити /usr/local/cuda:

chmod +x cudatoolkit_5.0.35_linux_64_ubuntu11.10-1.run
sudo ./cudatoolkit_5.0.35_linux_64_ubuntu11.10-1.run

Коли з'явиться повідомлення про встановлення, яке запитує вас, де встановити CUDA, просто натисніть Enter, щоб прийняти стандартну настройку /usr/local/cuda:

......................................
Enter install path (default /usr/local/cuda, '/cuda' will be appended):

Після встановлення він надрукує деякі повідомлення, які пропонують перенести каталог бібліотеки cuda до шляху пошуку вашої бібліотеки:

========================================

* Please make sure your PATH includes /tmp/cuda/cuda/bin
* Please make sure your LD_LIBRARY_PATH
*   for 32-bit Linux distributions includes /tmp/cuda/cuda/lib
*   for 64-bit Linux distributions includes /tmp/cuda/cuda/lib64:/tmp/cuda/cuda/lib
* OR
*   for 32-bit Linux distributions add /tmp/cuda/cuda/lib
*   for 64-bit Linux distributions add /tmp/cuda/cuda/lib64 and /tmp/cuda/cuda/lib
* to /etc/ld.so.conf and run ldconfig as root

* Please read the release notes in /tmp/cuda/cuda/doc/

* To uninstall CUDA, remove the CUDA files in /tmp/cuda/cuda
* Installation Complete

Ви можете пропустити цей крок, якщо хочете, але тоді вам доведеться встановити LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/lib:$LD_LIBRARY_PATHпізніше під час запуску програми.

SDK

Якщо ви хочете мати можливість компілювати програми CUDA, ви можете встановити SDK аналогічно описаному вище. Завантажте, зробіть його виконуваним і запустіть його (не як root, наприклад, без sudo!).

Використання CUDA

Для роботи CUDA не потрібен X-сервер, керований nvidia. У такому випадку ви можете запустити свою випадкову програму тестування, наприклад:

LD_LIBRARY_PATH = / usr / lib / nvidia-current: / usr / lib32 / nvidia-current: $ LD_LIBRARY_PATH someComputallyIntensiveProgram

Якщо ви не додали CUDA до свого бібліотечного шляху, вам знадобиться:

LD_LIBRARY_PATH = / usr / lib / nvidia-current: / usr / lib32 / nvidia-current: / usr / local / cuda / lib64: / usr / local / cuda / lib: $ LD_LIBRARY_PATH someComputallyIntensiveProgram

(ви можете зняти 32-бітні шляхи з нього, якщо ваша програма 64-бітна).

Якщо програма CUDA має щось відображати за допомогою OpenGL, ви повинні використовувати optirun:

 optirun blender

Або якщо у вас не було додано CUDA до шляху за замовчуванням:

LD_LIBRARY_PATH = / usr / local / cuda / lib64: / usr / local / cuda / lib: $ LD_LIBRARY_PATH optirun blender

Встановлення збірки Blender

(З попередньо складеними ядрами CUDA)

Під час запуску optirun blenderви можете отримати повідомлення від Blender про те, що компіляція ядра CUDA не вдалася, і повідомлення в терміналі аналогічно наступному:

Compiling CUDA kernel ...
nvcc warning : Option '--opencc-options (-Xopencc)' is obsolete and ignored, when
targeting compute_20, sm_20, or higher
gcc: error trying to exec 'cc1plus': execvp: No such file or directory
CUDA kernel compilation failed, see console for details.

Якщо ви хочете використовувати функцію візуалізації GPU Blender, можливо, вам знадобиться збірка Blender з попередньо складеними ядрами CUDA. Усі версії Blender.org мають попередньо складені ядра CUDA; ppa: cheleb / blender-svn будує ( більше інформації на це питання ) не роблять.

Щоб встановити офіційну збірку Blender, просто дотримуйтесь інструкцій, викладених у цій відповіді .

Якщо ви встановили Blender /usr/lib/blender, вам слід мати змогу запустити Blender з терміналу та використовувати GPU-рендерінг за допомогою:

 optirun '/usr/lib/blender/blender'

Останні версії Bumblebee (встановлені з джмеля / стабільного PPA) не потребують usermodкоманди. Я продовжуватиму оновлювати інструкції з установки на askubuntu.com/a/36936/6969 , тому, будь ласка, посилайтеся на цю публікацію замість копіювання цих інструкцій із встановлення.
Лекенштейн

@Lekensteyn Гаразд, готово!
Пітер Кассетта

2

Підтримка гібридної графіки (як правило, інтегрована графіка Intel та дискретна графіка Nvidia) під Linux є наразі трохи клопіткою. Щось повільно рухається у полі сервера X, але не затримуйте дихання.

Як ви вже здогадалися, джміль - це хороший шлях.

Нещодавно я придбав ноутбук Asus N55 з графікою Intel / Nvidia. Мені вдалося отримати рендерінг Blender Cycles для використання CUDA.

Коли я встановив Ubuntu 12.04, він використовував інтегровану графіку за замовчуванням через графічний драйвер Intel. Графічний драйвер Noveau не повинен встановлюватися.

Потім я відкрив термінал і зробив:

sudo add-apt-repository ppa:bumblebee/stable
sudo apt-get update
sudo apt-get install bumblebee bumblebee-nvidia

Після цього я зробив (як рекомендують інструкції з установки):

sudo usermod -a -G bumblebee $USER

Потім я перезавантажився.

Для вибору драйвера, який слід використовувати при запуску програм, використовуйте програму optirun, наприклад:

optirun blender

Щоб перевірити, чи все працює правильно, використовуйте:

optirun glxspheres

І переконайтеся, що рядок постачальника GL містить слово Nvidia. Якщо ви замість цього запустите:

glxspheres

Рядок постачальника повинен містити слово Intel


Чи потрібно мені встановити драйвери nVidia перед встановленням Bumblebee? Я не здогадуюсь, виходячи з того, як ви сформулювали свою відповідь. Також добре бачити, що хтось зміг користуватися CUDA в Ubuntu за допомогою картки Optimus! Я проголосую за це, як тільки я отримаю 15 повторень. :)
Пітер Кассетта

Гаразд, я встановив джмеля. Я використовував optirunі можу переконатися, що Blender використовував мій GPU nVidia для візуалізації вікна 3D. Однак у меню Налаштування Blender не використовується опції "GPU" у спадному меню. У ньому перелічено лише "CPU". Дивіться цей скріншот . Чи потрібно мені встановити додаткові драйвери, щоб використовувати CUDA?
Пітер Кассетта

1

Я вважаю , що для виконання всіх прикладів CUDA, з допомогою Bumblebee, ви повинні встановити драйвера 295.40 з тут і під час установки вибрати , щоб не перевизначитиconfig x11 .

Тоді вам потрібно використовувати той самий драйвер для складання прикладів та запуску програми.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.