Как я могу заставить 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,
Затем вы должны использовать один и тот же драйвер для компиляции примеров и запуска программы.