Установка CUDA на Ubuntu 12.04 с драйвером 295.59 Nvidia

Я пытался заставить 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

Я ценил бы любую справку, которой любой может предоставить мне. Если я могу предоставить дальнейшую информацию, сообщенную мне.

Спасибо.

5
задан 13 April 2017 в 15:25

3 ответа

Проблема с неопределенными ссылками на функции состоит в том, потому что Вы не связываете 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

Надежда, которая помогает!

2
ответ дан 13 April 2017 в 15:25

Все, что мне нужно сделать, это поместить путь драйвера nvidia в LD_LIBRARY_PATH, выполнив: export LD_LIBRARY_PATH = $ LD_LIBRARY_PATH: / usr / lib / nvidia-current.

0
ответ дан 13 April 2017 в 15:25

У меня есть та же проблема.

Я думаю, что этот вопрос также связан: "не может найти-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...
0
ответ дан 13 April 2017 в 15:25

Другие вопросы по тегам:

Похожие вопросы: