June 14, 2011

ML110G6 に Windows7 を導入すると不明なデバイスが残る件

ML110G6にWindows7 x64を導入すると、不明なデバイスがひとつ残ってしまう。
コンバネから情報を調べると
ACPI\HPQ000B
とのこと。
何かと思って調べてみると、こんな情報があった。

これにしたがって、
HP ProLiant 100シリーズ マネジメント コントローラ ドライバ for Windows Server 2003/2008 x64 edition
をインストールする。
Windows7用ではないが問題はない。

これで不明なデバイスはなくなった。すっきり!

HP ProLiant ML110G6 に GeForceGTX560Ti を導入する

CUDA を使いたいので ML110 G6 にGPUを導入することにした。
GT430 とかでスモールスタートするのもいいが、もうちょっと気合を入れてみたい。
(ML110G6+1万円で組める激安CUDA環境はこちら)
お財布との相談の結果、 GeForceGTX560Ti をねらうことにする。
2万円前半台でそこそこ性能は良さそう。
560Tiを使うにはML110G6の電源は貧弱なので電源も換装することにした。

実際に購入した製品は
グラフィックカード:MSI:N560GTX-Ti TwinFrozrII
電源:Scythe:剛力短2 700W 80PLUSブロンズ SPGT2-700P

ML110 G6は電源はATXそのままなのだが、ケースの関係上ショートサイズの電源を選ぶ必要がある。

電源は何事もなく換装完了し、グラボの搭載をしようとしたのだが、どうにもうまく嵌らない。
というのもこのグラボ、2スロット占有であり、どうも拡張スロットのセパレータであるケースの突起が邪魔なようだ。
邪魔なのでペンチで突起ごとケースを歪ませて対応した。

LinuxでGPUのベンチをどう取ったらいいのか迷ったので、Windows7を導入。
FFXIVベンチを走らせてみた。
HighでもLowでも3000強。期待より低い。というかHighとLowで変化がないのは何でだぜ…

小さいケースに無理くり押し込んだ手前、温度上昇が気になる。
ベンチをループさせながらGPU-ZでGPUの温度変化を追ってみた。
・FanSpeed55%で温度60度で安定
・GPULoadがそもそも40%ぐらいまでしか上昇しない…
・30分実験継続して温度の上昇傾向なし
・ベンチを終了すると室温+10度程度で安定
LoadがMAXまでいかないのは、GPU以外が足を引っ張ってるからなのかな…
まぁ、暴走したら対策を考えよう。とりあえずは大丈夫そう。

あとは、CUDAの導入、OpenCVのCUDA対応、PyCUDAの導入という流れを考えている。

June 7, 2011

CentOS5におけるPython2.6の導入

CentOS5(RHEL5)のPythonは2.4系で色々辛いのでPython2.6を導入する。
CentOS6になればPython2.6系になるのだけど…

迂闊な事をするとpythonをつかっているスクリプトに影響を与える可能性があるので注意。
可能性の中で一番辛いのはyumが死ぬこと。
要は現状のpython(/usr/bin/pythonと/usr/lib/python2.4以下)を傷つけなければ問題ない。
DLして解凍
# cd /usr/local/src
# wget http://www.python.org/ftp/python/2.6.7/Python-2.6.7.tgz
# tar zxvf Python-2.6.7.tgz 
# cd Python-2.6.7
Modules/Setup.dist内のzlibに関するコメントアウトを解除する
#zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz
↓
zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz
CheckInstallでrpm化して導入、libを登録
# ./configure --enable-shared
# make
# checkinstall
# rpm -ihv /usr/src/redhat/RPMS/x86_64/Python-2.6.7-1.x86_64.rpm 
# echo "/usr/local/lib" > /etc/ld.so.conf.d/python2.6.conf
# ldconfig
で、旧来のpython(/usr/bin/python)とは別に新しいpython(/usr/local/bin/python)が導入された。
PATHの設定にもよるが、デフォルトでは/usr/local/binが先に書かれているはずなので、
コマンドラインでpythonとだけ指定すると新しい方が呼ばれるはず。
最後にeasy_installが2.4系にしか入っていないので、新たに入れ直す。
# wget http://peak.telecommunity.com/dist/ez_setup.py
# python ez_setup.py
これでeasy_installが2.6系でも使えるようになった。
と、ここまで書いてeasy_install自体もpacoで管理すれば良かったことに気がつくもときすでに遅し…
pacoって"make install"にあたる部位で-オプションをつけると
pacoへのオプションだと認識されてしまうようでにっちもさっちも!まぁいいか…
で、最後に便利系を入れておく。
# paco -p pip easy_install pip
# paco -p virtualenv easy_install virtualenv
# paco -p virtualenvwrapper easy_install virtualenvwrapper
以上

pacoの導入

前回CheckInstallを導入した。
"make install"するソフトはCheckInstallするとして、
easy_install経由でインストール方法をとるパッケージの管理をするために、pacoを導入する。
(他にも使えるだろうけど。ついでにいえばpip使えよって話かもだけど。)
これもcheckinstallでrpm化して導入する。
# cd /usr/local/src
# wget http://downloads.sourceforge.net/paco/paco-2.0.9.tar.gz
# tar zxvf paco-2.0.9.tar.gz 
# cd paco-2.0.9
# ./configure --disable-gpaco
# make
# checkinstall
# rpm -ihv /usr/src/redhat/RPMS/x86_64/paco-2.0.9-1.x86_64.rpm 
以上

CheckInstallの導入

ソースから導入するソフトウェアは一定数存在する。
しかしRHELではrpmでパッケージ管理を行っている。
可能ならばrpmですべてのパッケージ管理を行いたい。
そこでCheckInstallを導入する。
CheckInstallを使えば、"make install"する類のパッケージをrpm化することができる。
(Ubuntuなどで採用されているdeb形式にも出力できる)
rpmは/usr/src/redhat/RPMSに生成される。
# cd /usr/local/src/
# wget http://www.asic-linux.com.mx/~izto/checkinstall/files/source/checkinstall-1.6.2.tar.gz
# tar zxvf checkinstall-1.6.2.tar.gz 
# cd checkinstall-1.6.2
# make
# make install
で導入する。
CheckInstall自体もrpmで管理するため、CheckInstallもrpm化して上書きする。
# checkinstall
# rpm -ihv /usr/src/redhat/RPMS/x86_64/checkinstall-1.6.2-1.x86_64.rpm
以上

June 1, 2011

" Can't remove open logical volume "対策

どこからも利用してない"はず"のLVMのLV"hoge"が Can't remove open logical volume "hoge" と言われて消去できない、
みたいなことがある。再起動したりしてみてもダメ…
そんなときは
# fuser /dev/VolGroupXX/hoge
で、どのプロセスが利用中なのか調べる。
プロセスIDがわかるのであとはpsでなんのプロセスなのか確認、対処する。

問答無用で殺したい時は
# fuser -km /dev/mapper/hogehoge
でok。

May 29, 2011

Ubuntu10.10 に OpenCV2.2 をインストールする

::OpenCV2.2でCUDA対応する導入法はこちら
::OpenCV2.3RCの導入法はこちら

UbuntuにはaptitudeでもOpenCVは導入可能だが、その場合Versionが2.1になってしまう。
せっかくなので2.2を入れる。
主にこことここを参考にする。
Ubuntu10.10デスクトップ版を対象とする。

まず依存を解決する
$ sudo apt-get install libtbb2 libtbb-dev libgtk2.0-dev build-essential pkg-config libpng12-0 libpng12-dev libpng3 libpng3-dev libpnglite-dev libpngwriter0-dev libpngwriter0c2 zlib1g-dbg zlib1g zlib1g-dev libjasper-dev libjasper-runtime libjasper1 pngtools libtiff4-dev libtiff4 libtiffxx0c2 libtiff-tools  libjpeg62 libjpeg62-dev libjpeg62-dbg libjpeg-progs ffmpeg libavcodec-dev libavcodec52 libavformat52 libavformat-dev libgstreamer0.10-0-dbg libgstreamer0.10-0 libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libxine1-ffmpeg libxine-dev libxine1-bin libunicap2 libunicap2-dev libdc1394-22-dev libdc1394-22 libdc1394-utils swig libv4l-0 libv4l-dev python-numpy libpython2.6 python-dev python2.6-dev openexr libswscale0 libswscale-dev libeigen2-dev libopenexr-dev subversion subversion-tools doxygen doxygen-gui cmake

あとはソースを落としてきて導入。
また、途中でCMakeLists.txtをsedで編集している。これはUbuntuのPythonがsite-packagesを見にいかないため。
$ mkdir -p ~/local/src
$ cd ~/local/src
$ wget http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.2/OpenCV-2.2.0.tar.bz2
$ tar jxvf OpenCV-2.2.0.tar.bz2
$ cd OpenCV-2.2.0
$ sed -i s/site-packages/dist-packages/g CMakeLists.txt
$ mkdir release
$ cd release
$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BULD_PYTHON_SUPPORT=ON -D WITH_TBB=ON -D WITH_QT=ON -D WITH_QT_OPENGL=ON -D BUILD_DOXYGEN_DOCS=ON ../
$ make -j2
$ sudo make install

忘れずにldconfig
$ sudo ldconfig

CUDA対応もそんなに難儀しなさそうなので、今度やってみよう。

64bit Ubuntu10.10 でChromeを入れてもFlashがbuilt-inされてない…

なんの因果か64bit版UbuntuにChromeを入れてもFlashがbuilt-inされていない。
絶望したのでライブラリをAdobeから落としてきて対処する。

公式サイトから"Download plug-in for 64-bit Linux"をたどってtar.gzファイルをDL

解答した中身を
$ sudo mv libflashplayer.so /usr/lib64/
$ sudo mkdir /opt/google/chrome/plugins
$ sudo sudo ln -s /usr/lib64/libflashplayer.so /opt/google/chrome/plugins/
と配置してChromeを再起動すればok

May 24, 2011

OpenCV haartraining が segmentation fault する件

最近は画像処理で遊んでいる。
OpenCVに関しては導入から利用まで一通り後でまとめるとして(まとめた)、haarliketrainingが落ちる理由が非常にションボリだったのでここに書き連ねておく。

このあたりの記事を参考にオブジェクト検出器をつくろうとおもって負例500件、正例1件をあつめ,neg.txt(前述記事中のNG.txt)をつくり,(正例は1個だけだったのでリストはつくっていない)
$ #正例にアフィン変換をかけて正例を増やす
$ opencv_createsamples -img pos/pos.jpg -vec pos.vec -num 1000 -bgcolor 255 -w 100 -h 100
$ #負例と合わせて学習
$ opencv_haarliketraining -data training -vec pos.vec -bg neg.txt -npos 1000 -nneg 500  -w 100 -h 100 -mode ALL -nonsysm -mem 1000
とやってみると、segmentation faultする。
Google先生に聞くと、OpenCV1.x系だとneg.txtに記述されている負例のうち、実体がないものがあるとセグフォ、とおっしゃるのだがちゃんと全てのファイルは実在するしpathも間違ってない。そもそもOpenCV2.x系だしなぁ…
ということでうろうろしていると、
I had this problem as well, see bug #964145 on SourceForge. In short,
the negative samples have to be at least twice as wide and twice as
high as the positive samples, otherwise training will crash at some
stage.
http://tech.groups.yahoo.com/group/OpenCV/message/24290
ということらしい。
つまり、すべての負例が正例サンプルのタテヨコ2倍以上の大きさが無いと落ちるらしい…

ドキュメントの目立つところにそれぐらい書いておいて欲しい…

負例の最小値が100x40だったので
$ #正例をアフィン変換をかけて正例を増やす
$ opencv_createsamples -img pos/pos.jpg -vec pos.vec -num 1000 -bgcolor 255 -w 50 -h 20
$ #負例と合わせて学習
$ opencv_haarliketraining -data training -vec pos.vec -bg neg.txt -npos 1000 -nneg 500  -w 50 -h 20 -mode ALL -nonsysm -mem 1000
で問題なく学習完了

ちなみに学習完了までものすごい時間がかかる。

May 10, 2011

Ubuntu10.10デスクトップ版のhome以下のディレクトリ名を英語化する

日本語でUbuntu10.10デスクトップ版を導入したら
homeディレクトリ以下の各種ディレクトリ名が日本語表記でだいぶ萎える。

一般には、
"英語で導入し追加言語で日本語を選ぶ"
のが原則らしい。

再インストールとか面倒なので下記のコマンドを実行して対応する。

$ LANG=C xdg-user-dirs-gtk-update