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


28

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

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

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

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

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

Ответы:


27

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

Тем не менее, когда вам нужно , чтобы показать графические примеры с использованием 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-битный пакет 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 блендер


Спасибо, я награжу вас за вознаграждение (но я приму ответ от моего сообщества в вики).
Питер Кассетта

Кроме того, 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 для запуска CUDA в Ubuntu.

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

Тем не менее, когда вам нужно , чтобы показать графические примеры с использованием 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-битный 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. Сборки с Blender.org имеют предварительно скомпилированные ядра CUDA; Сборки ppa: cheleb / blender-svn ( больше информации по этому вопросу ) - нет.

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

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

 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 использовал мой графический процессор nVidia для визуализации трехмерного видового экрана. Однако в раскрывающемся списке «Настройки пользователя Blender» отсутствует опция «GPU». Это только списки «CPU». Смотрите этот скриншот . Нужно ли устанавливать дополнительные драйверы для использования CUDA?
Питер Кассетта

1

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.