Сегодня 1 сенятбря 2012 года. Чтобы поставить рабочую версию OpenCL пришлось поставить старые драйвера и повыполнять много магии.
Данные шаги были применены, чтобы установить рабочую версию OpenCL SDK для разработчика под Ubuntu 12.04 (x86 и x64)
Посмотреть текущую версию драйеров от NVIDIA можно к примеру так
modinfo nvidia-current | head -n 5;
modinfo nvidia | head -n 5
Убрать предустановленные драйвера и всю инфраструтуру программ от NVIDIA, и удалить bumblebee
apt-get purge nvidia-*;
apt-get purge bumblebee*;
Установка драйвера 295.49 от NVIDIA
1 sudo su (переход в режим суперюзера)
2 Выполнить последовательность команд по подготовке системы для сборки драйвера nvidia
cp /etc/X11/xorg.conf /etc/X11/xorg.conf.backup;
apt-get install binutils pkg-config build-essential linux-headers-`uname -r`;
apt-get install linux-source-`uname -r`;
apt-get install linux-source;
cd /usr/src;
tar xvjf linux-source-`uname -r`;
ln -s linux-source-`uname -r` /usr/src/linux;
3. Скачать драйвер, нужный для архитектуры вашей системы:
wget http://us.download.nvidia.com/XFree86/Linux-x86_64/295.49/NVIDIA-Linux-x86_64-295.49.run
wget http://us.download.nvidia.com/XFree86/Linux-x86/295.49/NVIDIA-Linux-x86-295.49.run
4. Добавить права на выпонение для скачинового пакета
chmod +x NVIDIA*
4. Убить оконный сервис в зависимости от того, что стоит на машине
/etc/init.d/gdm stop;
/etc/init.d/lightdm stop;
/etc/init.d/kdm stop;
5. Уже без иксов в одном из терминалов, который будет доступен по ALT+CTRL+F1/2/* набрать
sudo sh NVIDIA* от своего пользователя. Делать всё по умолчанию.
6. Стартануть иксы командой /etc/init.d/lightdm start; (или другой в зависимости от вашего оконного менеджера)
7. Переходим опять в режим суперпользователя как в пункте 1
8. В случае наличия встроенной видеокарты и дискретной в компьютере необходима программа, которая будет позволять переключаться между эти картами (единственная существующая bumblebee)
apt-get install bumblebee
usermod -a -G bumblebee $USER
usermod -a -G bumblebee $USER
9. В случае получения ошибок bbswitch про после выполнения команды bumblebeed --daemon требуется выполнить
apt-get purge bbswitch-dkms
apt-get install bbswitch-dkms
10. Возможно у вас выйдет переключать режим использования дискретной видеокарты командами tee /proc/acpi/bbswitch<<<OFF и tee /proc/acpi/bbswitch<<<ON
Однако более официальный метод запуск команд через optirun программа параметры
или запуск optirun bash и далее выполнять команды в контексте использования дискретной видеокарты
11. Выходим из режима суперользователя командой exit
Установка NVIDIA CUDA SDK 4.2
12. Устанавливаем необходимые инструменты для работы с NVIDIA SDK
sudo apt-get install libxi-dev libxmu-dev freeglut3-dev build-essential binutils-gold
13. Скачиваем NVIDIA SDK (GPUComputing SDK и CUDA toolkit) более соответствующие вашей системе http://developer.nvidia.com/cuda/cuda-downloads
Я скачал эти версии на 32-ух разряжную и 64-ех разрядную машину:
wget http://developer.download.nvidia.com/compute/cuda/4_2/rel/toolkit/cudatoolkit_4.2.9_linux_32_ubuntu11.04.run;
wget http://developer.download.nvidia.com/compute/cuda/4_2/rel/sdk/gpucomputingsdk_4.2.9_linux.run
wget http://developer.download.nvidia.com/compute/cuda/4_2/rel/toolkit/cudatoolkit_4.2.9_linux_64_ubuntu11.04.run; wget http://developer.download.nvidia.com/compute/cuda/4_2/rel/sdk/gpucomputingsdk_4.2.9_linux.run
14. Добавляем права на исполнение
chmod +x cudatoolkit_4.2.9_linux_*;
chmod +x gpucomputingsdk_4.2.9_linux.run
15. Выолняем
sudo ./cudatoolkit_4.2.9_linux_*
На запрос Enter install path (default /usr/local/cuda, '/cuda' will be appended) вводим /opt.
16. Выполняем
./gpucomputingsdk_4.2.9_linux.run
На запрос Enter CUDA install path (default /usr/local/cuda): вводим /opt
17. Переходим в режим суперпользователя
18. Дадим знать системе, где искать установленные CUDA библиотеки
echo "/opt/cuda/lib64" > /etc/ld.so.conf.d/opencl-vendor-nvida.conf;
echo "/opt/cuda/lib" >> /etc/ld.so.conf.d/opencl-vendor-nvidia.conf;
ldconfig -v
19. Удостовертесь, что у вас установлены OpenCL библиотеки ls -a /usr/lib | grep libOpenCL.
Данные библиотеки должны были поставиться вместе с драйвером, однако если ваш драйвер лежит в /usr/lib/nvidia-current, то создайте символьные ссылки на все версии libOpenCL командой
ln -s /usr/lib/nvidia-current/libOpenCL.so /usr/lib/libOpenCL.so;
ln -s /usr/lib/nvidia-current/libOpenCL.so.1 /usr/lib/libOpenCL.so.1;
ln -s /usr/lib/nvidia-current/libOpenCL.so.1.0 /usr/lib/libOpenCL.so.1.0;
ln -s /usr/lib/nvidia-current/libOpenCL.so.1.0.0 /usr/lib/libOpenCL.so.1.0.0
20. Маленькое чудо
Для того, чтобы OpenCL заработал требуется дополнительно выполнить команду
echo "libcuda.so" > /etc/OpenCL/vendors/nvidia.icd
21. Выходим из режима суперользователя командой exit
Сборка примеров из NVIDIA CUDA SDK 4.2
21. Собрать примеры для OpenCL и CUDA
cd ~/NVIDIA_GPU_Computing_SDK/C
LINKFLAGS=-L/usr/lib/nvidia-current/ make cuda-install=/opt/cuda
cd ~/NVIDIA_GPU_Computing_SDK/OpenCL make
Выходные собранные файлы, которые можно потестировать находятся в папочках
~/NVIDIA_GPU_Computing_SDK/OpenCL/bin и ~/NVIDIA_GPU_Computing_SDK/С/bin
Дополнительные ссылки: