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

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

31
задан 10 May 2012 в 16:56

4 ответа

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

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

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

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

ERROR: Support for necessary OpenGL extensions missing. 

Если вам нужно использовать программу с интенсивным использованием графики, такую ​​как Blender, Bumblebee в настоящее время является хорошим способом вперед.

Перейдите к Установка CUDA , если вы не хотите устанавливать Bumblebee (т.е. если вам не нужен OpenGL).
В противном случае читайте дальше.

Установка Bumblebee

Следуйте инструкциям на Насколько хорошо работают ноутбуки с 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

I рекомендую установить драйвер nvidia из диспетчера пакетов Ubuntu. Если вы устанавливаете Bumblebee, вам не нужно беспокоиться о драйвере. В противном случае после установки отключите библиотеки nvidia, как описано на https://askubuntu.com/a/107746/6969 . Если вы этого не сделаете, вы потеряете 3D-ускорение и, возможно, застрянете на низком разрешении.

Toolkit

В основном вам необходимо загрузить установщик, сделать его исполняемым и запустить. - Загрузите установщик. По состоянию на 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.

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

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

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

 optirun '/usr/lib/blender/blender'
15
ответ дан 10 May 2012 в 16:56

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

2
ответ дан 10 May 2012 в 16:56

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

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

ERROR: Support for necessary OpenGL extensions missing.

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

Установка драйвера CUDA

I рекомендую установить драйвер nvidia из диспетчера пакетов Ubuntu. Если вы устанавливаете Bumblebee, вам не нужно беспокоиться о драйвере. В противном случае после установки отключите библиотеки nvidia, как описано на https://askubuntu.com/a/107746/6969 . Если вы этого не сделаете, вы потеряете 3D-ускорение и, возможно, застрянете на низком разрешении.

Toolkit

В основном вам необходимо загрузить установщик, сделать его исполняемым и запустить. - Загрузите установщик. На момент написания этой статьи самым последним драйвером является 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

27
ответ дан 10 May 2012 в 16:56

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

1
ответ дан 10 May 2012 в 16:56

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

Похожие вопросы: