2009年12月28日月曜日

今日で仕事納め

今日で2009年も仕事納め。
ということで、今日はそれほど急がずにゆっくりと作業をした。
あと、SNL の計算は、やはり理由がいまひとつ解からないので、これは越年で頑張ろうと思う。

あと、CUDA のOpenGL を使っているサンプルプログラムは、ssh 経由だとやはり失敗する。
$ glxinfo grep rendering
とすると、
direct rendering: No
となって表示できないことがわかる。本体に直結しているディスプレイなら表示できるが、起動時にディスプレイに接続してディスプレイに電源を入れておかないと、ディスプレイをきちんと認識できないようで、この場合は本体直結のディスプレイでも失敗する。
結局、ディスプレイの電源を入れて reboot したら direct rendering: Yes となって、ディスプレイには表示できるようになった。


今日の作業内容: SNL 計算 3h + CUDA 下調べ 2h
今日のBGM: Romancing Saga3 OST [1-3], 小松未歩 [7,8]
今日のランチ: 味庵 酢豚
明日の予測作業時間: ??
来年の予測作業時間: すごくたくさん


今日は仕事納めなので、もう少し書いておく。

今年のお仕事は、当初予定に比べると 80% 程度の進行状況だったかと思う。
論文のひとつが思いっきり時間がかかってしまい、もうひとつの論文も遅れることになってしまった。
やはり、仕事は〆切を決めて、それから逆算するスケジュールを確立しないといけない。
特に並列計算は数値実験に時間がかかるので、このあたりは注意したい。
ただ、論文については、共著が思っていたよりも多くなったので、それは良かった、と思う。
来年は 1st author の論文を増やせるように頑張ろう。

仕事内容としては、この年末でかなり大き目の区切りとなるので、今後どうするかもそろそろ考えたいところ。
ぼちぼち相対性理論のほうの面白そうな枠組みを本格的に取り組んでみたい気もするけど、いきなり大掛かりにはできないので、小さいところからスタートしてみようと思う。

2009年は思っていた以上に楽しかった。2010年は、もっと楽しくしようと思う。

2009年12月26日土曜日

SNL の計算

今日は、SNL の計算のプログラムを確認。
いくつかの条件があるときに、SDP で解くとSNLの唯一の解になる、という定理があって、それを確認している。
条件には大きく分けて2段階あって、2段階目が正しく動作していることは確認できているのだが、なぜか唯一の解のところに一致しない。
やはり、1段階目を確認しなおさないとダメなようだ。検算用には、計算時間がかかっても今までと違ったアルゴリズムで確認したいので、どういったアルゴリズムがあるかを確認したいところだ。
まぁ、5頂点+4センサーなので、人間が頑張れば何とかなる範囲かもしれない。

今日の作業内容: SNL の確認 5h
今日のBGM: かぜよみ, マクロス V-Col [2]
明日の予測作業時間: 3h

2009年12月25日金曜日

CUDA インストール

昨日きた計算機は、Quadro FX 1800 を2枚刺しているので、CUDA を実行できる。
そこで、とりあえず CUDA をインストールしてみた。
デバイスが見つからない、というエラーメッセージが出て苦労したが、どうやら Xorg が起動していないとダメなようだ。(init 3 で起動していたので、Xorg が起動していなかった。)
とりあえず Bandwidth を調べてみたところ、以下のような数字になった。


Running on......
device 0:Quadro FX 1800
Quick Mode
Host to Device Bandwidth for Pageable memory
.
Transfer Size (Bytes) Bandwidth(MB/s)
33554432 2849.8

Quick Mode
Device to Host Bandwidth for Pageable memory
.
Transfer Size (Bytes) Bandwidth(MB/s)
33554432 2406.6

Quick Mode
Device to Device Bandwidth
.
Transfer Size (Bytes) Bandwidth(MB/s)
33554432 29831.5

&&&& Test PASSED

Press ENTER to exit...

あと、動的計画法を CUDA で解いている文献を見つけたので、それも参考にしようと思う。
あ、今日は DONLP2 をするはずだったのに。ちょっと寄り道してしまった。
明日は、DONLP2 を頑張ろう。

今日の作業内容: CUDA 3h + その他 4h
今日のBGM: マクロスF OST [1-2], ARIA OST [1-3]
今日のランチ: たちばな ちらし
明日の予測作業時間: 5h

2009年12月24日木曜日

計算機の設定

今日は、新しい計算機の設定で一日を使った。

OSは RHEL 5.4 で、追加したソフト類は
EPEL (Extra Packages for Enterprise Linux)
git
mpich2
gcc44
python2.5

特に、EPEL をインストールしておくと、git,mpich2,gcc44 などが yum 経由でインストールできるので、とても便利である。
あと、python2.5 については、
こちらのページ
を参考にしてインストールした。

ほぼ一通りのことはできるようになったので、設定はこれでOKかと思う。
明日は、先送りになっていた DONLP2 の論文のチェック。だいぶ先送りになっていたので、最初から読み直したほうが効率的かもしれない。

今日の作業内容: 計算機の設定 3h + その他 3h
今日のBGM: マクロスF OST [1-2], FF12 OST [1]
今日のランチ: シッダルータ ほうれんそうとチキンのカレー
明日の予測作業時間: 6h

2009年12月22日火曜日

事務処理な一日

今日は、予想外にも事務処理だけで一日終了。
廃棄するもののリストづくりや、こまごまとしたものを行っている間に、あっというまに終わってしまった。


今日の作業内容: 事務処理 2h + その他 4h
今日のBGM: なし
今日のランチ: 双葉屋 開花丼
明日の予測作業時間: 6h

2009年12月21日月曜日

SDPA-Python Interface on Mac OS X

今日は、Linux で確認してあった SDPA-Python Interface がきちんと Mac OS X 上でも動くかどうかを確認。
Mac OS X の場合、shared library が Linux とは少し違うので、コンパイラオプションなどを変更する必要がある。

まず、コンパイルするときに、gcc に
Linux なら -shared をつけるが、Mac OS X の場合には -dynamic が基本。
ただし、Python が絡むと、これではうまくいかず、-undefined dynamic_lookup -bundle をつけることになる。(参考にしたのは、このページ
面倒なので、Makefile に以下のような記述を追加。

SHARED_OPTION = -shared
ifeq ($(OS),Darwin)
SHARED_OPTION = -undefined dynamic_lookup -bundle
endif
これで、gcc $(SHARED_OPTION) とすれば、大丈夫。

あと、Matlab の mex で気がついたが、mex で CXX=g++-4 を渡すと、libgfortran.a の場所を自動的には発見できない。-L/sw/lib/gcc4.3/lib などで明示的に渡す必要がある。

ほかに、Linux でどの shared library を使っているかは、
$ ldd ???.so
であるが、Mac OS X では、ldd がないので、
$ otool -L ???.so
で対応する。なお、Mac OS X の shared library の拡張子は本来 dylib であるが、python の場合は so でも正常に動作する。(というか、dylib の方を試していない。)


とりあえず、Mac OS X でも Python Interface で問題を解くことに成功。

あと、投稿用の文章は、一通り英語の校正が終了。数値実験は、残りは PCSDP のみ。おそらく、PCSDP の実験は SDPARA の実行時間から予測すると、年をまたぎそうだ。

明日はすこし時間ができそうなので、久しぶりに DONLP2 の方をチェックしよう。

今日の作業内容: 投稿用文章 1h + Python 4h
今日のBGM: FF12 OST [1,2,4]
今日のランチ: らく 焼魚定食
明日の予測作業時間: 5h

2009年12月18日金曜日

英語の勉強

今日は、業者さんに添削してもらった英語をチェック。さすがにネイティブにチェックしてもらうと、英語がきちんとする。ここで、英語がどう変わったかを見ることで、今後の自分の英語にも反映していこう。(英語の文章には、まだまだ改善の余地があるため。)

投稿用の文章は、ある程度のラフスケッチは終了。これで数値実験結果を待って、文章をアップデートしていけばOKなはず。PCクラスタのスピードによっては、正月に入る前に終われるかもしれない。

今日の作業内容: 英語チェック 2h + 投稿用文章 2h
今日のBGM: NOIR OST [1-2], MADLAX OST [1-2]
今日のランチ: つかさ サワラ西京焼き
明日の予測作業時間: 4h

2009年12月17日木曜日

メガネの歌のうまい学生

昨日、またもやGotoBLASについてコメントをいただいたので、「メガネの歌のうまい学生」に連絡を取ってみようと思ったところ、予想外にもメールアドレスをまだ入手していなかったことに気づいた。
すでに教えてもらってあると勘違いしていた。うっかり。

ということで、他の人にメールアドレスを教えてもらうか、Blog 経由で連絡にするか、それとも mixi 経由にするか、であるが、どれが一番面白いだろうか、を現在検討中。

ところで、投稿用の文章は今日も1ページ程度進んだ。そろそろ数値実験結果が入ってこないと文章が組み立てづらくなってきたので、数値実験もあわせて進めていきたい

今日の作業内容:投稿用準備 4h
今日のBGM: SKY OST [1-2], DewPrism OST [1-2]
今日のランチ: シッダルータ ほうれんそうとチキンのカレー
明日の予測作業時間: 5h

2009年12月16日水曜日

投稿用、まだまだ続く

今日はさらに1ページ追加して、図などを追加。あと、参考文献も追加したけど、こちらはフォーマットが違うので、明日調整する必要あり

数値実験も準備段階は終わりつつあって、どれくらいのサイズの問題を解けばいいのか解かってきたので、それを使って実験をスタートしようと思う。

今日の作業内容: 論文作成 4h
今日のBGM: MADLAX OST [1-2], FF6 OST [1,2]
今日のランチ: らく 焼魚定食
明日の予測作業時間: 4h

2009年12月15日火曜日

投稿用の続き

今日は投稿用の文章の続き。1ページ分追加。ただ、今のペースで書いていくと、6ページ持たないかもしれない。自分のやったところをバランスよく増やして、6ページになるようにペース配分をしたい。明日は、できればもう1ページ追加しておきたい。

これと並行して数値実験。制御の問題で、特定のサイズで乱数で発生させている問題が pdINF でうまく解けていなかったが、初期点のパラメータを変更したところ、それなりに解けるようになった。どうやら中心パスから、かなり遠いところでスタートしていたようだ。

あと、昨日いただいたコメントに基づいて GotoBLAS2 の起動にかかる時間をチェック。Makefile.rule で、一度
NO_WARMUP = 1
を設定したが、これでは変わらず。make clean をしたかどうか覚えていないので、いっそのこと tar+gz を展開するところからやり直し。これで起動にかかる時間が正常になった。
ところで、このWARMUP って何だろう?今度時間があるときに何をしていて、それでどうして遅くなっていたのかを調べることにしよう。


今日の作業内容: 投稿用続き 4h + 論文対応 1h
今日のBGM: FF10 OST[1,2,4]
今日のランチ: しばた さけいくら丼
明日の予測作業時間: 4h

2009年12月14日月曜日

投稿用の文章の作成

今日は、1月〆切の投稿用の文章の作成。6ページ or 8ページのあまり長くない文章ではあるけど、正月をはさむことを考えるとあまり時間に余裕がないので、とりあえず書きはじめ。ただ、今日は英語の細かいところを気にせずにラフに書いて1ページ分しか進まなかった。思っていたよりも時間がかかりそうなので、これを早めに進めることにしよう

これにあわせて行っている数値実験だけど、SDP の問題生成ルーチンが乱数で生成している関係で、変なサイズだと pdINF で終わってしまうことがある。まずは、別の乱数で生成しなおしている。

あと、別に投稿していた論文の refree からのコメントへの対応策を考え中。こっちは、調べれば調べるほど深みにはまりそうな展開で、さらっと流すほうがいいのかもしれない。

ところで、今日、このブログに初めてコメントがついた。どうやら、このブログにもコメントをつける機能があったらしい。初めて知った。GotoBLAS のコンパイルに関する内容で、かなり細かいところを教えてもらったので、明日以降文章を書くのと並行してコンパイルしてみようと思う。

今日の作業内容: 文章作成 3h + 論文対応 1h
今日のBGM: MADLAX OST [1-2]
今日のランチ: 信華園 鶏肉両面焼きそば
明日の予測作業時間: 4h

2009年12月11日金曜日

SDPA-Python Interface を実装

昨日からの続きの SDPA-Python Interface だが、今日のあまりある時間をフルに投入して、ファイル書き込みと sedumiwrap を実装した。これにより、例えば control7.dat-s などは、

import sdpap;
At,b,c,K,blockStruct = sdpap.fromsdpa('control7.dat-s');
x,y,info = sdpap.sedumiwrap(At,b,c,K);

のように sedumi っぽく書くことができる。もちろん、中身で動くのは SDPA のアルゴリズムそのもので、インターフェースだけが変わっていることになる。(SDPA の callable library にリンクしている。)
とりあえず自分のところではコンパイルできるようになったので、ほかのところ(Macなども)でもできるのか、確認してみたいところだ。

あと、SIAM Review の最新号が到着。 Lassere の論文が、この前投稿した論文に似たようなタイトルだったので、ちょっと焦ったが、内容はかなりちがかったので、ほっと一安心。

今日は、あとは SDPA7 の論文の変更すべき点の確認と、他の論文のフォーマットの確認。
明日は午前中に論文構成を練ることにして、午後に SDPA7 の論文をチェックしよう。

今日の作業内容: Python 実装 5h + 論文確認 1h + フォーマット確認 1h
今日のBGM: FF12 OST [1-4]
今日のランチ: いろは チキンステーキ
明日の予測作業時間: 6h

2009年12月10日木曜日

Python で SDP を標準形に

今朝はうっかり2度寝をしてしまい、1時間ぐらいのロス。

今日は Python の続きで、SDPA sparse format のファイル出力に先立って、標準形に変更する (free 変数をふたつの非負変数にする) ところを書いた。ある程度 Matlab に近い形で書けるので、かなり便利だ。

あと、Python で型を調べるときには、type などもあるが、どうやら isinstance を使うのがいいようだ。type だと自分で作った class の instance を、class との名前で判断できないときがある。

たとえば、
def myclass(object):
  クラスの中身
であるときに、
>>> myclassI = myclass();
とすると、
type(myclassI) is myclass
は False になるが
isinstance(myclassI,myclass)
は True になる。

明日は、ファイル出力関数を C/API で書く。
また、SDPA の論文についても修正点を整理しないと。

今日の作業内容: Python 3h + その他 1h
今日の BGM: Chrono Trigger OST [1-3]
今日のランチ: シッダルータ チキンとひよこ豆のカレー
明日の予測作業時間: 6h

2009年12月9日水曜日

Python で fromsdpa

今日は、SDPA フォーマットからファイルを読み込む fromsdpa() を作成。ざっと 400 行ぐらいのコードでできた。アルゴリズムは mex と同じで済むのが有り難い。

ただ、まだ Python になれていないので、変なバグに遭遇すると時間がかかる。今日も、help(sdpa) としたら、「配列の要素が越えてるぞ!」という意味不明のバグに遭遇し、30分消費。結局、pythonを起動しなおしたら、バグが取れた。いまひとつ謎。

あとは、SDPARA の数値実験開始。思っていたよりも数値精度がでないときがあるので、明日結果を見て判断しよう。制御の問題を生成するプログラムも作ったし、これの結果も確認していきたい。

SDPA の論文は、まだまだ英語がこなれていないので、英語を頑張ろうと思う。英語は、単語の微妙なニュアンスが難しいけど、そこが頑張りどころ。

今日の作業内容: python 5h + SDPARA 数値実験 1h + SDPA 論文 1h
今日のBGM: EVA OST [1-3]
今日のランチ: 味庵 回鍋肉
明日の予測作業時間: 3h

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