2011年7月11日月曜日

maximal cliques の clique 同士は勝手には merge できない

SDP を細かい対角ブロックに変換するときに、 chordal graph を用いて maximal cliques を生成し、この cliques を用いて変換する方法がある。
このときに、clique があまりに細かく分類されたときには、clique tree に従って clique 同士を merge する。つまり、clique tree で隣同士の clique が merge される。

ここで、隣同士ではない clique を merge するとどうなるか調べてみたが、この場合はうまく変換できないことがわかった。
たとえば、cliques が {1,2},{2,3},{3,4},{4,5},{5,6} となっているとき、これらを順につなぐと clique tree が作れるし、これらは maximal cliques になっている。
このときに、{1,2},{5,6} を {1,2,5,6} に merge すると、maximal cliques でなくなってしまう。
(2,3,4,5 が 4 の長さの cycle になってしまうため)

ちなみに、clique  を merge できる簡単な場合は
(1) clique tree で隣同士
(2) clique tree で間にひとつだけ clique がある同士
であるが、他にもいろいろな条件で merge できる場合がある。

今日の作業内容:clique の性質調べ 4h + trilateration 1h
今日のランチ:らく マグロのづけ丼
明日の予測作業時間:5h

2011年7月8日金曜日

OpenMPI と libtool

SDPARA を実験用にコンパイルし直しているが、まだうまくいっていない点がある。

まず、intel コンパイラと gcc コンパイラがあるときには intel コンパイラのほうが性能が出やすいので intel コンパイラでコンパイルするが、intel コンパイラだと動作が不安定になることがある。(データの転送に時間がかかったりする。)
このときには gcc で統一してコンパイルを行うのが安全策だが、intel コンパイラのライブラリが ldconfig で登録されていると、gcc と intel が混在してより不安定になる。
このことは、例えば
$ ldd sdpara
とするとわかる。
ldconfig に登録されているものは
$ /sbin/ldconfig -p
で出力される。

ldconfig はルート権限がないと修正できないので、LD_LIBRARY_PATH で対応することになる。
ただし、OpenMPI の中に含まれている libtool のスクリプトは ldconfig の情報を利用してしまうので、注意が必要である。

OpenMPI の場合の作業は、
1. configure を実行
2. grep で ldconfig から持ってきたパスの部分を削除 。libtool, config.h などの複数ファイル,ディレクトリにあるので注意。
$ grep -r -l (ldconfigのパスで不要なところ) *
として探す。
3. make
4. grep でもう一度確認してバイナリファイルに含まれていないかをみる
5. make install
6. LD_LIBRARY_PATH を設定
となる。

あと、OpenMPI で infiniband, Ethernet が両方ついているときには、
$ mpirun  --mca btl ^openib --mca btl_tcp_if_include eth0
とすると、Ethernet を明示的に設定できる。
また、
$ mpirun -np 2 ./cpi.exe
で gdb をかけるのであれば、
$ gdb mpirun --eval-command="run -np 2 ./cpi.exe"
とすれば可能であり、valgrind なら
$ mpirun -np 2 valgrind ./cpi.exe
である。


ここまでいろいろと調べてみたが、Sparse Cholesky factorization の解析のときに pthread がセグメンテーションフォルトを起こしてしまう。
valgrind で調べると、OpenMPI 1.5.3 はかなりメモリーリークを起こしているようなので、あとで OpenMPI 1.4 系列の stable 版に切り替えてみることとする。

今日の作業内容:SDPARAコンパイル 5h
今日のランチ:信華園 レバー野菜炒め
明日の予測作業時間:5h

2011年7月7日木曜日

uninterruptible sleep

SDPARA の数値実験を夜に行うために、昼間のうちにコンパイルと小さい問題での動作確認をしているが、このときに SDPARA のプロセスが uninterruptible sleep で残ってしまうことがわかった。
通常のプロセスだと kill -KILL で強制終了できるが、この状態におちいると kill -KILL も無視してのこってしまうようで、OSを再起動させるしかないようである。

今日の作業内容:CV作成 2h + uninterruptible sleep の解除方法があるか確認 3h
今日のランチ:シッダルータ ベジタブルカレー
明日の予測作業時間:3h

2011年7月6日水曜日

SDPARA の実験、なんとかできそう

電力関係でできるかどうかわからなかったSDPARAの実験だが、いろいろと配慮してもらったおかげで、できるようになった。
電力が集中する昼間を避けるために夜に実験することになるが、配慮してもらった分もあるので、できるだけ手早く片付けてしまいたいところだ。

あとは、SNLの計算について。
gradient method のところで、一部を修正すると違った用途に使えるのでその修正をしようと思うが、この部分は自分で書いたわけではないので、まずはどのようにプログラムが書かれているかを見ることにする。

今日の作業内容:SDPARA の実験の準備 2h  + SNL の計算関係 3h
今日のランチ:たちばな あじのお寿司
明日の予測作業時間:4h

2011年7月5日火曜日

SDPARA の実験結果の整理

論文のために、この前の小さいクラスタでの実験結果を整理している。
それぞれのスレッドで、それぞれの反復での計算時間を 3次元プロットしようとしたが、こういったものは Excel だとプロットできないようで、Matlab の plot3 を使ってプロットした。
また、単色だとデータを見づらいので colormap を使うことで色を段階的に変化するようにもしている。

整理してみると、やはり大きなクラスタとは違った動きをすることがあり、この変化が起こる理由を調べる必要がありそうだ。
ただ、電力の抑制が始まっている関係で、クラスタをいつ利用できるかわからないので、そのあたりも検討が必要である。
SDPARA の校正は、この小さいクラスタを除いてはほぼ終わっているので、このクラスタに電力を回してもらうようにお願いして先に片付けてしまうのもいいのかもしれない。

今日の作業内容:SDPARA 校正 2h + CV 更新 1h + SNL 計算 2h
今日のランチ:角笛 トマトソースチキン
明日の予測作業時間:4h

2011年7月4日月曜日

Google で英語表現の検索

Google のワイルドカードなどを使うと英語表現の検索に利用できる。
たとえば、confidence などがどう使われているかは

"we have confidence *"

のように検索できる。
他にも

"we have confidence *" site:springer.com

とすると、springer の検索結果に絞り込めるので、論文やアブストラクトに載っているものがヒットしやすい。(ただし、springer のサイトは同じ情報が複数個所のっていることがあるので、そのあたりをうまく見極める必要あり)

あと、google fight を利用すると、たとえば
"occupy most computation time" と "consume most computation time" のどちらがよく利用されているか、などを判断できる。
この場合は、consume が10倍程度使用頻度が高い。

今日の作業内容:SDPARA 校正 3h + CV 作成 2h
今日のランチ:つかさ かんぱちまかない丼
明日の予測作業時間: 5h

2011年7月1日金曜日

英語の難しさ

SDPARA の論文の校正で Introduction だけ英語を見てもらったが、やはり英語の難しさを痛感する。

たとえば、「計算時間の大部分を部分Xが占める」というときに、
The X part occupies most of the compuation time.
のように occupy を使って書いていたが、ここで occupy はダメらしく、consume などにするほうがよいとのことであった。
どうやら主語との関係らしいが、occupy は行動する主体でないとダメなので「計算」などでは動詞に使えないということである。
ただし、ジーニアスなどを参照するとこのような occupy の使い方もアリなようにも見ることができるので、さらに難しい。

いずれにしても、まだまだ勉強が必要である。
今度応募しようと思っているところも(無謀にも)海外であるため、やはり英語は必要そうだ。

今日の作業内容:英語の校正 2h + SNL のプログラム 2h
今日のランチ:らく 焼き魚定食
明日の予測作業時間:4h