Как я могу заставить nVidia CUDA или OpenCL работать на ноутбуке с дискретной картой nVidia / Intel Integrated Graphics?

25

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

Итак, когда я рисую свои 3D-сцены для изображений в Windows, я могу выбирать между использованием моего процессора или моего nVidia GPU (быстрее). Из 3D-приложения я могу настроить GPU на использование CUDA или OpenCL. В Ubuntu нет опции GPU.

После выполнения (слишком много?) исследований по проблемам с Linux и технологией nVidia Optimus я немного более просвещен, но гораздо более запутан.

Меня не волнует технология Optimus, так как время автономной работы для меня не является проблемой.

Вот мой вопрос: что я могу сделать, чтобы использовать CUDA-используемые программы (такие как Blender) на моем графическом процессоре nVidia в Ubuntu? Мне нужны драйверы nVidia? (Я слышал, что они отлично не играли с настройками Optimus в Linux.) Есть ли хотя бы один способ использовать OpenCL на моем графическом процессоре в Ubuntu?

    
задан Peter Cassetta 04.05.2012 в 17:22
источник

4 ответа

13

Вот полный ответ (на основе Alex Falappa и ответы Lekensteyn ):

На самом деле можно заставить графические процессоры nVidia Optimus запускать CUDA на Ubuntu.

Шторм не нужен для CUDA. (подробнее о Bumblebee : Является ли NVIDIA GeForce с технологией Optimus, поддерживаемая Ubuntu? )

Однако, когда вам нужно показывать графические примеры с помощью OpenGL, вам do нужно что-то вроде Bumblebee для систем 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. Установщики можно найти на странице Ссылка , пожалуйста, прочитайте приведенные ниже инструкции перед тем, как разрешить свой ноутбук Optimus.

Установка CUDA

драйвера

Я рекомендую установить драйвер nvidia из диспетчера пакетов Ubuntu. Если вы установите Bumblebee, вам не нужно беспокоиться о драйвере. В противном случае после установки отключить библиотеки nvidia, как описано в Ссылка . Если вы этого не сделаете, вы потеряете 3D-ускорение и, возможно, застрянете на низком разрешении.

Инструментарий

В основном вам нужно загрузить программу установки, сделать ее исполняемой и запустить.  - Загрузите программу установки. По состоянию на 9 января 2013 года 5.0.35 является самым последним драйвером. Поскольку у меня 64-разрядная ОС, я использую 64-разрядный 11.10 пакет Ubuntu (хотя я работаю 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

Установка сборки блендера

(с предварительно скомпилированными ядрами 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 builds ( больше информации по этому вопросу ).

Чтобы установить официальную сборку Blender, просто следуйте инструкциям, изложенным в этом ответе .

Если вы установили Blender в /usr/lib/blender , вы должны запустить Blender с терминала и использовать рендеринг графического процессора с помощью:

 optirun '/usr/lib/blender/blender'
    
ответ дан Peter Cassetta 13.04.2017 в 14:24
источник
25

Я только что сделал несколько экспериментов и могу подтвердить утверждения Эрика Эпплмена о том, что Bumblebee не требуется для CUDA. (подробнее о Bumblebee : Является ли NVIDIA GeForce с технологией Optimus, поддерживаемая Ubuntu? )

Однако, когда вам нужно показывать графические примеры с помощью OpenGL, вам do нужно что-то вроде Bumblebee для систем Optimus, иначе вы либо ничего не увидите на дисплее, либо не получите ошибку:

ERROR: Support for necessary OpenGL extensions missing.

При запуске программы CUDA вам необходимо установить инструментарий CUDA и драйвер nvidia. Если вы собираетесь компилировать программы, вам также нужен SDK. Установщики можно найти на странице Ссылка , пожалуйста, прочитайте приведенные ниже инструкции перед тем, как разрешить свой ноутбук Optimus.

Установка CUDA

драйвера

Я рекомендую установить драйвер nvidia из диспетчера пакетов Ubuntu. Если вы установите Bumblebee, вам не нужно беспокоиться о драйвере. В противном случае после установки отключить библиотеки nvidia, как описано в Ссылка . Если вы этого не сделаете, вы потеряете 3D-ускорение и, возможно, застрянете на низком разрешении.

Инструментарий

В основном вам нужно загрузить программу установки, сделать ее исполняемой и запустить.  - Загрузите программу установки. На момент написания этой статьи 4.2.9 является самым последним драйвером. Поскольку у меня 64-разрядная ОС, я использую 64-разрядный 11.04 Ubuntu-пакет (хотя я работаю 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 , add:

    OPENGLLIB += -L/usr/lib/nvidia-current -L/usr/lib32/nvidia-current
    
  • после строки 271, swap ${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

    
ответ дан Lekensteyn 08.05.2012 в 16:49
2

Гибридная графика (как правило, интегрированная графика Intel и графическая поддержка Nvidia) под Linux в настоящее время немного хлопотная. Что-то медленно перемещается в поле X-сервера, но не задерживайте дыхание.

Как вы уже догадались, Bumblebee в настоящее время является хорошим способом.

Недавно я купил ноутбук 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

    
ответ дан Alex Falappa 08.05.2012 в 09:45
1

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

Затем вам нужно использовать тот же самый драйвер для компиляции примеров и для запуска программы.

    
ответ дан olmer 28.08.2012 в 16:28