SSブログ

UbuntuにCUDAを入れたら動かなくなった。 [Linux]

Ubuntu16.04にCUDAを入れて再起動したら、ブートしなくなってしまった。元々nvencを使うだけなら入れる必要がなかったのかもしれないが、一応入れておいた方が良さそうなことを書いていたので入れてみてnvenc用のサンプルファイルをコンパイルしてみたら、全然入れる前と同じように通らなかった。

そしてREADMEを読むとドライバを入れたらどうにかならしかったので、入れようとしたらXが動いていると入れられないとか言い出す始末。あれ、これはデジャブか? というか普通に前にもやった気がする。そんなわけで再起動してGUIを発動させないようにGRUBか何かの設定を変えて入ってみようとかと思ったが、全く入れなくなってしまったという状態なわけだ。

リカバリモードでCUDAを削除してみたんだけどうまくいかず。削除はされているはずなんだけどなぁ。GRUBが終わってUbuntuのロゴが出て消えるところまでは行くんだけど、それ以上は進まない。色々試したみたものの、Linuxってまともな環境のロールバック方法がシステムで用意されていないと思うので、こういう起動しなくなる状況ってのはキツい。間違ってUbuntuを日本語環境で入れてしまったので、さっくり入れ直した方が早い気がしてきた。リカバリモードでは日本語入力できないので日本語ディレクトリには入れなくなるのであった。分かってても日本語がいいかなと思ってしまうところが学ばない人間なのだとやる気を挫かれる。

そもそも正式な方法でCUDAを入れているのになぜ立ち上がらなくなるのだ、というNVIDIAへの不信感があるのだが、Linuxは自分で解決しろ文化があるのでそこいらは投げっぱなしジャーマンを食らったような気持ちだ。前もはまった気がするなぁ。どうしようもないのだろうか。Linuxをインストールするのに慣れるというのはあまり賢くないし、賢くないにしても何とか環境を生きながらえさせるよりも最初から作り直してしまった方が早いという効率性もあったりで、正直こういう状態はずっと続くんだろうなと思うとウンザリする。まぁそこは提供する側のクオリティに対する意思と、そのやる気のなさを乗り越えるユーザーの気合いによるんだろうが、OSSというのは結局商業的なものにはかなわない責任問題というものがないから仕方ない。

英語で入れてCUDAはNVIDIAの.debファイルからじゃなく、普通のaptから入れることにした。nvenc使うだけならCUDA入れなくてもいいかもしれないんだが、結局入れざるを得ない状況になりそうなので入れる。

というか、ドライバもaptから入れられるっぽいね。プロプライエタリなものとOSSのものがあるから選ばないといけないようだけど。う〜ん、ドライバが新しすぎて選択肢が古すぎて無い。やっぱ新しいSDKを使うにはNVIDIA提供の最新ドライバが必要っぽい。

https://cosmo0920.wordpress.com/2011/02/13/ubuntu10-10%E3%81%A7x-sever%E3%82%92%E5%81%9C%E6%AD%A2%E3%81%97%E3%81%A6%E6%93%8D%E4%BD%9C%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF/

これをlightdmにしてstop startしたらできたみたいだけど、--compat32-libdir optionが云々言われて、サンプルファイルがきちんとコンパイルが通らない。-lnvidia-encodeがライブラリを見られず、コンパイルがこけてしまうのは相変わらず変わっていない。そもそもきちんとドライバが入っていないようだ。インストール時にオプションを入れないといけないのだろうか。入れてみてうまくいけばいいのだが、正直32bitのものを入れてうまく行くとは思えないのだが。上手く行くなら最初から入れてくれという話で、やってみたらダメだった。そもそも--compat32-libdirなんてオプションないじゃん。もう一回普通に入れてみたら色々別のメッセージが出た。前ドライバを入れた後にライブラリをaptで追加したからかもしれない。

ln -sf /usr/lib/x86_64-linux-gnu/libGL.so.1 /usr/lib/libGL.so.1

をしろと言われたが、元々のディレクトリにlibGL.so.1じゃなくてlibGL.soしかなかった。こういうちょっとした罠がそのままやると失敗に繋がるんだよな。きちんとチェックをしないといけないのが面倒。というか全自動でやってくれ。前の引数をso.1でなく.soに変えてやったらドライバが入ったみたいで、サンプルファイルのビルドが全部成功したみたいだった。でも、実際に動作するかどうかまでは試してない。

というように、開発環境を整えるまでに面倒なのがCUDA関係とかGPGPUの関係だったりする。基本的なLinuxのお作法を知っていないと乗り越えられない部分も結構あるなぁ。それはプログラミングとはまた別のスキルとも言えるし、本来はそんなことは気にしたく無い部分ではある。

CUDAはインストールはオプショナルと書いているけれども、結局は使うことになりそうな気がするので、本気でやるつもりなら入れた方がいいかもしれない。なんだかんだ言ってサンプルファイルにもCUDAの選択肢があったりするし、NVIDIAでGPUを使うならCUDAは避けて通れないだろう。純粋にDirectXとか使っているなら別かもしれないけど、Linuxで使わないという訳にはいかない気はする。


《後記》

リブートしたらパスワード入力画面から先に進めなくなったので、Ctrl + Alt + F1でapt updateをしてみたら、エラーとともにコマンドを打てと出てきたので、打ったら入れるようになった。それで、コンパイルしたエンコードのサンプルを動かしたら、

NvEncoder.cpp line 143: cuInit error:0x3e7
NvEncoder: NvEncoder.cpp:144: NVENCSTATUS CNvEncoder::InitCuda(uint32_t): Assertion `0' failed.

と出てきた。でもCUDAが悪いんじゃなくて、ドライバがきちんと入っていなくてNVENCが発動できないらしい。ログインできると思ったらドライバが入ってるようで入ってないらしい。コンパイルリンクは通るが実動はしないという理由にはなっている。

https://forums.ubuntulinux.jp/viewtopic.php?pid=115175

めんどうなのでPPAから入れることに。nvidia-381-devってのを入れてみた。ダメだ。サンプルが動かないし、コンパイルし直したら-lnvidia-encodeが見えないのが再発。どうしたらええねんw。


《再後記》
どうやらGeforce GT 1030が悪かった模様。NVENCは使えないみたいだし、他の機能についても制限されているらしい。NVENCを使いたい人は買っちゃダメです。GTX1050以上を買いましょう。

タグ:NVENC
コメント(0) 
共通テーマ:パソコン・インターネット

コメント 0