macosxが新しく、macos Sierraになり少し様子を見て問題がなさそうなので、自宅のMacBookProを更新しました。更新は特に問題なく進み、インストールしてある既存のアプリにも特に問題がないようです。(実は、更新直前に気づいたのがいつのまにかBlenderが起動しなくなっていました。2年ほど更新サボってたからな〜 Sierraにしてから最新のBlenderにしたら問題なく動きました。)
ところで困ったのが、PowerOn時の画面にゲストアカウントが表示されるようになってしまったことです。これまでそんな表示なかったのにと思い、調べて見たら結構以前のOS更新の時からそういうトラブル(更新したらゲストアカウントが表示されるようになってしまった)があったようです。設定の「ユーザとグループ」でロックを解除して、ゲストログインが許可になっているのを不許可にするだけです。
だけどこれって、いつからか知りませんがゲストアカウントが子供用のペアレンタルコントロールにも使われる様になったようです。
しかし、OSの更新で勝手にゲストをONにしないで欲しいな〜(Appleは何を考えているんだ?)
2016年10月12日水曜日
2016年8月16日火曜日
windows10 アニバーサリーUpdateでbashを試してみる
ちょいと勇気がいりましたが、windows10でanniversary updateを行い(通知が来ないので手動でやりました)、bash on windowsを試してみました。
やり方は各種サイトにありますので割愛しますが、とにかく再起動が多い!なんか懐かしい風景です。(昔はシステム更新なんかだと、こんなんばっかだった)さて肝心の"bash on windows"ですが、なんというかvirtual boxでubuntuが動いているような感じです。それとも、今はやりのコンテナに仕立ててきたのか?そんなに重くはないんですが、問題は文字コードが…
何書いてあるのかわかりません。対策をあちこち知らべましたが、どうも決め手がないようです。まだマシンによって差がでてしまうようです。
ただそれ以外は普通にubuntuが動いています!いや、これは素晴らしい。これができると、これまでプログラム作るとき、macに逃げていたのが、windowsでもやってみるか、という気になります。(それが狙いだという話もありますし)
しかし、GUIはどうするんだろう?APIが全く違うし、windowsのGUI関係のAPIの一部でもこのシステムに取り込むのは大騒ぎになるだろうし。web系のサーバに使ってくれないかな、というM$の考えなんだろうけど、まだTCP/IPのAPIが完全には機能していないらしいし、今後どうなるのかな。(個人的にはCygwinが嫌いなんで、ある程度残って欲しいんですが、かなり今の状況では怪しいです。何か使い道を考えてあげないと)
ただ無理にGUIのAPIを移植しなくてもいいと思います。今、時代はwebですべてすますのが本流なんで、GUIはブラウザにまかせてしまえばいいですから。難しいのは不安定なwindows OSの上で如何に安定して動く環境にできるかですが、こればっかりはかなり難しいかな。
PS
どうもanniversary updateにしたのは早まったようです。ファイルの移動とかでおかしな挙動が見られます。
あと肝心のbashですがどうにも日本語が表示できないので、以下の設定で動かしています。
$ LANG=en_US.UTF-8
要は英語表記でアラートとか出してね、ですね。あと、一体どういう環境になっているのかわからないのですが、コンテナでもないようで、ping、ifconfig等のネットワーク系のコマンドが実行できません。ベータ版とは聞いていますが、どんな実装になってるんだ???
やり方は各種サイトにありますので割愛しますが、とにかく再起動が多い!なんか懐かしい風景です。(昔はシステム更新なんかだと、こんなんばっかだった)さて肝心の"bash on windows"ですが、なんというかvirtual boxでubuntuが動いているような感じです。それとも、今はやりのコンテナに仕立ててきたのか?そんなに重くはないんですが、問題は文字コードが…
何書いてあるのかわかりません。対策をあちこち知らべましたが、どうも決め手がないようです。まだマシンによって差がでてしまうようです。
ただそれ以外は普通にubuntuが動いています!いや、これは素晴らしい。これができると、これまでプログラム作るとき、macに逃げていたのが、windowsでもやってみるか、という気になります。(それが狙いだという話もありますし)
しかし、GUIはどうするんだろう?APIが全く違うし、windowsのGUI関係のAPIの一部でもこのシステムに取り込むのは大騒ぎになるだろうし。web系のサーバに使ってくれないかな、というM$の考えなんだろうけど、まだTCP/IPのAPIが完全には機能していないらしいし、今後どうなるのかな。(個人的にはCygwinが嫌いなんで、ある程度残って欲しいんですが、かなり今の状況では怪しいです。何か使い道を考えてあげないと)
ただ無理にGUIのAPIを移植しなくてもいいと思います。今、時代はwebですべてすますのが本流なんで、GUIはブラウザにまかせてしまえばいいですから。難しいのは不安定なwindows OSの上で如何に安定して動く環境にできるかですが、こればっかりはかなり難しいかな。
PS
どうもanniversary updateにしたのは早まったようです。ファイルの移動とかでおかしな挙動が見られます。
あと肝心のbashですがどうにも日本語が表示できないので、以下の設定で動かしています。
$ LANG=en_US.UTF-8
要は英語表記でアラートとか出してね、ですね。あと、一体どういう環境になっているのかわからないのですが、コンテナでもないようで、ping、ifconfig等のネットワーク系のコマンドが実行できません。ベータ版とは聞いていますが、どんな実装になってるんだ???
2016年8月12日金曜日
SQLite3のプログラムの勉強
ちょっとSQLite3を使ったプログラムをWindowsで作るとどうなるのか調べてみたくなりました。ただ私は普段LinuxかMacでプログラムを作ることが圧倒的に多いので、まずは慣れたMac、Xcodeで作ってみます。
1. sqlite3のインストール
brewを使ってインストールしています。コマンドラインでも使えますし、ヘッダ、ライブラリも一緒にインストールしてくれます。
2. プログラムの作成
とりあえず、以下の様なプログラムを作ってみました。
とてもシンプルです。実行結果は以下の様になります。
$HOME = /Users/hogehoge
$HOME = /Users/hogehoge/ProgWork/SQLite
OPEN SUCCESS!
id: 123, name: hoge
CLOSE SUCCESS!
createがありませんが、そこはマニュアルで作っています。(プログラムに書いてもいいんですが、毎回実行するためにいちいちdbファイルを削除するのも面倒なので。)
> create table tbl_test(id integer primary key, name text);
最終的にはinsertのところをupdateに変えて、プロセス間の通信代わりに使おうと目論んでいます。
3. 注意点
1. sqlite3のインストール
brewを使ってインストールしています。コマンドラインでも使えますし、ヘッダ、ライブラリも一緒にインストールしてくれます。
2. プログラムの作成
とりあえず、以下の様なプログラムを作ってみました。
とてもシンプルです。実行結果は以下の様になります。
$HOME = /Users/hogehoge
$HOME = /Users/hogehoge/ProgWork/SQLite
OPEN SUCCESS!
id: 123, name: hoge
CLOSE SUCCESS!
createがありませんが、そこはマニュアルで作っています。(プログラムに書いてもいいんですが、毎回実行するためにいちいちdbファイルを削除するのも面倒なので。)
> create table tbl_test(id integer primary key, name text);
最終的にはinsertのところをupdateに変えて、プロセス間の通信代わりに使おうと目論んでいます。
3. 注意点
- Xcodeの設定でライブラリの追加オプション"-lsqlite"を忘れない様に。
- 単純にやろうと思うなら、sqlite_open(), sqlite_close(), sqlite_exec()だけで済ますこともできます。ただselect文をsqlite_exec()でやろうとすると、どうしても出力をcallbackで受けないといけなくなります。callback関数を書くのが面倒だったので、非同期クエリで実装しています。(こちらも面倒だがやむを得ません)
- sqliteはsql文の実行ではデフォルトでオートトランザクションになっています。将来的にプロセス間の通信に使うつもりなら本当は、"bgein","commit"と明確にトランザクションの指定をしてやるべきです。ただそんな複雑な通信は当面する気がなく、一方向だけ(片方がwriteして、他方はreadするだけ)のつもりなので、当面はこれでも問題はありません。
2016年6月18日土曜日
ofstreamのバッファサイズ
以前から思っていたんですが、c++のプログラムで1つのファイルの中のデータを複数のデータに分類して出力するプログラムが、どうにも時間がかかると。
まあ、100MB以上のファイルを数百のデータに分類する場合などかなり処理が重いとはわかっているんですが、にしても耐え難くなってきました。色々、ぐぐってみるとやはりofstreamは昔のcのfwrite()に比べるとかなり遅いようです。(持っている機能が段違いなので、プログラム作成の手間を考えると今更ofstreamをfwrite()に戻す気にはなりませんが)
そんななか、ofstreamのバッファを大きくすると速くなるとの話を見つけました。ちょっと試してみます。(10MBのテキストファイルを作成するだけです)
実行してみると、一瞬で終わります。そこで、わざとバッファサイズを小さくしてみます。
極端ですが、いきなり10秒以上処理に時間がかかるようになりました。
ところでデフォルトのバッファサイズはどれくらいになっているんでしょう?あとどのくらい大きくしても大丈夫なんだろ?(実は大きいほどいいかと最初は思い、bufsizeを100MBなんてやったら、プログラムが動かなくなりました。それもファイル出力をしているサブルーチンに入ったところで異常終了!全然理由がわかりませんが、どうもサブルーチンのローカル変数としてバッファを定義したので、スタックエリアに問題が出たんでしょう。)このあたりは、プログラムやそれを動かすシステムの性能にもよるでしょうから、一口には中々言えないところでしょう。
まあ、100MB以上のファイルを数百のデータに分類する場合などかなり処理が重いとはわかっているんですが、にしても耐え難くなってきました。色々、ぐぐってみるとやはりofstreamは昔のcのfwrite()に比べるとかなり遅いようです。(持っている機能が段違いなので、プログラム作成の手間を考えると今更ofstreamをfwrite()に戻す気にはなりませんが)
そんななか、ofstreamのバッファを大きくすると速くなるとの話を見つけました。ちょっと試してみます。(10MBのテキストファイルを作成するだけです)
実行してみると、一瞬で終わります。そこで、わざとバッファサイズを小さくしてみます。
極端ですが、いきなり10秒以上処理に時間がかかるようになりました。
ところでデフォルトのバッファサイズはどれくらいになっているんでしょう?あとどのくらい大きくしても大丈夫なんだろ?(実は大きいほどいいかと最初は思い、bufsizeを100MBなんてやったら、プログラムが動かなくなりました。それもファイル出力をしているサブルーチンに入ったところで異常終了!全然理由がわかりませんが、どうもサブルーチンのローカル変数としてバッファを定義したので、スタックエリアに問題が出たんでしょう。)このあたりは、プログラムやそれを動かすシステムの性能にもよるでしょうから、一口には中々言えないところでしょう。
2016年4月10日日曜日
Jetson TK1に外部SDをmount
さて、一通り設定が終わり、chainerもかなり苦労しましたが無事インストールできました。(Jetson TK1にはcuDNNが入っていると聞いていたんですが、chainerインストール時に、なぜかcコンパイラが動き出し(CUDAを使えるとインストーラが自動的に認識し、再ビルドしだしたのか?)、"cudnn.hがない”と散々怒られました。ただ、このインストーラが素晴らしく、それでも何とかpyCudaは使えるようにしてくれたようです。
後で調べたら、TK1だとcuda-6.5くらいまでが無難にインストールできて(自分もそうしましたが)、cudnnはcuda-7.0からだそうです。(最新は7.5ですが、それがインストールできたら、一度chainerを pip uninstall chainer して再度入れ直さないとダメだそうです。
1. cudaの威力を確認する
何か時間のかかるもので、威力を確認したくなります。調べていたら、chainer-goghというのが面白そうです。詳細は省きますが、元イメージ + スタイルイメージ = 合成イメージ を作ってくれます。何でこれがDeepLearningなのかよくわかりませんが、caffeの出来合いのモデルを使うそうです。
まず、MacBookProで試してみると、2時間ちょっとかかりました。(下手な古いPC使うと、1日くらいかかるらしいです)
さて、Jeton TK1ですが30分で処理が終わりました。(他のブログにも記事があり、そちらでも30分くらいなので、設定はうまくいっているのでしょう)
速いといえば、速いのですが意外にMacBookProが早くてびっくりです。(こいつのビデオチップはintel内蔵を使っていますので、OpenCVはできてもCUDAは動きません)
2. 外部SDを使えるようにする
Jetson TK1の内蔵SDは16GBしかなく、しかもubuntuのOSやらcudaの設定で5GB以上使ってしまいます。このままchainerを試すそうとしても、すぐにSDが一杯になるのは目に見えてます。
そこで外部SDをつけて、ファイルシステムとして使えるようにしました。
(1)ext4でフォーマットする
基本、SDカードの初期状態はwindowsで使うことを考えてvfatです。しかしそれでは都合が悪いので、ext4でフォーマットします。
$ sudo cfdisk (デバイス名) # これでまずvfatのパーティションを削除します
デバイズ名は自分の場合は、/dev/mmcblk1でした。(内蔵SDが/dev/mmcblk0でした)調べる一番簡単な方法は、Jetsonを起動しておいて、SDをさすと自動的にマウントされます。そこで、df -h してみるなり、dmesg | tail なりすればわかります。
次にフォーマットです。
$ sudo mkfs.ext4 (デバイス名)-L (ラベル名)
最後の「ラベル名」は必須ではありませんが、つけておくとfstabを書くのが楽になります。
(2)SDカードをマウントする
さてここで/etc/fstab の設定になるのですが、なぜか自分のJetsonでは中身が空っぽです。これどうやって、内蔵SDのマウントしてるんだ?しかもコメントとして、"UNCONFIGURED FSTAB FOT BASE SYSTEM"と書いてあるし不安になってきました。とりあえず調べた通り以下の設定を追加しました。
LABEL=(ラベル名) (マウントポイント) ext4 defaults 2 0
ためしに、sudo mount -a で問題なくマウントできることを確認します。
(3)Jetsonを再起動して自動的にマウントされるかを確認する
自分の場合、ここまでくるのに随分失敗しました。試行錯誤して、これまでのコマンドを何度もやり直しましたし、(2)のmountコマンドでうまくいくのに、起動時はダメとか大変でした。そんなときは起動時にエラーを出力してきますので、メッセージしたがいとりあえずSkipして、dmesg等で何が悪いのかを調べます。
とりあえず、自分の場合はこれでうまくいくようになりました。
64GBのSDをつけましたので、ちょっと大きなものも試せそうです。(本気でやるなら、SATAのI/Fもっているので、そちらに繋いだ方がいいでしょう。)
後で調べたら、TK1だとcuda-6.5くらいまでが無難にインストールできて(自分もそうしましたが)、cudnnはcuda-7.0からだそうです。(最新は7.5ですが、それがインストールできたら、一度chainerを pip uninstall chainer して再度入れ直さないとダメだそうです。
1. cudaの威力を確認する
何か時間のかかるもので、威力を確認したくなります。調べていたら、chainer-goghというのが面白そうです。詳細は省きますが、元イメージ + スタイルイメージ = 合成イメージ を作ってくれます。何でこれがDeepLearningなのかよくわかりませんが、caffeの出来合いのモデルを使うそうです。
まず、MacBookProで試してみると、2時間ちょっとかかりました。(下手な古いPC使うと、1日くらいかかるらしいです)
さて、Jeton TK1ですが30分で処理が終わりました。(他のブログにも記事があり、そちらでも30分くらいなので、設定はうまくいっているのでしょう)
速いといえば、速いのですが意外にMacBookProが早くてびっくりです。(こいつのビデオチップはintel内蔵を使っていますので、OpenCVはできてもCUDAは動きません)
2. 外部SDを使えるようにする
Jetson TK1の内蔵SDは16GBしかなく、しかもubuntuのOSやらcudaの設定で5GB以上使ってしまいます。このままchainerを試すそうとしても、すぐにSDが一杯になるのは目に見えてます。
そこで外部SDをつけて、ファイルシステムとして使えるようにしました。
(1)ext4でフォーマットする
基本、SDカードの初期状態はwindowsで使うことを考えてvfatです。しかしそれでは都合が悪いので、ext4でフォーマットします。
$ sudo cfdisk (デバイス名) # これでまずvfatのパーティションを削除します
デバイズ名は自分の場合は、/dev/mmcblk1でした。(内蔵SDが/dev/mmcblk0でした)調べる一番簡単な方法は、Jetsonを起動しておいて、SDをさすと自動的にマウントされます。そこで、df -h してみるなり、dmesg | tail なりすればわかります。
次にフォーマットです。
$ sudo mkfs.ext4 (デバイス名)-L (ラベル名)
最後の「ラベル名」は必須ではありませんが、つけておくとfstabを書くのが楽になります。
(2)SDカードをマウントする
さてここで/etc/fstab の設定になるのですが、なぜか自分のJetsonでは中身が空っぽです。これどうやって、内蔵SDのマウントしてるんだ?しかもコメントとして、"UNCONFIGURED FSTAB FOT BASE SYSTEM"と書いてあるし不安になってきました。とりあえず調べた通り以下の設定を追加しました。
LABEL=(ラベル名) (マウントポイント) ext4 defaults 2 0
ためしに、sudo mount -a で問題なくマウントできることを確認します。
(3)Jetsonを再起動して自動的にマウントされるかを確認する
自分の場合、ここまでくるのに随分失敗しました。試行錯誤して、これまでのコマンドを何度もやり直しましたし、(2)のmountコマンドでうまくいくのに、起動時はダメとか大変でした。そんなときは起動時にエラーを出力してきますので、メッセージしたがいとりあえずSkipして、dmesg等で何が悪いのかを調べます。
とりあえず、自分の場合はこれでうまくいくようになりました。
64GBのSDをつけましたので、ちょっと大きなものも試せそうです。(本気でやるなら、SATAのI/Fもっているので、そちらに繋いだ方がいいでしょう。)
2016年4月6日水曜日
Jetson TK1購入
さて、早速Jetson TK1が家に来ました。(なんかよくわからないけど、2月末に商社が偶然ある程度の数量を入手できたみたいで、まだ在庫がありました)
(机の上キーボード、マウスが散らかってますが、そのあたりは気にしないように)
ここからが、苦難の道の始まりです。ネットで色々設定方法を調べたのですが、どれも変わっており、どうしたらいいのか全然わからなくなりました。大きな問題が2つ。ホストPCとして、Ubuntu14のマシンが必要なのはわかっていました。(flashromに最新版のromイメージをUSB経由で書き込むのに必要)
しかし、最初にぶつかったのが以下の2つのトラブル。
①Jetsonが/etc/defaults/saneで問題があるといってきて、USBによる接続を拒否する。
saneはスキャナーのIFらしく、どうもこれを使ってホストPCと接続しているようです。JetsonのDefaultではこれをnoにしてあり、viでyesにしてやる必要があります。(だったら、最初からyesにしておけよ!)
②romイメージの書き込み最中に、なにか127.0.,0.1:33335が開けないと怒られてとまる。
これはだいたい想像がつきました。ホストPCはUbuntu64bitをセットアップしたばかりです。sshdがインストールしてありませんでした。単にインストールして終わり。
しかし、その後も全然設定ができません。そもそも、設定に使うtoolがぐぐったのと全然違います!進化の早いとこなので、しかたないにしても全然対応がわかりません。(どうやってもうまく行きません。(T_T))
散々、ぐぐった結果やはりJetsonのLinuxはぼろぼろだとのこと。grinch版がいいとのこと。そこで、それをROMに焼くことに決定。
まずはまっさらなUbuntu、L4Tをいれます。
展開して、ROMに書き込みます。
このあと、Jetsonをrecovery-modeで起動して、イメージを焼きます。(一応、同封してあるダンボールの紙にボタンの説明はありました。注意しましょう。当然、英語です)
これをやる前に、USBで接続されていることを、lsusbコマンドで確認。NIVIDIAが見えます。あと、本当ならdeviceとして、/dev/mmcblk0p1が見えるはずなんですが、自分の環境では見えませんでした。 ただ、一応これで書き込みはできました。 さて、ここからはJetson側で起動イメージの差し替えです。ネタは元にありますので、コマンドだけ羅列しておきます。
ちょっと不親切ですみませんが、まあこの世界はこんなもんです。
結局、最新版のライブラリはTX1用だけで、TK1にはでていないようです。その後、以下のリポジトリを登録します。
何故か、g++がないので、個別にインストール。
これでやっとCUDAの開発用ライブラリをインストールできる準備ができました。(これまでのはあくまで準備作業です。おいおい、ってな感じですが先は長いです。)
さてやっと、CUDA-6.5のライブラリをインストールします。(最新は7.5ですが、7.0からARMのサポートがなくなったとのこと。TX1しか対応していない。どうするんだNVIDIA)
これで、CUDA6.5までインストールできました。あとはGPUを使えるように、自分をvideoグループに登録し、PATHを通しておきます。
うまくいけば、専用コンパイラのnvccのバージョンが確認できます。
最後に、時間がUTCのままなので日本(Tokyo)にしておきましょう。
さて、Sampleを動かさないと、実感が湧きません。
このコマンドがインストールされているはずです。これでHOMEにSampleがインストールされますから、そこでmakeします。結構時間がかかりますが、無事Sampleは動きました。昔だったらなんの計算に使おうかと考えますが、今はAIですね。まずはディスクの容量がFlashの16GBしかないので、これをなんとかしないと。
(机の上キーボード、マウスが散らかってますが、そのあたりは気にしないように)
ここからが、苦難の道の始まりです。ネットで色々設定方法を調べたのですが、どれも変わっており、どうしたらいいのか全然わからなくなりました。大きな問題が2つ。ホストPCとして、Ubuntu14のマシンが必要なのはわかっていました。(flashromに最新版のromイメージをUSB経由で書き込むのに必要)
しかし、最初にぶつかったのが以下の2つのトラブル。
①Jetsonが/etc/defaults/saneで問題があるといってきて、USBによる接続を拒否する。
saneはスキャナーのIFらしく、どうもこれを使ってホストPCと接続しているようです。JetsonのDefaultではこれをnoにしてあり、viでyesにしてやる必要があります。(だったら、最初からyesにしておけよ!)
②romイメージの書き込み最中に、なにか127.0.,0.1:33335が開けないと怒られてとまる。
これはだいたい想像がつきました。ホストPCはUbuntu64bitをセットアップしたばかりです。sshdがインストールしてありませんでした。単にインストールして終わり。
しかし、その後も全然設定ができません。そもそも、設定に使うtoolがぐぐったのと全然違います!進化の早いとこなので、しかたないにしても全然対応がわかりません。(どうやってもうまく行きません。(T_T))
散々、ぐぐった結果やはりJetsonのLinuxはぼろぼろだとのこと。grinch版がいいとのこと。そこで、それをROMに焼くことに決定。
まずはまっさらなUbuntu、L4Tをいれます。
wget http://developer.download.nvidia.com/embedded/L4T/r21_Release_v3.0/Tegra124_Linux_R21.3.0_armhf.tbz2 wget http://developer.download.nvidia.com/embedded/L4T/r21_Release_v3.0/Tegra_Linux_Sample-Root-Filesystem_R21.3.0_armhf.tbz2
展開して、ROMに書き込みます。
tar -xvf Tegra124_Linux_R21.3.0_armhf.tbz2 (中略) cd Linux_for_Tegra/rootfs sudo tar xpf ../../Tegra_Linux_Sample-Root-Filesystem_R21.3.0_armhf.tbz2 cd .. sudo ./apply_binaries.sh
このあと、Jetsonをrecovery-modeで起動して、イメージを焼きます。(一応、同封してあるダンボールの紙にボタンの説明はありました。注意しましょう。当然、英語です)
sudo ./flash.sh jetson-tk1 mmcblk0p1
これをやる前に、USBで接続されていることを、lsusbコマンドで確認。NIVIDIAが見えます。あと、本当ならdeviceとして、/dev/mmcblk0p1が見えるはずなんですが、自分の環境では見えませんでした。 ただ、一応これで書き込みはできました。 さて、ここからはJetson側で起動イメージの差し替えです。ネタは元にありますので、コマンドだけ羅列しておきます。
wget http://www.jarzebski.pl/files/jetsontk1/grinch-21.3.4/zImage wget http://www.jarzebski.pl/files/jetsontk1/grinch-21.3.4/jetson-tk1-grinch-21.3.4-modules.tar.bz2 wget http://www.jarzebski.pl/files/jetsontk1/grinch-21.3.4/jetson-tk1-grinch-21.3.4-firmware.tar.bz2 sudo tar -C /lib/modules -vxjf jetson-tk1-grinch-21.3.4-modules.tar.bz2 sudo tar -C /lib -vxjf jetson-tk1-grinch-21.3.4-firmware.tar.bz2 sudo cp zImage /boot/zImage
ちょっと不親切ですみませんが、まあこの世界はこんなもんです。
結局、最新版のライブラリはTX1用だけで、TK1にはでていないようです。その後、以下のリポジトリを登録します。
sudo apt-add-repository universe 'universe' distribution component enabled for all sources. sudo apt-get update sudo apt-get upgrade
何故か、g++がないので、個別にインストール。
sudo apt-get install g++
これでやっとCUDAの開発用ライブラリをインストールできる準備ができました。(これまでのはあくまで準備作業です。おいおい、ってな感じですが先は長いです。)
さてやっと、CUDA-6.5のライブラリをインストールします。(最新は7.5ですが、7.0からARMのサポートがなくなったとのこと。TX1しか対応していない。どうするんだNVIDIA)
wget http://developer.download.nvidia.com/embedded/L4T/r21_Release_v3.0/cuda-repo-l4t-r21.3-6-5-prod_6.5-42_armhf.deb sudo dpkg -i cuda-repo-l4t-r21.3-6-5-prod_6.5-42_armhf.deb (中略) sudo apt-get update (中略) sudo apt-get install cuda-toolkit-6-5
これで、CUDA6.5までインストールできました。あとはGPUを使えるように、自分をvideoグループに登録し、PATHを通しておきます。
sudo usermod -a -G video $USER echo "export PATH=/usr/local/cuda/bin:$PATH" >> ~/.bashrc echo "export LD_LIBRARY_PATH=/usr/local/cuda/lib:$LD_LIBRARY_PATH" >> ~/.bashrc source ~/.bashrc
うまくいけば、専用コンパイラのnvccのバージョンが確認できます。
nvcc -V nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2014 NVIDIA Corporation Built on Tue_Feb_17_22:42:19_CST_2015 Cuda compilation tools, release 6.5, V6.5.45
最後に、時間がUTCのままなので日本(Tokyo)にしておきましょう。
さて、Sampleを動かさないと、実感が湧きません。
cuda-install-samples-6.5.sh
このコマンドがインストールされているはずです。これでHOMEにSampleがインストールされますから、そこでmakeします。結構時間がかかりますが、無事Sampleは動きました。昔だったらなんの計算に使おうかと考えますが、今はAIですね。まずはディスクの容量がFlashの16GBしかないので、これをなんとかしないと。
2016年3月31日木曜日
CUDAを試してみたい
何となく、CUDAを試してみたくなりました。
昔から興味はあったんですが、中々やってみる時間がなくて。。。 手近のPCでNVIDIAを積んでるマシンというと、WinXPの頃に買ったGame用PCがあります。ただ、GPUがちょっと古い!(GT-9800)NVIDIAのHP見てみると、一応対応はしているとのこと。
このPC、Ubuntuの32bitをインストールしてありますが、せっかくなので64bitをインストールして、CUDAをインストールしてみました。しかし、大失敗(-_-;) 画面の解像度は落ちて、ドライバはうまくインストールできたようなのですが、サンプルプログラムを動かすとなぜか「デバイスが掴めません」(意訳)みたいなことを言ってきて動きません。
実は、事前にnvidiaを積んでるMacBookAirでも試してみたんですが、そちらでもそんなことを同じサンプルプログラムで言われました。(T_T)
Ubuntuならいけるかと思ったんだが。。。しかし、問題はここからでした。CUDAをアンインストールできません。インストールは必要なものの塊をNVIDIAのHPからDLしてきましたが、アンインストール方法がどうしても見つからず、しかたなく関連しそうなものをひとつずつapt-get removeしたんですが、どうにも元に戻りませんでした。
あきらめて、Ubuntuを再インストールしてしまいました。(このPC、別の用途で古いUbuntu-10も入れてあったんですが、これを残すためにインストール方法はかなり苦労しました。何度かgrubを壊してしまいました)
やっと復帰して、このブログを書いているわけですが、まだ以前のUbuntu14の状態には戻せていません。そちらはおいおいやるとして、CUDAのためにJetson TK1をポチりました。こっちの専用マシンのほうが試すのにらくでしょうから。(今だったら、TX1だろうという声もあるかもしれませんが、あちらは気軽に試すにはちょっと勇気の必要な価格です。)
昔から興味はあったんですが、中々やってみる時間がなくて。。。 手近のPCでNVIDIAを積んでるマシンというと、WinXPの頃に買ったGame用PCがあります。ただ、GPUがちょっと古い!(GT-9800)NVIDIAのHP見てみると、一応対応はしているとのこと。
このPC、Ubuntuの32bitをインストールしてありますが、せっかくなので64bitをインストールして、CUDAをインストールしてみました。しかし、大失敗(-_-;) 画面の解像度は落ちて、ドライバはうまくインストールできたようなのですが、サンプルプログラムを動かすとなぜか「デバイスが掴めません」(意訳)みたいなことを言ってきて動きません。
実は、事前にnvidiaを積んでるMacBookAirでも試してみたんですが、そちらでもそんなことを同じサンプルプログラムで言われました。(T_T)
Ubuntuならいけるかと思ったんだが。。。しかし、問題はここからでした。CUDAをアンインストールできません。インストールは必要なものの塊をNVIDIAのHPからDLしてきましたが、アンインストール方法がどうしても見つからず、しかたなく関連しそうなものをひとつずつapt-get removeしたんですが、どうにも元に戻りませんでした。
あきらめて、Ubuntuを再インストールしてしまいました。(このPC、別の用途で古いUbuntu-10も入れてあったんですが、これを残すためにインストール方法はかなり苦労しました。何度かgrubを壊してしまいました)
やっと復帰して、このブログを書いているわけですが、まだ以前のUbuntu14の状態には戻せていません。そちらはおいおいやるとして、CUDAのためにJetson TK1をポチりました。こっちの専用マシンのほうが試すのにらくでしょうから。(今だったら、TX1だろうという声もあるかもしれませんが、あちらは気軽に試すにはちょっと勇気の必要な価格です。)
登録:
投稿 (Atom)

