Я пытался заставить cuda работать на Nvidia gt ноутбук основанный на 650 м. Я запускаю Ubuntu 12.04 с драйвером nvidia 295.59. Кроме того, мой ноутбук использует Optimus, таким образом, я имею, устанавливают драйвер через шмеля. Шмель правильно еще не работает - однако я полагаю, что возможно установить CUDA независимо.
Для установки CUDA, я следовал инструкциям, подробно изложенным здесь: Как я могу получить Nvidia CUDA или OpenCL, работающий над ноутбуком с Nvidia дискретная карта/Intel Интегрированная Графика?
Однако я все еще сталкиваюсь с проблемой, создающей sdk. Я делал изменения указанными в вышеупомянутой ссылке в common.mk, но я получил следующий (отрывок) от процесса сборки:
make[2]: Entering directory `/home/john/NVIDIA_GPU_Computing_SDK/C/src/fluidsGL'
/usr/bin/ld: warning: libnvidia-tls.so.302.17, needed by /usr/lib/nvidia-current/libGL.so, not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libnvidia-glcore.so.302.17, needed by /usr/lib/nvidia-current/libGL.so, not found (try using -rpath or -rpath-link)
/usr/lib/nvidia-current/libGL.so: undefined reference to `_nv018tls'
/usr/lib/nvidia-current/libGL.so: undefined reference to `_nv012glcore'
/usr/lib/nvidia-current/libGL.so: undefined reference to `_nv017glcore'
/usr/lib/nvidia-current/libGL.so: undefined reference to `_nv012tls'
/usr/lib/nvidia-current/libGL.so: undefined reference to `_nv015tls'
/usr/lib/nvidia-current/libGL.so: undefined reference to `_nv019tls'
/usr/lib/nvidia-current/libGL.so: undefined reference to `_nv000glcore'
/usr/lib/nvidia-current/libGL.so: undefined reference to `_nv017tls'
/usr/lib/nvidia-current/libGL.so: undefined reference to `_nv013tls'
/usr/lib/nvidia-current/libGL.so: undefined reference to `_nv013glcore'
/usr/lib/nvidia-current/libGL.so: undefined reference to `_nv018glcore'
/usr/lib/nvidia-current/libGL.so: undefined reference to `_nv022tls'
/usr/lib/nvidia-current/libGL.so: undefined reference to `_nv007tls'
/usr/lib/nvidia-current/libGL.so: undefined reference to `_nv009tls'
/usr/lib/nvidia-current/libGL.so: undefined reference to `_nv020tls'
/usr/lib/nvidia-current/libGL.so: undefined reference to `_nv014glcore'
/usr/lib/nvidia-current/libGL.so: undefined reference to `_nv015glcore'
/usr/lib/nvidia-current/libGL.so: undefined reference to `_nv016tls'
/usr/lib/nvidia-current/libGL.so: undefined reference to `_nv001glcore'
/usr/lib/nvidia-current/libGL.so: undefined reference to `_nv006tls'
/usr/lib/nvidia-current/libGL.so: undefined reference to `_nv021tls'
/usr/lib/nvidia-current/libGL.so: undefined reference to `_nv011tls'
/usr/lib/nvidia-current/libGL.so: undefined reference to `_nv020glcore'
/usr/lib/nvidia-current/libGL.so: undefined reference to `_nv019glcore'
/usr/lib/nvidia-current/libGL.so: undefined reference to `_nv002glcore'
/usr/lib/nvidia-current/libGL.so: undefined reference to `_nv021glcore'
/usr/lib/nvidia-current/libGL.so: undefined reference to `_nv014tls'
collect2: ld returned 1 exit status
make[2]: *** [../../bin/linux/release/fluidsGL] Error 1
make[2]: Leaving directory `/home/john/NVIDIA_GPU_Computing_SDK/C/src/fluidsGL'
make[1]: *** [src/fluidsGL/Makefile.ph_build] Error 2
make[1]: Leaving directory `/home/john/NVIDIA_GPU_Computing_SDK/C'
make: *** [all] Error 2
Библиотеки, о которых предупреждает ld, находятся в моей системе и установлены в системе:
$ locate libnvidia-tls.so.302.17 libnvidia-glcore.so.302.17
/usr/lib/nvidia-current/libnvidia-glcore.so.302.17
/usr/lib/nvidia-current/libnvidia-tls.so.302.17
/usr/lib/nvidia-current/tls/libnvidia-tls.so.302.17
/usr/lib32/nvidia-current/libnvidia-glcore.so.302.17
/usr/lib32/nvidia-current/libnvidia-tls.so.302.17
/usr/lib32/nvidia-current/tls/libnvidia-tls.so.302.17
однако/usr/lib/nvidia-current и/usr/lib32/nvidia-current не берутся ldconfig. Я попытался добавить их путем добавления файла к/etc/ld.so.conf.d/, который заканчивает эту ошибку, однако теперь я получаю следующую ошибку:
make[2]: Entering directory `/home/john/NVIDIA_GPU_Computing_SDK/C/src/deviceQueryDrv'
cc1plus: warning: command line option ‘-Wimplicit’ is valid for C/ObjC but not for C++ [enabled by default]
obj/x86_64/release/deviceQueryDrv.cpp.o: In function `main':
deviceQueryDrv.cpp:(.text.startup+0x5f): undefined reference to `cuInit'
deviceQueryDrv.cpp:(.text.startup+0x99): undefined reference to `cuDeviceGetCount'
deviceQueryDrv.cpp:(.text.startup+0x10b): undefined reference to `cuDeviceComputeCapability'
deviceQueryDrv.cpp:(.text.startup+0x127): undefined reference to `cuDeviceGetName'
deviceQueryDrv.cpp:(.text.startup+0x16a): undefined reference to `cuDriverGetVersion'
deviceQueryDrv.cpp:(.text.startup+0x1f0): undefined reference to `cuDeviceTotalMem_v2'
deviceQueryDrv.cpp:(.text.startup+0x262): undefined reference to `cuDeviceGetAttribute'
deviceQueryDrv.cpp:(.text.startup+0x457): undefined reference to `cuDeviceGetAttribute'
deviceQueryDrv.cpp:(.text.startup+0x4bc): undefined reference to `cuDeviceGetAttribute'
deviceQueryDrv.cpp:(.text.startup+0x502): undefined reference to `cuDeviceGetAttribute'
deviceQueryDrv.cpp:(.text.startup+0x533): undefined reference to `cuDeviceGetAttribute'
obj/x86_64/release/deviceQueryDrv.cpp.o:deviceQueryDrv.cpp:(.text.startup+0x55e): more undefined references to `cuDeviceGetAttribute' follow
collect2: ld returned 1 exit status
make[2]: *** [../../bin/linux/release/deviceQueryDrv] Error 1
make[2]: Leaving directory `/home/john/NVIDIA_GPU_Computing_SDK/C/src/deviceQueryDrv'
make[1]: *** [src/deviceQueryDrv/Makefile.ph_build] Error 2
make[1]: Leaving directory `/home/john/NVIDIA_GPU_Computing_SDK/C'
make: *** [all] Error 2
Я ценил бы любую справку, которой любой может предоставить мне. Если я могу предоставить дальнейшую информацию, сообщенную мне.
Спасибо.
Проблема с неопределенными ссылками на функции состоит в том, потому что Вы не связываете libcuda библиотеку с помощью-lcuda. Руководство в том, Как я могу получить Nvidia CUDA или OpenCL, работающий над ноутбуком с Nvidia дискретная карта/Intel Интегрированная Графика? упоминания, что необходимо удалить-lcuda в одном месте в common.mk, но это не работало на меня. Но, поскольку компилятор не мог найти библиотеку, важно добавить каталог, где библиотека расположена, так, чтобы соответствующая строка в common.mk (это - строка 276 для меня) была похожа
LIB += -L/usr/lib/nvidia-current -lcuda $(RENDERCHECKGLLIB) ${OPENGLLIB} $(PARAMGLLIB) ${LIB}
Подобное исправление должно было быть сделано в Make-файле src/deviceQuery папки, последней строки, изменившись
LIB += -lcuda
кому:
LIB += -L/usr/lib/nvidia-current -lcuda
Надежда, которая помогает!
Все, что мне нужно сделать, это поместить путь драйвера nvidia в LD_LIBRARY_PATH, выполнив: export LD_LIBRARY_PATH = $ LD_LIBRARY_PATH: / usr / lib / nvidia-current.
У меня есть та же проблема.
Я думаю, что этот вопрос также связан: "не может найти-lOpenCL" ошибкой при создании SDK Cuda
Чтобы смочь скомпилировать cuda и openCL образцы, я сделал следующее.
Я следовал этому руководству: Как я могу получить Nvidia CUDA или OpenCL, работающий над ноутбуком с Nvidia дискретная карта/Intel Интегрированная Графика? не устанавливая шмеля и с помощью xswat ppa: https://launchpad.net / ~ ubuntu-x-swat / + archive/x-updates/
gksudo gedit /etc/environment
change
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
to
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/cuda/bin"
ПУТЬ перезагрузки:
source /etc/environment
Набор LD_LIBRARY_PATH:
gksudo gedit /etc/ld.so.conf.d/cuda.conf
Paste into the file:
/usr/local/cuda/lib64
/usr/local/cuda/lib
/usr/lib/nvidia-current
/usr/lib32/nvidia-current
Save and quit the editor.
Перезагрузка LD_LIBRARY_PATH:
sudo ldconfig
Отредактированный ~/.bash.rc, добавил:
export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/cuda/lib64:/usr/local/cuda/lib:/usr/lib/nvidia-current:/usr/lib32/nvidia-current
Перезагрузите ~/bash.rc
source ~/bash.rc
Проверьте, найден ли openCL:
ldconfig -v | grep "OpenCL"
...
libOpenCL.so.1 -> libOpenCL.so.1.0.0
libOpenCL.so.1 -> libOpenCL.so.1.0.0
...
Образцы должны теперь скомпилировать. Однако не будите свою надежду. Я думаю, что драйвер Nvidia неисправен, поскольку я получаю следующую ошибку для cuda образцов:
[vectorAddDrv] starting...
Vector Addition (Driver API)
checkCudaErrors() Driver API error = 0100 "CUDA_ERROR_INVALID_VALUE" from file <vectorAddDrv.cpp>, line 207.
и для openCL образцов:
./oclDeviceQuery
[oclDeviceQuery] starting...
./oclDeviceQuery Starting...
OpenCL SW Info:
Error -1001 in clGetPlatformIDs Call !!!
!!! Error # -1000 (Unspecified Error) at line 46 , in file oclDeviceQuery.cpp !!!
Exiting...