
はじめに
ハイブリッド グラフィック ラップトップで 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 の古いバージョン用であるため、この回答をこれらすべてのディストリビューションでテストするつもりです。
これを実行するには少し時間がかかりますが、すぐに実行してみます。
また、誰かが貢献したい場合は、この回答をコミュニティ ウィキに変更するかもしれません。
引き続き更新情報を確認してください。ご意見がありましたら、下記にコメントしてください。