1 заметка с тегом

samsung

/core.php, line 2
Error 2: Use of undefined constant k - assumed 'k' (this will throw an Error in a future version of PHP)

Nvidia Optimus + Ubuntu 16.04 + CUDA

Наконец-то удалось запустить на ноутбуке с гибридной графикой (Intel+Nvidia) аппаратное ускорение и CUDA. Причём без неудобств типа optirun — просто Unity и все приложения изначально используют аппаратное ускорение графики.
Установленная видеокарта — GeForce 540M.
Начнём с драйвера и Prime. Т. к. ранее был установлен bumblebee — для начала его нужно удалить. Bumblebee и Prime между собой несовместимы.
Принудительно включаем видеокарту

sudo tee /proc/acpi/bbswitch <<<ON

Удаляем bumblebee

sudo apt-get purge bumblebee* bbswitch-dkms
sudo apt-get autoremove
sudo apt-add-repository -r ppa:bumblebee/stable
sudo apt-get update

Ранее был протестирован и работал драйвер nvidia-340 из официального репозитория. CUDA 8.0 требует минимум nvidia-367, поэтому пришлось обновить его. Это меня сильно напрягло, т. к. ранее (только не помню, до или после обновления с 14.04 до 16.04) 361 драйвер у меня полностью положил gui, т. к. отказался инициализировать видюху, сообщив в лог, что она не поддерживается. Я, по аналогии с Windows, предположил, что поддержка моей видеокарты уже канула в лету и откатывал до 340 в консоли. Но это было раньше. То ли помогло обновление до 16.04, то ли в 367 драйвере исправлены какие-то ошибки, но на этот раз всё сразу заработало как надо.

sudo apt-get install nvidia-367 nvidia-settings nvidia-prime

На этом установка выполнена. Перезагружаем ПК и картинка на экране начинает расплываться так, что тексты, в т.ч. в консоли, становятся почти нечитаемыми... Запускаем nvidia-settings и в разделе Antialiasing Settings снимаем галку Enable FXAA. После релогина в систему картинка пришла в норму.
Проверить работу 3D-ускорения можно с помощью приложений glxgears, glxspheres, glxspheres64 — в зависимости от установленного дистрибутива. Советую сравнить fps до и после установки Prime.
Итак, Prime установлен, очередь CUDA. Кто не знает — это технология использования шейдеров видеокарты для рутинных тяжёлых рассчётов, занимающих много процессорного времени. Достоинство метода — огромное (по сравнению с CPU) количество процессоров, недостатки — относительно медленная инициализация и одинаковые алгоритмы работы каждого из них. Технология с успехом применяется, например, для обработки фотографий и видео, где распараллеливается обработка пикселей изображения или аналогичных пакетов данных, обрабатываемых по одному алгоритму.
Команда

lspci -vnn | grep VGA

у меня показала только графику Intel. Nvidia увиделась по другой маске:

lspci -vnn | grep 3D

Устройство найдено, можно продолжать.
Скачиваем дистрибутив CUDA. Установил версию 8.0 (последнюю) с оф.сайта

chmod +x ./cuda_8.0.44_linux.run
sudo ./cuda_8.0.44_linux.run

Ответы на вопросы:

Do you accept the previously read EULA?
accept/decline/quit: accept
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 367.48?
(y)es/(n)o/(q)uit: n
Install the CUDA 8.0 Toolkit?
(y)es/(n)o/(q)uit: y
Enter Toolkit Location
 [ default is /usr/local/cuda-8.0 ]: 
Do you want to install a symbolic link at /usr/local/cuda?
(y)es/(n)o/(q)uit: y
Install the CUDA 8.0 Samples?
(y)es/(n)o/(q)uit: y
Enter CUDA Samples Location
 [ default is /home/les ]: /usr/local/cuda-8.0/samples

Прописываем CUDA в системные переменные:
/etc/ld.so.conf.d/cuda.conf

export PATH=$PATH:/usr/local/cuda/bin

/etc/profile.d/cuda.sh

/usr/local/cuda/lib64

Сообщаем системе о новых библиотеках:

sudo ldconfig

CUDA 8.0 по умолчанию предполагает использование компилятора gcc 5 версии, поэтому правка /usr/local/cuda/include/host_config.h не требуется. В 8 версии это строка 119, при использовании компиляторов других версий (6 и выше, когда выйдет :-) ) её нужно закомментировать.

#error -- unsupported GNU version! gcc versions later than 5 are not supported!

На этом ПО CUDA установлено. Протестируем, скомпилировав какой-нибудь из приложенных примеров:

rsync -av /usr/local/cuda/samples .
cd ./samples/2_Graphics/simpleTexture3D/
make
cd ../../bin/x86_64/linux/release/
./simpleTexture3D

У меня компиляция с первого раза не прошла — получил сообщение об ошибке

/usr/bin/ld: cannot find -lglut

Решено командой:

sudo apt-get install freeglut3-dev

Теперь CUDA нормально работает безо всякого optirun-подобного шаманства в Darktable, Blender и, возможно, где-то ещё :-)
В blender для использования технологии CUDA нужно включить её в File — User Preferences — System — Compute Device (нужно переключить с None на CUDA) и всё работает.

Источники:
Алгоритм установки Nvidia Prime: http://help.ubuntu.ru/wiki/nvidia-prime
Алгоритм установки CUDA: http://techcave.ru/posts/63-ustanovka-cuda-7-5-na-ubuntu-16-04.html
Дополнение: https://ubuntuforums.org/showthread.php?t=1620635

2016   bumblebee   cuda   geforce   nvidia optimus   optimus   prime   samsung   ubuntu