Предыстория: я 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?
Вот полный ответ (основанный на ответах 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).
В противном случае читайте дальше.
Следуйте инструкциям на Насколько хорошо работают ноутбуки с Nvidia Optimus?
Они в настоящее время обновляются разработчиками Bumblebee.
Один раз если вы установили Bumblebee и перезагрузились, вы сможете выбрать графическую карту для использования при запуске программ с помощью программы optirun
.
Например:
optirun blender
Чтобы быстро проверить, все ли работает правильно, используйте:
optirun glxspheres
Если все работает правильно, вы увидите программу с красочными вращающимися сферами.
Убедитесь, что строка поставщика GL в терминале содержит слово nvidia .
Если вы запустите только glxspheres
, вы увидите, что строка поставщика содержит карту Intel.
При запуске программы CUDA вам необходимо установить набор инструментов CUDA и драйвер nvidia. Если вы собираетесь компилировать программы, вам также понадобится SDK. Установщики можно найти на http://developer.nvidia.com/cuda-downloads , пожалуйста, прочтите приведенные ниже инструкции, прежде чем запускать свой портативный компьютер Optimus.
I рекомендую установить драйвер nvidia из диспетчера пакетов Ubuntu. Если вы устанавливаете Bumblebee, вам не нужно беспокоиться о драйвере. В противном случае после установки отключите библиотеки nvidia, как описано на https://askubuntu.com/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
позже при запуске программы.
Если вы хотите иметь возможность компилировать Приложения CUDA, вы можете установить SDK аналогично описанному выше. Загрузите, сделайте его исполняемым и запустите (не как root, например, без sudo
!).
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
Когда вы запускаете 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'
Поддержка гибридной графики (обычно встроенная графика 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
Я только что провел несколько экспериментов и могу подтвердить утверждения Эрика Эпплмана о том, что 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.
I рекомендую установить драйвер nvidia из диспетчера пакетов Ubuntu. Если вы устанавливаете Bumblebee, вам не нужно беспокоиться о драйвере. В противном случае после установки отключите библиотеки nvidia, как описано на https://askubuntu.com/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
позже при запуске программы.
Если вы хотите иметь возможность для компиляции приложений 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
-lcuda
. 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, используя Bumblebee, необходимо установить драйверы 295.40 из здесь и во время установки выбрать не переопределять конфигурацию x11
. Затем Вы должны использовать тот же драйвер для компиляции примеров и запуска программы.