2009年12月8日火曜日

Python の勉強

今日は、Python の C/APIについて勉強。C 言語から Python に戻るとき(関数の最後で return するとき)にバグがあると、いきなり Segmentation fault になってしまうのが痛いが、とりあえず必要そうな機能はざっとサンプルプログラムを作成してみた。だいたいわかってきたので、SDPA の Python インターフェースを作ることも可能そうだ。明日は、param.m ぐらいから Python 化してみよう。

あと、SDPARA の数値実験用にSDP問題を生成。これは、かなり時間がかかりそう。でも、できあがってしまえば、あとは SDPARA にシェルスクリプトで放り投げるだけ。
そうそう、SDPA のインストール中に気がついたが、GotoBLAS2 で実行しようとするとやけに時間がかかる。SDPA のコマンドを入力してから終了まで 6 秒近くかかるのに、SDPA 本体の時間は 0.3 秒程度。時間に余裕ができたら、ATLAS でも実行してみて、どうなっているのかを確認してみよう。

今日の作業内容: Python 勉強 4h + 問題生成 2h
今日のBGM: FF12 OST [1-4]
今日のランチ: 信濃 親子丼とうどんのセット
明日の予測作業時間: 6h

2009年12月7日月曜日

ATLAS と rpath

ATLAS で shared libs を作ったあとに、shared libs を別のディレクトリに移動するとコンパイルは通るけど実行できなくなることがある。これは、static libs が rpath として shared libs の場所を覚えているためである。

このことに気がつくのに、4時間ぐらい時間を費してしまった。その間に ATLAS を5回ぐらいコンパイルしてしまった。あと、自分のところの CPU はちょっと古いのか(AMD Athlon64 3700+)、ATLAS 3.9.4 ぐらいのバージョンでないとコンパイルに失敗してしまう。

ということで、今日は ATLAS な一日だった。明日こそは、python を勉強しよう。

今日の作業内容: ATLAS コンパイル 4h + lapack などもコンパイル 1h
今日の BGM: FF6 OST [1-3]
今日のランチ: 久絵 煮魚定食
明日の予測作業時間: 6h

2009年12月6日日曜日

CVXOPT を Vine にインストール

今日は試行錯誤の末、なんとか Vine に CVXOPT をインストール。
インストールするものは、python 2.6.2, lapack, atlas, cvxopt の順番。

python をインストールする前には、readline-devel を apt-get しておくと、python インタープリタでの行編集が可能になる。あと、make する前に
$ export LANG=jp_JP.UTF-8
をしておくと、途中でストップする現象が回避できる。

また、atlas, lapack はそれぞれ shared libs にする必要があって、これらを自動的に読み込む必要がある。これは、~/.bashrc に

export LD_PRELOAD=$HOME/lapack/lib/libatlas.so:$LD_PRELOAD
export LD_PRELOAD=$HOME/lapack/lib/libcblas.so:$LD_PRELOAD
export LD_PRELOAD=$HOME/lapack/lib/libf77blas.so:$LD_PRELOAD
export LD_PRELOAD=$HOME/lapack/lib/liblapack.so:$LD_PRELOAD

のようにしておく。
これらを踏まえた上で、CVXOPT の setup.py の atlas, lapack の部分を修正(特に 'blas' を 'atlas' にする必要あり。) で
$ python setup.py install
でOKになる。

いちおう、python を起動して、
>>> import cvxopt
>>> dir(cvxopt)
で cvxopt パッケージにどのようなものが入っているか確認できれば、インストール終了。
明日は、python での C 言語へのリンクをチェックしよう。


今日の作業内容: CVXOPT インストール 5h + DONLP2 論文チェック 1h
今日のBGM: FF5 OST [1-2], かぜよみ
明日の予測作業時間: 3h

2009年12月4日金曜日

DSDP のモジュール

今日は、こまごまとしたことがあって、あまり時間が取れなかったが、CVXOPT のユーザマニュアルをチェックしてみた。そのあとで、ソースを見ていて気がついたが、DSDP用のインターフェースがあり、これを見るのが良さそうだ。頑張れば、python 用の SDPA インターフェースが作れるかもしれない。

今日の作業内容: CVXOPT チェック 2h + 論文校正 1h
今日のBGM: アルジュナ OST [1]
今日のランチ: らく 刺身定食
明日の作業時間予測: 5h

2009年12月3日木曜日

CVXOPT の勉強

今日は、細切れの時間しか取れなかったので、DONLP2の論文チェックは明日に回して、CVXOPT の勉強を先に進めた。

Python で sparse matrix を扱うには、numpy や pysparse など色んなパッケージを勉強する必要があって、それに手間取っていたが、CVXOPT にも既に sparse matrix の扱いや、dense matrix へのlapack, blas があって、そちらをとりあえずは使うことにしてみる。もし性能面で満足できなければ、また考える必要があるけど、なんとかなるような気もしている。
明日は、CVXOPT のユーザーマニュアルに目を通そう


ちなみに、CVXOPT の Conic Programming のところは計算式がまとまっていて、
こちらの PDF を読むとよくわかる。


あと、メモ情報。Optimization Online の論文に Nonlinear Programming の歴史みたいなものが載っていて、これまでどういった手法があったかをまとめたものが、最近出てきた。
リンクとしては、こちらの PDF
これも時間があったら読んでみたい。

今日の作業内容: CVXOPT 2h
今日のBGM: 聖剣伝説4 OST [1]
今日のランチ: 味庵 五目あんかけ焼きそば
明日の予測作業時間: 3h

2009年12月2日水曜日

DONLP2 と CVXOPT

今日は、DONLP2 の論文をチェック。User's guide にもあるとおり、元になっているのは、

An SQP method for general nonlinear programs using only eqaulity constrained subproblems, Mathetical Programming, 82(3), 1998

ただ、この論文、英語のコンマが足りなくて、ちょっと読みづらい。あと、SQP については解かっているものとして書いているので、その知識を持ってくることも必要なようだ。

あと、CVXOPT は atlas にリンクしていなかったので、atlas にリンクしようとしたら、dgemv_ が見つからない、などのエラーが出るようになった。とりあえずどうなっているかを見ているだけなので、libblas.so を呼び出すので OK にしておこうかと思う。pysparse については、コンパイルするのに libg2c.a が必要で、これのために
#rpm -ql compat-gcc-34-g77
を行った上で、setup.pyの最初のあたりを
library_dirs_list= ['/usr/lib64','/usr/lib/gcc/x86_64-redhat-linux/3.4.6']
に変更する必要があった。いまのところ動いてはいるようだ。

明日は、DONLP2 の論文の続きと、CVXOPT の中身のチェックになる。
明日はあまり時間が取れないので、優先順位としては DONLP2 から。

今日の作業内容: DONLP2 論文チェック 3h + CVXOPT インストール関係 3h
今日のBGM: Romancing Saga 3 OST [1-3], 聖剣伝説 LOM OST [1-2]
今日のランチ: つかさ かんぱち唐揚げ
明日の予測作業時間: 2h

2009年12月1日火曜日

CVXOPT インストール

今日は、python の勉強を兼ねて CVXOPT のインストール。

CVXOPT はインターフェースがいろいろとあって、python だけでなく、OpenOffice のインターフェースまである。とりあえず、python から C の関数をどう呼び出しているかを確認中。

Matlab の C を呼ぶところは mex で、これと比較すると python は C を呼ぶのがかなり難しい。いろいろと覚えないといけないことが山のようにある。果たして、どこまで勉強したものか。

そういえば、今日は DONLP2 のアルゴリズムをチェックしてなかったので、明日チェックしよう。

今日の作業時間: CVXOPT チェック 3h
今日のBGM: なし
今日のランチ: シッダルータ ヒヨコマメとチキンのカレー
明日の予測作業時間: 6h