はじめに

はじめに

はじめに

ハイブリッド グラフィック ラップトップで CUDA を動作させようとしています。(l)ubuntu 15.04 を使用しています。

現在、以下に説明するオンライン ガイドのいくつかの手順に従い、問題なく実行できますoptirun glxspheres64。ただし、実行するとoptirun ./deviceQuery次のエラーが発生します。

/usr/bin/vglrun: 246: exec: ./deviceQuery: Permission denied

これについてはオンラインでは何も情報がないようですね。

詳細

私が従ったガイドはここ.runこれはかなり古いものであり、Nvidia がファイルを出荷する形式を変更したため、すべての手順を正確に実行したわけではありません。

私は次のことを行いました: (これは私の指示どおりですhistory。)

15  sudo apt-add-repository ppa:bumblebee/stable
16  sudo apt-add-repository ppa:ubuntu-x-swat/x-updates
17  sudo apt-get update 
18  sudo apt-get install bumblebee
19  sudo apt-get install bumblebee bumblebee-nvidia 
20  sudo reboot

次に、tty1 にログインし、x サーバーを停止して init 3 を実行します。

21  cd Downloads/
22  chmod +x cuda_7.5.18_linux.run 
23  sudo ./cuda_7.5.18_linux.run

すべてのデフォルト オプションで実行パッケージをインストールし、グラフィック ドライバー バージョン 352 もインストールします。

次に、PATH 変数を設定します。

25  export PATH=/usr/local/bin:$PATH
26  export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
27  sudo ldconfig

次の静的リンク手順はスキップしました。サンプル コードをコンパイルしたときにリンカー エラーは発生しませんでした (少なくとも、発生したとは思いません)。そのため、この手順は不要だったと思われます。また、この手順はオンラインの他のガイドでも見たことがありません。おそらく、ここが間違っていたのでしょうか?

次に、明らかに OpenGL が必要なものもあります。

28  sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev

サンプルをコンパイルします。

30  cd NVIDIA_CUDA-7.5_Samples/
31  make

./deviceQuery次に、 Utilities ディレクトリ内にある を実行しようとしました。bumblebeed実行できないという、以前にも見たことがあるエラーが発生しました。

それで:

34  sudo vim /etc/bumblebee/bumblebee.conf 

Driver=(空白だった)の行を に変更しDriver=nvidia、 の行もKernelDriver=nvidia-currentに変更しますKernelDriver=nvidia

この情報は入手可能ですここ質問に対する(現在のところ)2 番目の回答を参照してください。

それでもまだ動作しなかったので、上記のリンクされた質問に対する最初の回答に記載されている情報に従って、カーネル ヘッダーをインストールしてみました。

48  sudo apt-get install linux-headers-generic 
49  sudo reboot

私が行った場合:

54  sudo service bumblebeed status

今、私は以下を得ました:

● bumblebeed.service - Bumblebee C Daemon
   Loaded: loaded (/lib/systemd/system/bumblebeed.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2015-10-11 13:15:07 BST; 20min ago
 Main PID: 1502 (bumblebeed)
   CGroup: /system.slice/bumblebeed.service
           └─1502 /usr/sbin/bumblebeed

Oct 11 13:16:20 P151EMx bumblebeed[1502]: [  163.019954] [WARN][XORG]....
Oct 11 13:16:20 P151EMx bumblebeed[1502]: [  163.019987] [WARN][XORG]....
Oct 11 13:16:20 P151EMx bumblebeed[1502]: [  163.020055] [WARN][XORG]....
Oct 11 13:17:11 P151EMx bumblebeed[1502]: rmmod: ERROR: Module nvidia...d
Oct 11 13:17:11 P151EMx bumblebeed[1502]: modprobe: FATAL: Error runn...a
Oct 11 13:17:22 P151EMx bumblebeed[1502]: [  225.439546] [WARN][XORG]....
Oct 11 13:17:22 P151EMx bumblebeed[1502]: [  225.439578] [WARN][XORG]....
Oct 11 13:17:22 P151EMx bumblebeed[1502]: [  225.439606] [WARN][XORG]....
Oct 11 13:17:23 P151EMx bumblebeed[1502]: rmmod: ERROR: Module nvidia...d
Oct 11 13:17:23 P151EMx bumblebeed[1502]: modprobe: FATAL: Error runn...a
Hint: Some lines were ellipsized, use -l to show in full.

しかし、まだいくつか問題があるようです... 以前は起動しなかったのに、今は「アクティブ」になっていますが、まだすべてが正しく動作しているわけではありません。何らかの理由で、-lここでさらに情報を提供するためのオプションが機能しません。

実行するとoptirun ./deviceQueryエラーが発生します:

/usr/bin/vglrun: 246: exec: ./deviceQuery: Permission denied

私は今どうすればいい?

アップデート:

編集: これに従う人にとっては、この手順を実行しないのがよいかもしれません。この手順を回避するには、CUDA の後にドライバーをインストールしてみてはいかがでしょうか? ドライバー バージョン 352 をインストールしてから、次の操作を実行して 304 に戻すのは、少し不必要に思えます。

sudo apt-get install -reinstall nvidia-currentリンクされた質問では、カーネル ヘッダーをインストールした後にコマンドが追加されていることに気付きました。

このコマンドを実行したところ、ドライバーがバージョン304に戻ったようです。再起動して、

sudo service bumblebeed status

次のような出力が得られます。

● bumblebeed.service - Bumblebee C Daemon
   Loaded: loaded (/lib/systemd/system/bumblebeed.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2015-10-11 13:46:53 BST; 38s ago
 Main PID: 659 (bumblebeed)
   CGroup: /system.slice/bumblebeed.service
           └─659 /usr/sbin/bumblebeed

Oct 11 13:46:53 edward-P151EMx systemd[1]: Started Bumblebee C Daemon.
Oct 11 13:46:53 edward-P151EMx systemd[1]: Starting Bumblebee C Daemon...
Oct 11 13:46:53 edward-P151EMx bumblebeed[659]: [   17.073332] [INFO]/usr/sb...d
Hint: Some lines were ellipsized, use -l to show in full.

それで、修正されたようです。./deviceQueryしかし、まだ実行できず、同じエラーが発生します。

sudo optirun ./deviceQuery
/usr/bin/vglrun: 246: exec: ./deviceQuery: Permission denied

助けてください。笑

ちなみに、glxspheres はまだ動作します:

optirun glxspheres64

約 270 FPS を実現していますか?

答え1

もう一度コンピュータを再起動すると、なんと動作するようになりました。

optirun ./deviceQuery

戻り値

./deviceQuery Starting...

 CUDA Device Query (Runtime API) version (CUDART static linking)

Detected 1 CUDA Capable device(s)

Device 0: "GeForce GTX 670MX"
  CUDA Driver Version / Runtime Version          7.5 / 7.5
  CUDA Capability Major/Minor version number:    3.0
  Total amount of global memory:                 3072 MBytes (3221028864 bytes)
  ( 5) Multiprocessors, (192) CUDA Cores/MP:     960 CUDA Cores
  GPU Max Clock rate:                            601 MHz (0.60 GHz)
  Memory Clock rate:                             1400 Mhz
  Memory Bus Width:                              192-bit
  L2 Cache Size:                                 393216 bytes
  Maximum Texture Dimension Size (x,y,z)         1D=(65536), 2D=(65536, 65536), 3D=(4096, 4096, 4096)
  Maximum Layered 1D Texture Size, (num) layers  1D=(16384), 2048 layers
  Maximum Layered 2D Texture Size, (num) layers  2D=(16384, 16384), 2048 layers
  Total amount of constant memory:               65536 bytes
  Total amount of shared memory per block:       49152 bytes
  Total number of registers available per block: 65536
  Warp size:                                     32
  Maximum number of threads per multiprocessor:  2048
  Maximum number of threads per block:           1024
  Max dimension size of a thread block (x,y,z): (1024, 1024, 64)
  Max dimension size of a grid size    (x,y,z): (2147483647, 65535, 65535)
  Maximum memory pitch:                          2147483647 bytes
  Texture alignment:                             512 bytes
  Concurrent copy and kernel execution:          Yes with 1 copy engine(s)
  Run time limit on kernels:                     Yes
  Integrated GPU sharing Host Memory:            No
  Support host page-locked memory mapping:       Yes
  Alignment requirement for Surfaces:            Yes
  Device has ECC support:                        Disabled
  Device supports Unified Addressing (UVA):      Yes
  Device PCI Domain ID / Bus ID / location ID:   0 / 1 / 0
  Compute Mode:
     < Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >

deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 7.5, CUDA Runtime Version = 7.5, NumDevs = 1, Device0 = GeForce GTX 670MX
Result = PASS

ちなみに、私が試した最後の手順は実際には必要ではないと思います。上記の質問の情報に従っている場合は、試してみてください。ない最後の手順を実行します。

  • ドライバーの再インストール。これは必要ないと思います。また、ドライバーのかなり古いバージョンに戻ってしまうので面倒です。質問の情報に従って、この手順を実行せずに CUDA を動作させることができた人がいるかどうか知りたいです。

質問の情報は、インストールしようとしている人(そして私自身)にとって非常に役立つと思います。

  • CUDA 7.5 (または CUDA 7)

Linux、具体的にはUbuntu関連のディストリビューションの場合;

  • ubuntu、xubuntu、lubuntu、ubuntu mate、kubuntu、
  • また、Linux Mint 17、Linux Mint 17.1、Linux Mint 17.2 もおそらく使用できます [ただし、Linux Mint 17 および Linux Mint 17.2 で CUDA をインストールしようとしたときに問題が発生したことがあります]
  • おそらく Debian ディストリビューションの 1 つ (現在は Debian 8 を使用していると思いますが、Debian 7 または Debian 6 の可能性もあるでしょう)

Linux 用の CUDA を設定するための Web 上のガイドの多くは、Linux の古いバージョン用か、CUDA の古いバージョン用であるため、この回答をこれらすべてのディストリビューションでテストするつもりです。

これを実行するには少し時間がかかりますが、すぐに実行してみます。

また、誰かが貢献したい場合は、この回答をコミュニティ ウィキに変更するかもしれません。

引き続き更新情報を確認してください。ご意見がありましたら、下記にコメントしてください。

関連情報