web-dev-qa-db-ja.com

nvidiaドライバー295.59を使用してUbuntu 12.04にCUDAをインストールする

Nvidia gt 650mベースのラップトップでcudaを実行しようとしています。私はUbuntu 12.04をnvidia 295.59ドライバーで実行しています。また、私のラップトップはOptimusを使用しているため、ドライバーをbumblebee経由でインストールします。 Bumblebeeはまだ正しく動作していませんが、CUDAを個別にインストールすることは可能だと思います。

CUDAをインストールするには、次の手順に従ってください。 nVidiaディスクリートカード/ Intel Integrated Graphicsを搭載したラップトップでnVidia CUDAまたはOpenCLを使用するにはどうすればよいですか?

ただし、まだ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
johnmcd

関数への未定義の参照に関する問題は、-lcudaを使用してlibcudaライブラリをリンクしないためです。 nVidiaディスクリートカード/ Intel Integrated Graphicsを搭載したラップトップでnVidia CUDAまたはOpenCLを動作させるにはどうすればよいですか? common.mkの1つの場所で-lcudaを削除する必要があると述べていますが、そうではありません私のために働きます。ただし、コンパイラがライブラリを見つけることができなかったため、common.mkの対応する行(私にとっては276行)が次のようになるように、ライブラリが置かれているディレクトリを追加することが重要です。

    LIB += -L/usr/lib/nvidia-current -lcuda $(RENDERCHECKGLLIB) ${OPENGLLIB} $(PARAMGLLIB) ${LIB}

Src/deviceQueryフォルダーのMakefileで同様の修正を行う必要がありました。

    LIB += -lcuda

    LIB += -L/usr/lib/nvidia-current -lcuda

お役に立てば幸いです!

2

私がする必要があるのは、次を実行してnvidiaドライバーのパスをLD_LIBRARY_PATHに入れることです:export LD_LIBRARY_PATH = $ LD_LIBRARY_PATH:/ usr/lib/nvidia-current。

1
Sam

私は同じ問題を抱えています。

この質問も関連していると思います: "Cuda SDKを作成するときに-lOpenCLを見つけることができません"

CudaおよびopenCLサンプルをコンパイルできるようにするために、次のことを行いました。

nVidiaディスクリートカード/ Intel Integrated Graphicsを搭載したラップトップでnVidia CUDAまたはOpenCLを使用するにはどうすればよいですか? bumblebeeをインストールせずに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
    ...

サンプルがコンパイルされます。ただし、希望を上げないでください。 cudaサンプルで次のエラーが発生するため、nvidiaドライバーに問題があると思います。

[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
kiepmad