nVidia GPU(GTX950M) 付きのノートPCを買ったので、tensorflow-gpu を入れてみる。
highlight
2017年11月11日土曜日
2017年9月20日水曜日
emacs 起動時のウィンドウの位置や大きさを設定する
非ターミナルの GUI 版 emacs を起動する際、毎回定位置に移動させたりサイズを変更するのは面倒なので、起動時に自動的にセットしたい。前回起動時の設定を記憶する elisp も多分探せばあると思うが、emacs は常に定位置で一定サイズなのでよければ、基本機能である customize で事足りる。
2017年6月14日水曜日
2017年3月13日月曜日
2017年3月11日土曜日
Apache Tez を Ubuntu 16.10 にインストールする
Hive on Spark をセットアップしてみようと思ったが、上手くいかなかった。生(MapReduce) Hive で良いかと思ってたが、hive を使っていると相変わらず、hive 2 を使うなら on Spark か Tez を使え。嫌なら Hive 1 にしとけ、と警告が出てくる。じゃあ Hive on Tez を使うか、という事で Tez をインストールする。
まず、Hive on Spark が動かない原因について。 Hive から Spark のタスクを起動しようとするときに、JavaSparkListener クラスが無いという例外が発生する。 Hive のバグレポートにも挙がっているが、現在の Spark では SparkListener クラスを使うようになっていて、JavaSparkListener は Spark 2.0 では deprecated どころか、削除されてしまったらしく、これを使っている現行 Hive 2.1.1 では Spark 2 が使えない。Hive のソースリポジトリの trunk だと、既に SparkListener を使うようになっていたので、checkout してビルドしてみようとも思ったが、metastore のスキーマバージョンが変わったりするし、spark は開発が活発過ぎて、尖った変更がさらっと入ったりする。それがまあ魅力でもあったりする訳だが、この先も互換性が取れなって苦戦するケースがあり得そうだし、ということで、ここでは Tez を使うことにした。Hive on Spark 2 は、Hive 2.2 がリリースされたら、また試してみる事にしよう。
2017年3月8日水曜日
Spark を Ubuntu 16.10 にインストールする
Spark をインストールする。
方針
- ローカルモードで動かしてみて、Standalone master-slave 方式で動かす。その後 YARN で動かしてみる。
- YARN で動かすので、Spark History サーバを動かさないと、WebUI での実行履歴が見られない(私が誤解しているかもしれないが)様なので、History サーバは動かす
- Hive は以前のエントリでセットアップした Metastore サーバを使用する
- とりあえず spark ユーザは作らず、hadoop ユーザを spark 管理ユーザも代行させる方針。専用ユーザを作ったほうが良さそうなら、改めて設定し直す。
2017年3月2日木曜日
Hive を Ubuntu 16.10 にインストールする
方針
Hadoop はインストール済み、という前提
- /opt/hive を $HIVE_HOME とする
- Hive 用ユーザ hive を作成する
- metastore には、mariadb を利用する
- Hive ユーザ認証は取り敢えず設定しない。つまり NOSASL
2017年3月1日水曜日
Ubuntu で eclipse をインストールする
Ubuntu には eclipse がパッケージで用意されているが、バージョンを見てみると 3.8.1 だった。Indigo あたりになるのだとすると、流石にちょっと古すぎる。Neon をダウンロードしてインストールしたほうが良さそうだ。
eclipse はホームディレクトリに eclipse ディレクトリを作って、そこに tar xvzf するだけ。あとは、Ubuntu のランチャアイコンを用意すれば、一々端末を起動しなくて済む。
2017年1月27日金曜日
c++ 抽象クラスを関数テンプレート実引数に渡したい
c++ では、抽象クラスを関数テンプレートの実引数に使うことが出来ない事になっている。 これを何とかしてブチ込む必要がある場合には、どうすれば良いのか。
具体例を挙げる。以下のような AbstractName という純粋仮想クラスを、
関数テンプレートとして定義されている tfrun に渡したいような、func0()
実装中の様な場面。