2009年10月31日土曜日

Reproducing Kernel Hilbert Space の続き

今日のうちに SDPA の論文の4章のコメントは反映済み。これを月曜日にダブルチェックしよう。

それ以外に Reproducing Kernel Hilbert Space の PDF ファイルをチェックしてみた。ところが、この PDF はなんかの授業の下書きだったらしく、途中までしか記述がなかった。あと、すこしずつ誤植があった。ただ、参考文献のところに、Reproducing Kernel Hilbert Space の理論展開の survey に近いものを発見。明日は、これを読んで、SDP と関係があるのか、今している計算と同じ内容が既にないのかどうかを確認することにしよう。

そうそう、この survey (たぶん survey だと思うが、厳密には違うかもしれない)は、JSTOR ので PDF になっていた。JSTOR は昔の論文を PDF にしてくれていて、この論文も 1950 年のもので、こういったのを自宅から簡単に PDF で見ることができるのが素晴らしい。そのうちに、電子書籍リーダーとかで PDF が読めるようになると、さらに画期的だ。

今日の作業時間: 3h(SDPA 論文修正 1.5h + RKHS の下調べ 1.5h)
今日のBGM: NOIR OST [1-2], アルジュナ OST [1]
今日のランチ:ホァングン 鶏のからあげレモンソース
明日の予測作業時間: 6h

2009年10月30日金曜日

再生核ヒルベルト空間

今日は、SDPA の論文の考察のベースをもらったので、明日のうちに論文に反映させよう

今日は SVM の本に目を通していたが、途中で「再生核ヒルベルト空間」なるものを発見。英語では、Reproducing Kernel Hilbert Space というらしい。
ということで、今日は、いつにも増してマイナーなネタを搭載。

どうやら、再生核ヒルベルト空間はヒルベルト空間の一種のようである。ここでは、kernel が当然重要である。いくつか面白い点はあるが、気になったことを書いておくと

  1. Renegar の本の Hilbert 空間での内積は、実は Reproducing Kernel Hilbert Space に定義された内積に一致している。これは、偶然の一致とは思えない。
  2. kernel は量子化学の density matrix, あるいは Ground State Energy で底上げされた Hamiltonian と関係している可能性がある。(ただ、線形汎関数がなにに対応しているか、がまだ読みきれていない)
  3. L2 空間は Reproducing Kernel Hilbert Space ではない、と書かれているが、いまひとつ理由がよく解からない。たぶん、まだ定義を理解しきれていない。

内容としては、とても面白そうなので、図書館で関連図書を借りようと思ったら、すでにレンタル中だった。予約をして待つことにした。

今日のほかの仕事としては、自分自身のスペック調べ。

今日のBGM: Romancing Saga 3 OST [1-3]
今日のランチ: 日高屋 とんこつラーメン半チャーハンセット

2009年10月29日木曜日

Karmarkar 賢いなぁ

今日で、SDPA の論文は一通りチェックしたので、これで他の人の展開が出てくるまでそのまま置いておく。

少し時間ができたので、ちょっと本を見ていたら Karmarkar の内点法について書いてあるものがあって、これがなかなかに面白かったので、Karmarkar の元論文をダウンロードしてきて目を通してみた。1984 年の論文を椅子に座りながらにして手に入れられるとは、インターネットおそるべし。

Karmarkar の論文は、内点法の出発点であって、とてもよく書かれている。
その後の内点法の研究の方向性が、いかにこの論文に沿っているか、が解かる。
オリジナリティや先見性から見ても、数理計画法の論文の中ではピカイチ。

今日はとても勉強をした気分だ。
明日は、QOP と SVM の関係をもうちょっと見てみよう

今日のBGM: なし(耳を休める日のため)
今日のランチ: しなの とろろそば

2009年10月28日水曜日

4章の校正

今日は、4章の英語を校正。他にも段落の入れ換えなどを入れることで、全体をスリムアップ。
これで、考察で書くことが決まったら、考察をいれていく

あと、明日は 5.1 の校正
まだまだ、やるべきことはたくさんあるなぁ。

そういえば、この前の QOP は SVM と関係があるみたいだ。この論文が片付いたら、そちらのほうの理論もチェックしてみよう。

今日のBGM: ARIA the ANIMATION OST, ARIA the NATURAL OST, ARIA the ORIGINATION OST, ひとひら OST [1-2]
今日のランチ: 久絵 刺身漬け定食

2009年10月27日火曜日

SDPAのバイナリ配布を考えてみる

今朝、朝ごはんを食べているときに、ふと SDPA のバイナリを配布したら、もっと使ってくれる人が増えるんじゃなかろうか、と思い立った。
コンパイルに失敗した、という問い合わせがあまりないので、使っている人は自力でコンパイルできるか、あるいは使うのを止めたかのどちらかのはずで、後者は自分でコンパイルしなくてもいいなら使ってくれるかもしれない。

そこで、SDPA がライブラリとしてリンクしている lapack, blas, mumps のライセンスをチェック。
blas は性能面からいうと GotoBLAS がいいのだけれど、GotoBLAS をリンクした状態でバイナリ配布するとライセンスに引っかかるかもしれないので(一文ずつはまだ確認していないけど)、とりあえず ATLAS から確認してみた。

どうやら lapack, ATLAS, mumps の組合せなら、ライセンス表示をきちんとすることで対応できそうだ。これは、今後考えてみよう。

論文は、予定どおり3章のチェックを終了。書き直した分、すっきりとしていて、読むのに時間がかからなくなった。
これで、明日は第4章に目を通すことにしよう。

今日の他の仕事は、新しくアカウントをもらった Linux の .bashrc を調整したり、電話をかけたり、電話をかけたり、電話をかけたり、Windows Vista の設定を変更したり、そんな感じだった。

今日のBGM: Madlax OST [1-2]
今日のランチ: らく カキフライ定食

2009年10月26日月曜日

3章大幅変更

今日は、SDPAの論文の3章を大幅に変更した。
特に、3.2 については、半分以上文章を書いたので、かなり印象が変わったけど、その分ストレートな表現になった。
変なことが書いていないか、明日の午前中に、もう一度チェックすることにしよう。

今日のBGM: 30minutes night flight, FF8 OST [1-4]
今日のランチ: 2食 チキン唐揚げオーロラソース

2009年10月23日金曜日

SDPARA は一通り完成

今日、SDPARA の論文を一通りチェックしなおしたので、これで一応は完成。あとは、他の人に見てもらってのチェック。

で、SDPA の論文は Section 3 を改訂中。予想していたよりも大がかりな改訂が必要かもしれないので(ひょっとしたら8割以上かも)、どういった改訂をするか、という方向性をまずは決める必要がありそうだ。

今日のBGM: なし(耳を休めるため、と思ったら外でバンドが頑張ってた)
今日のランチ: いろは とん汁定食

2009年10月22日木曜日

GotoBLAS2

今日は、SDPAの論文の改訂の続き。とりあえず2.3は改訂終了。
明日は、中ボスの3章の改訂


あと、今日はGotoBLAS2を使ってのコンパイルにてこずった。
GotoBLAS2 とは、まったく関係ないところで。(一部関係してた)
ifort を使ってコンパイルしたので、調子に乗って MUMPS も ifort でコンパイルしようとしたら、なぜか -fPIC がうまく指定できず、Matlab の mex を作成できず。
いろいろと調べているうちに、ここで

-mcmodel medium -shared-intel

が効くらしい。(あとで、これもダメだと解かった)

と、ここまできて気がついたのだが、GotoBLAS に接続するプログラムは Matlab に接続できないことがある。Matlab の mwblas には、当然ながら goto_set_num_threads がないためで、この関数を外して、いま一度コンパイルすることになる。
そういえば、Matlab の mex から GotoBLAS を利用したときには、スレッド数はどうなるんだろう? Matlab の mwblas みたいに maxNumCompThreads が効くと便利だけど、OMP_NUM_THREADS だと Matlab を起動しなおさないといけないかもしれない。このあたりは、時間ができたときにでも、また調べてみよう。

今日のBGM: FF 7 OST [1,2,4]
今日のランチ: らく 焼魚定食

2009年10月21日水曜日

SDPAの論文のintroを変更

今日は、鼻水が止まらなくなってしまったので、QOPの予定をサスペンドしておいて、SDPAの論文のintro を優先。

とりあえず、一通りの流れを修正して、文章としてつながるように変更をした。
残りにも途中でいろいろと冗長な部分が多いので、明日はスリムアップの続きになるかと思う。

今日のBGM: NOIR OST [1-2], MADLAX OST [1-2], 30 minutes flight
今日のランチ: 角笛 ビーフシチュー

2009年10月20日火曜日

QOPとSNL

今日は、SDPARA の論文は、微調整だけで終了。
SDPARA のソースは、Change Log を作って、公開用の tar+gz にしたあと、ちゃんと make できるか確認したので、これで OK。

他の仕事をこなしたあとで、QOP,SNL について勉強。
いまひとつ解からないところがあって、「だいたいこんなことが解かるはず」というイメージを数学の言葉できちんと書き直す。これが、思っていたよりも時間がかかって、これで今日は終了。

明日は、今日定義したところで、数学的にどうなっているかを確認する。
特に、等式条件を示すときに、自明な一方向の逆方向を示すときに、これまでの内容が使えるかどうかを検討してみる。


今日のBGM: FF9 OST [1-4]
今日のランチ: 食堂 MIX セット

2009年10月19日月曜日

ラフスケッチ終了

だいたいの論文の構成が固まって、スペルチェックを行ったところまできた。
これで少しそのまま置いておいて、時間がたったところでもう一度英語を見直すことにする。

それにしても、英語を直していると、「こんな変な英語を書いたの、誰だ!!」とか思いつつ、「あ、自分だった」と気づくことが多い。

あとは、ソースのリリース用に tar+gz を作る予定。ただ、ChangeLog がなかったので、これを機に明日あたり作ってしまおうと思う。

QOP は、今日はあまり進まなかったので、明日頑張ろう。

今日のBGM: Xenosaga1 OST [1-2], 筑後川, Xenosaga 2 OST [1-2], ARIA The ORIGINATION OST
今日のランチ: お弁当 鮭おろしポン酢弁当

2009年10月16日金曜日

QOP 難しいなぁ

今日は、ひたすら QOP の計算式をひねったりもんでみたり、ばっかり。
センサーネットワークとの関係がうまくいくかとおもって、一番簡単な例をやってみるも、玉砕。

やっぱり、頭の中をスッキリさせてから計算しなおすのが、大事だ。
うんうん。

今日のBGM: FF 10 OST [1-4]
今日のランチ: いろは チキンステーキ(日替わりの肉)

2009年10月15日木曜日

あんまり進まず

今日は、ほかに色んな作業が入ってしまったため、案外進まなかった。
とほてょ。
やはり、細切れの時間を活用できるように工夫が必要かもしれない。どんな方法があるか、今度 Google 大先生に尋ねてみよう。

とりあえず、昨日の数値実験の結果は論文の表に入れておいたので、これで数値実験については自分としては確定。
あとは、最難関の英語のみ。

ほかに、QOPの話。目的関数値をそれなりに使えそうだけど、いまひとつ、細かいところは解からず。
証明が必要かも。

今日のBGM: FF9 OST [1,2,4]
今日のランチ: 味庵 海鮮焼きビーフン

2009年10月14日水曜日

とりあえず、数値実験終了

昨日の夜に仕込んでおいたジョブは、問題名をスペルミスしていたので、まったく解けていなかった。残念。
やはり、BroydenBand を BryodenBand とスペルミスしやすいので、今後気をつけていこう。

でも、とりあえず、論文に入れるべき数値実験は一通り終わったので、BroydenBand の数値結果を明日のうちに表に入れることにする。それにしても、数値実験が終わると、仕事に行く前の朝一の計算結果チェックが必要なくなるので、朝ゆっくりとできそうだ。

あと、論文本体は、下書きが終了。こちらはどんどんと英語をブラッシュアップしていくことにする
英語ミスが多いので、2ページチェックするだけで1時間ぐらいかかってしまう。英語が完成したら、あとで体裁を整えることにする。


ところで、英語で文章をかいていると、辞書のありがたみが強烈にわかる。
今のところは、LDOCE5 と OALD, OTE を併用している。理系英語はわかりやすいストレートな表現が重要なので、 シンプルな英語表現が比較的多いLDOCE5が中心になっている。これに、同じ単語が連続して言い換えたいときなどに OALD, OTE を使って言葉を探して、LDOCE5で確認している。

LDOCE5 はカラーで、表現として使うところが青い字や太い字で強調されているので、文章を書くときにはすごく便利。
ちなみに、OTE は Oxford Thesaurus of English の略で、いわゆる類語辞典のこと。LDOCE5のTheaurus は本当に意味が近い言葉しかなくバラエティが少ないので、OTEで言葉を探して LDOCE5 で確認している。

文章を書いていると、どの辞書がどういった風な特徴を持っているかも解かってきて、面白い。

今日のBGM: FF 8 OST [1-4]
今日のランチ: つかさ サーモンハラス塩焼き

2009年10月13日火曜日

まだ、数値実験終われなかった

今日で終われるかと数値実験。まだまだ終われなかった。
理由としては、SDPARA-1.0.1 が不安定な挙動を示すことにある。量子化学の問題を SDPARA-7.3.1 ほど安定して解けていない。パラメータを少し変更することで、できるだけ SDPARA-1.0.1 と SDPARA-7.3.1 の比較ができるようにする必要がある。

とりあえず、ジョブとしては投入済みなので、今夜眠っている間に進む予定である。
明日のうちに結果を確認することにしよう。

今日の作業としては、load-balance の eps を作成。dense Schur に対してのload-balance はびっくりするぐらい、いい値が出る。sparse は、やはり少し値がずれる(最大と最小の比率が2倍程度)。

論文自体は、表の見方などを追加。これで、明日、表から解かることを文章で書いていけば、数値実験の章はできあがる。(上の実験は、予備的な内容の章にあたるため)

今日のBGM: RomaSaga OST [1-3], FF 10-2 OST [1-2]
今日のランチ: らく うな重

2009年10月12日月曜日

load-balance 測定終了

今日までのところで、load-balance の測定が終了。
gnuplot で読み込める形式まで変形したので、明日のうちに eps ファイルに変換する

ちなみに、sparse Schur よりも dense Schur のときの方が load-balance がいい。

ところで、sdpa7.3.1 で BroydenBand20 を解くと、sdpara1.0.1の16台より時間がかかる。BryodenBand は 20ぐらいだと sparsity が弱いので、こういったことが起こるらしい。

とりあえず、いま行っている計算が終了したら、BryodenBand40 を sdpara1.0.1, 7.3.1(1,8), pcsdp で解いて、計算結果を確認する。

順調にいけば、明日には数値実験が終了するかもしれない。

今日のBGM: 電脳コイル OST [1-2], MADLAX OST [1-2]

2009年10月11日日曜日

JOB 追加投入

PCSDP の数値実験が今夜頃に終わる見込みになったので、別の実験のジョブをキューに追加した。
これによって、PCSDP の SNL, QC(Medium) を解いた後、PCSDPとのバランスの関係でSDPARA の一部で問題を変更したところを SDPARA で解きなおすことにしてある。

順調に進んでも、明日いっぱいはかかると思うので、とりあえず今日の午後はPCを使わずにQOPの勉強を進めようと思う。

今後の作業としては、
  1. 数値結果の表へのはめ込み
  2. ロードバランスのグラフの作成
  3. SDPARA 1.0.x の計算結果の測定

となる。よくよく考えると、数値結果を優先しているので、2,3 があまり捗っていない。とりあえず今のジョブがすべて終わったら2,3 を進めることにして、論文の文章を書き足すことにする。

今日のBGM: Sky OST [1-2]

2009年10月10日土曜日

PCSDP まだまだ続行中

今日もクラスタが頑張ってくれて、計算を続行中。
PCSDPの出力結果をまとめる Python スクリプトを書いたので、結果がとても見やすくなった。

Python は結果ファイルの整理などの文字列処理に圧倒的に役に立つので、コンピュータで数値計算をする人はできるだけ覚えたほうがいいと思う。Python でなくても Perl や Ruby でもいいけど、Python, Perl, Ruby のなかでひとつだけ覚えるのであるなら、一番簡単に覚えられる Python がおすすめ。今は、TeX のスタイルで計算結果をまとめて表示するようにしている。

これでいままでの計算時間を測定すると PCSDP に 21 万秒程度、SDPARA に 46 万秒程度かかっていて(SDPARAはスレッド数も変更して実行を繰り返しているので、余計に時間がかかる)、合計でざっと 69 万秒。一日が 8 万 6400 秒なので、記録に残っているだけでも 8 日程度。

並列計算のプログラムは台数を変更しながら実験していくので、並列でないプログラムの動作確認の何倍も時間がかかる。ここで時間がかかる分、出来上がるソフトウェアが時間短縮をしてくれる(ことになっている)。

ただし、実際にはデバッグから予備実験などを含めると、クラスタを 20 日程度はフルに実行している。そろそろ休憩を入れないと、クラスタが消耗してしまうような気がしてきた。
でも、まだロードバランスを記録するための実験なども必要で、クラスタのお休みはもうちょっと先になりそうだ。

2009年10月9日金曜日

PCSDP 続行中

PCSDP の計算がまだまだ続行中。
ただ、PCSDP は1台になったときに挙動が不安定で、かなり遅くなる。例えば、2台の計算のだいたい2倍以下に SDPARA ならなるが PCSDP は 5 倍とかになったりする。
スケーラビリティの計算のときに注意が必要そうだ。

今日は、他にQOPの勉強。
論文チェックすると、今まで気がつかなかったことがわかってくる。

今日のBGM: FF12 OST [1-4]
今日のランチ: いろは 日替わりのお肉 [豚串カツ]


追記 23:13
コンパイルのときに ScaLAPACK のブロック数を決められるようにした。具体的には
-DSCALAPACK_BLOCK=192
を mpicxx の オプションにくっつけると 192 になる。
(実際には、sdpa_mpist.cpp の mb2 に代入するようになっている。)
ただ、これは MUMPS からの呼び出しには対応していない。

2009年10月8日木曜日

PCSDPで数値実験

昨日のPOP,SNLは今日のうちに表にいれておいた。

ただ、いくつか今後の課題も解かってくる。
  • Thread が複数になるとメモリバンド幅を使い果たして conflict する
  • このときに数値誤差が起こりやすい
  • POPの一部は、8threadになったときに、同じコマンドでも解けるときと解けないときが何故かあるので、計算機の状態を確認して、もう一度解き直す必要がある
  • Schur complement が単純過ぎると、複数台で解くと逆に遅くなる
とりあえず、現在は PCSDP で数値実験を行っている。PCSDP は、dense しかないので、scalability がだいたい把握できるので、計算時間の見積りができるので、精神的にはらくちん。(時間はかかるけど。)

今日のBGM: EVA OST 1
今日のランチ: 四川弁当(青椒肉糸)

2009年10月7日水曜日

英語の校正

今日は、とりあえずここまで書いた内容の英語を校正。
最初に書いたことは、何を書きたいかが中心で文法などに誤りが多いので、それをことごとく修正するのだが、1ページあたり10箇所以上もあり、これが結構手間だったりもする。

そうこうしている間に、POP の問題はほぼ解き終わり。これを明日のうちに論文の計算結果の表にはめこむ。今夜のうちに SNL の問題が進む予定。


別途、SDPARA とは関係ないところで、QOP の話もある。こっちは、理論的な枠組が中心になるっぽいけど、どうなるかはまだよくわからない。ただ、〆切は2ヶ月後とか設定されている。

今日のBGM: EVA OST [1-3]
今日のランチ: 角笛 すき焼き風煮

2009年10月6日火曜日

数値実験、まだまだ続く

量子化学の問題は、小さいのが今日の午前中に解けた。
大きいのは時間がかかることがわかりきっているので、後回しにして、論文を校正しているときに解くことにしよう。

他にする作業としては、
  1. SDPARA1.0.x で問題をいくつか解いて比較用の表に入れる
  2. ロードバランスのグラフがまだできていないので、これを完成させる
これらの作業は、とりあえず多項式問題のものが終わったところで行う予定。いまは多項式問題のものが、あと2,3日かかりそうなので、論文をすこしずつ直していく。

今日のBGM: CHRONO TRIGGER OST[1-3], 聖剣伝説 LOM OST[1-2]
今日のランチ: つかさ 生サーモン照り焼き

2009年10月5日月曜日

数値実験途中

量子化学の SDP は、やっぱり大きいので、時間がかかる。
しかも、multi-thread が効く分、Nodes x Threads で実験をしているので、余計に時間がかかる。

ところで、max-cut タイプの問題だが、Threads にしても効果がないと思っていたが、GotoBLAS の高速化が想像してたよりも抜群で、それなりに効果が出ることが解かった。ただ、MPI-based の並列化はそれほどでもない。


論文本体は、数値計算を入れる表を作成したところ。これで、あとどれだけ数値計算をしないといけないかが視覚的に解かるようになってきた。(要するに、穴埋め方式になった。)

これで、数値実験が終わったところから、どんどんと表を埋めていって、空き時間でロードバランスのグラフを作成しようと思う。

今日のBGM: Madlax OST[1-2]
今日のランチ: らく 焼魚定食

2009年10月2日金曜日

本格的に数値実験スタート

一通りバグなども取りきれたようなので、ここから論文のための数値実験をスタート。

Nodes 数 x Thread 数で何回も解いていくことになるので、だいぶ時間がかかるかもしれないけど、とりあえず土日をつかってどこまで進むかで、その後を考えることにする。
(Thread 数は論文の表の大きさなどを考えると間引いた方がいいかもしれないなぁ)

あと、diamond_patch は MPI による高速化はないけど、GotoBLAS による高速化(Thread数のみに依存) は効果が出る。
そうそう、BroydenBand が大きくなったときに 1 台だと解けなくなっていたのは、やはりメモリオーバーになっていた。4 台のときと比較して、4倍以上かかって解いているときには、メモリのスワップを使って解いているようなので、とりあえず計算結果は使えるけど、計算時間としてはあまり使えない。



これに並行して、論文用の図を作成中。
これが終わったら、数値結果を当て込むための Table を作成。
Table ができあがるのと、数値実験が終わるのだと、どっちが先になるんだろうか?

今日のBGM: FF 5 OST[1-2], Romancing Saga3 OST[1-3], Xenosaga1 OST[1-2]
今日のランチ: 味庵 炸醤麺

2009年10月1日木曜日

BryodenBand 続行中2

今日もクラスタが頑張って BryodenBand を解いてくれている。
そろそろ 1 台で解くのが難しくなってきたみたいですが、本当にダメなのか、単なるバグなのか、あとでチェックする必要があり。(1Node,1Thread だとダメなのに、1Node,8Threadsだと解けるときがあるため)

論文本体は、今日は別の書類をさくさくと書いていたためお休み。


ところで、主双対内点法では、mu=0を達成すると終了するが、これって mu=0 にする必要があるんだろうか?理論的にはあるんだけど、コンピュータのソフトウェアとしては mu=1.0e-12ぐらいで終了している。この性質を使うと、もうちょっと違ったことが解かるかも。

今日のBGM: FF 6 OST[1-3]
今日のランチ: いろは まぐろ山掛け丼