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

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

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

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

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

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

4 ответа

Решение

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

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

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

Однако, когда вам нужно показать графические примеры с использованием OpenGL, вам нужно что-то вроде 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. Установщики могут быть найдены на http://developer.nvidia.com/cuda-downloads, пожалуйста, прочитайте приведенные ниже инструкции, прежде чем ставить свой ноутбук Optimus.

Установка CUDA

Водитель

Я рекомендую установить драйвер nvidia из диспетчера пакетов Ubuntu. Если вы устанавливаете Bumblebee, вам не нужно беспокоиться о драйвере. В противном случае после установки отключите библиотеки nvidia, как описано на /questions/382882/net-podderzhki-3d-na-lenovo-w520-s-nvidia-optimus/382895#382895. Если вы этого не сделаете, вы потеряете 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.

Если вы хотите использовать функцию визуализации в Blender, вам может понадобиться сборка Blender с предварительно скомпилированными ядрами CUDA. Сборки с http://blender.org/ имеют предварительно скомпилированные ядра CUDA; Сборки ppa:cheleb/blender-svn ( больше информации по этому вопросу) - нет.

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

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

 optirun '/usr/lib/blender/blender'

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

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

ERROR: Support for necessary OpenGL extensions missing.

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

Установка CUDA

Водитель

Я рекомендую установить драйвер nvidia из диспетчера пакетов Ubuntu. Если вы устанавливаете Bumblebee, вам не нужно беспокоиться о драйвере. В противном случае после установки отключите библиотеки nvidia, как описано на /questions/382882/net-podderzhki-3d-na-lenovo-w520-s-nvidia-optimus/382895#382895. Если вы этого не сделаете, вы потеряете 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, добавлять:

    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 блендер

Поддержка гибридной графики (обычно интегрированной графики 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

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

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

Другие вопросы по тегам