2012年3月30日金曜日

SDPA-C のソースをまだまだ確認中

ここのところ、ソースを確認するのが続いているが、パーツごとの理解はだいぶ進んできて、あとは前処理が中心に理解を進めている。
たとえば、Aggregate Sparsity Pattern をどのように取り出しているかや、そこから Extended Sparsity  Pattern をどのように作るかなどである。
これらは、rsdpa_chordal.cpp, rsdpa_main.cpp に書かれているので、この2つをもう少し読み進めるつもりである。

ところで、これまでの SDPA-C は version が 6 なので、やはりメモリ管理などがすっきりしていない部分がある。
これらは SDPA 6 に由来しているのが原因であるが、 SDPA 7 では、もう少し new, delete などをマクロで管理するなどして対応しているので、このあたりも反映していきたい。

今日の作業内容:SDPA-C ソース確認 2h + タンパク質勉強 2h
今日のランチ:サイゼリヤ 青菜とパンチェッタのパスタ
明日の予測作業時間:1h

2012年3月29日木曜日

タンパク質の種類を勉強

SNLの研究で、やはりタンパク質を計算するには、既存の化学研究でどこまで出来てるかを知る必要がある、ということで、タンパク質の種類を勉強した。

今日読んだ本は、
分子レベルで見た体のはたらき

http://www.amazon.co.jp/%E5%AE%8C%E5%85%A8%E7%89%88-%E5%88%86%E5%AD%90%E3%83%AC%E3%83%99%E3%83%AB%E3%81%A7%E8%A6%8B%E3%81%9F%E4%BD%93%E3%81%AE%E3%81%AF%E3%81%9F%E3%82%89%E3%81%8D-%E3%83%96%E3%83%AB%E3%83%BC%E3%83%90%E3%83%83%E3%82%AF%E3%82%B9CD%E2%80%90ROM-%E5%B9%B3%E5%B1%B1-%E4%BB%A4%E6%98%8E/dp/4062744031

であって、この本は最初にタンパク質の基本的な事柄がまとまっている点がよかった。
今まで pymol などでβシートをみたときに矢印の向きがわからなかったが、アミノ基 ->カルボキシ基 またはその逆向きのどちらかで統一されているはず、ということが分かった。
(どっちになっているかは、pymol のマニュアルで調べておくことにする。)

他はいろいろな種類が掲載されているが、一つ一つを細かくみるのは SNL の計算とは方向性がまた異なるので、このあたりは雰囲気だけをチェックしておいた。

今日の作業内容:タンパク質 2h + SDPA-C のソース確認 2h
今日のランチ:ちゅらさん ソーキの塩焼き
明日の予測作業時間:5h

2012年3月28日水曜日

双対内点法の計算式を確認

ちょっと必要があったので、双対内点法の計算式を確認しておいた。
とくに、ポテンシャル関数の最小化をニュートン法で行うときにどのようにSchur complement Equation が出てくるかである。

この導出の場合、対称行列 S についての微分が必要となる。
たとえば、log (det S) の微分は S の逆行列となる。
また、d (S^{-1}) = S^{-1} dS S^{-1} である。
この二つを利用すると、簡単にニュートン法の計算式を導出できる。

今日の作業内容:双対内点法 1h + SDPA-C の計算式確認 2h
今日のランチ:たちばな 真鯛
明日の予測作業時間:5h

2012年3月27日火曜日

Debian をもうひとつインストール

今日は、昨日に引き続いて Debian をもうひとつインストールした。
昨日のは SDPA の Debian パッケージを作る専用の環境であるが、今回のはそれ以外のプログラムや Matlab を実行したりするのに利用できるようになっている。
2日間かかったが、これで基本的には数年間は再インストールを行わなくて済む環境になったので、あとの作業はかなり楽になりそうだ。

あと、SDPA-C のソースのチェックも並行して行った。
こちらは、indexCtoDなどを教えてもらいながら、続行中である。

今日の作業内容:Debian インストール 4h
今日のランチ:味庵 豚肉の四川風炒め
明日の予測作業時間:5h

2012年3月26日月曜日

Debian unstable を再インストール

VMplayer のほうのアップデート関係がうまくいかなくなったのを踏まえて Virtualbox に切り替えるようにしているが、今日は Virtualbox に移行するために Debian unstable を再インストールした。
ここで作っている環境は、SDPA の Debian パッケージコンパイル用の環境でもあり、Windows 用バイナリの環境でもある。

基本的には、インストールはtesting と同じであるが、日本語でインストールすればいいものを間違って英語でインストールしてしまったので、
# apt-get install locales
# dpkg-reconfigure locales
で日本語を設定しなおして構築している。

だいたい SDPA のコンパイルまでで HDD を 4.3 GB ほど使っているが、そのあと pbuilder の環境を構築したので、さらに増えていると思われる。

このインストール中に、昨日までにいろいろな片付けも進行しておいた。

今日のインストールとは別にもうひとつ Debian をインストールしておくつもりである。

今日の作業内容:Debian インストール 3h
今日のランチ:らく 鶏の照り焼き定食
明日の予測作業時間: 6h

2012年3月22日木曜日

論文チェック

今日は、再投稿を予定している論文を送ってもらったので、それをチェック。
レフリーから言われたことは、それなりに反映してあるので、今度は大丈夫ではないかと思う。

あとは、細かいところをもう少し調整すれば再投稿にできると考えている。

今日の作業内容:再投稿チェック 2h
今日のランチ:シッダルータ ベジタブルカレー
明日の予測作業時間:2h

2012年3月21日水曜日

Debian パッケージで今度は BD-uninstallable

SDPA の Debian パッケージ 7.3.7+dfsg-1 をスポンサーに ftp-master にアップロードしてもらったが、buildd の結果
https://buildd.debian.org/status/package.php?p=sdpa
を見ると armhf と s390x で BD-uninstallable になっている(他はすべて通過した)。

どうやら BD-uninstallable のは、たとえば、s390x では libmumps-seq-dev がないことが理由として挙げられている通り、たしかに libmumps-seq-dev のパッケージでは s390x のバイナリが sid に準備されていない。

ただ、このあたりはすでにSDPAのパッケージでどうこうできる範囲ではないので、とりあえずはこのままおいておこうかと考えている。

今日の作業内容:SDPAパッケージ 1h
今日のランチ:らく 焼き魚定食
明日の予測作業時間:3h

2012年3月19日月曜日

SDPA-C のソースを確認

SDPA-C を SDPA7ベースに移行するにあたって、まずはSDPA6とどれくらいソースに違いがあるのかを確認している。
やはり、キーワードになりそうなのは、clique 関係の rCliqueMatrix, aggregateMatrix, extendedMatNonSymmetry のあたりか。
Main iteration は Mehrotra の predictor-corrector を用いていないので、そのあたりは修正が必要そうである。
今日のところまでで、diff で取った1万行ぐらいあるうちの4,500行程度にざっと目を通しておいた。

ところで、Mehrotra の predictor-corrector と言えば、最近の論文で


Changhe Liu, Hongwei Liu, Xinze Liu,
Polynomial Convergence of Second-Order Mehrotra-Type Predictor-Corrector Algorithms over Symmetric Cones
Journal of Optimization Theory and Application
DOI 10.1007/s10957-012-0018-5

に2次のMehrotra predictor-corrector が多項式時間で収束することが書かれていた。
このあたりの論文は、収束させるためのパラメータ調整に利用できるかもしれない。

今日の作業内容:SDPA-C チェック 2h + ISMP アブストラクト2h
今日のランチ:サイゼリヤ ミートソースボロニア風, ベジタブルセット
明日の予測作業時間:4h

2012年3月16日金曜日

タンパク質とsubmodular

2か月前に取り組んでいた submodular であるが、タンパク質の場合には最密部分グラフをうまく見つけることができなかった。
どうやら、タンパク質は、最も密な部分から最も疎な部分まで、なだらかに密度が減少しており、どこで切るのがベストなのかという判断が難しかった。

今回は、このときに勉強した手法を取り込んで、SNL の特定を行うようにしている。
まだまだ実装中なので結果は分からないが、それなりにうまく行くのではないか、と推測している。

今日の作業内容:submodular 3h
今日のランチ:味庵 油淋鶏
明日の予測作業時間:6h

2012年3月14日水曜日

Cholmod と elimination tree

Sparse Cholesky のライブラリである Cholmod について、どのようなことまでができるかを把握しておくために User Guide を読んでいる。
このうちに、elimination tree のあたりをよく理解していないことが分かったので、ここを理解するところを始めておきたい。

今日の作業内容:Cholmode 勉強 2h
今日のランチ:四川 回鍋肉
明日の予測作業時間:2h

2012年3月13日火曜日

OpenBLAS on MacOSX がうまく行かない

SDPA が Windows バイナリがあるように MacOSXバイナリも作ろうと思ったのだが、OpenBLASがうまくコンパイルできていないことが分かった。

OpenBLAS のコンパイルまでは終わるのだが、そのあとでリンクしようとすると、


$ gcc-4 ../sample.c libopenblas.a
ld warning: in libopenblas.a, file is not of required architecture
Undefined symbols:
  "_dgemm_", referenced from:
      _main in ccBS2pnX.o
ld: symbol(s) not found
collect2: ld はステータス 1 で終了しました

となって dgemm が見つからない。
ただし、

$ nm libopenblas.a | grep "T _dgemm_" | head -1
nm: no name list
0000000000000000 T _dgemm_
であって、libopenblas.a に dgemm 自体は入っていることが分かる。

やはり、file is not of required architecture のエラーが怪しいが、このあたりはもう少し調べてみないと分からない。

MacOSX はLinuxやWindowsとは異なるOSなので、数値計算をしようとするとライブラリなどの面で準備されていないことが多く、しかも対応が難しい局面も多いように感じる。



今日の作業内容:OpenBLAS on MacOSX 2h + CHOLMOD チェック 2h
今日のランチ:シッダルータ ベジタブルカレー
明日の予測作業時間:2h

2012年3月12日月曜日

SDPA 7.3.7 の準備

Debian の SDPA パッケージであるが、7.3.6.dfsg-2 ではlibatlas-base-dev のディレクトリなどが若干間違っていたために、古めの特定のアーキテクチャでコンパイルできない状態になっていた。
そこで、これを修正して 7.3.6.dfsg-3 とする予定であったが、mentors.debian.net を見ると dfsg-version-with-period というウォーニングが出ていた。
http://lintian.debian.org/tags/dfsg-version-with-period.html

どうやら dfsg-3 の直前のピリオドをプラスなどに変更して 7.3.6+dfsg-3 にすればよいようであるが、これにすると、7.3.6+dfsg-3 のほうが 7.3.6.dfsg-2 よりもバージョンが古いと認識されてしまう。
(アスキーコードでプラスは0x2b, ピリオドは0x2e であるため、アスキーコードで比較されるとバージョンが逆転してしまう。)

そこで、7.3.6+dfsg-3 ではなく 7.3.7+dfsg-1 とすることにした。
もともと、他のウォーニングでソースコードのほうにスペルミスがあったことが分かっていたし、これを修正して Debian で使うには upstream のバージョンを上げるしかない。
パッチを当てる手もあるが、そうすると upstream とパッチの二重管理となってしまうので、やはり upstream を変更するほうが良さそうである。


ところで、mentors.debian.net に前回はうまくアップロードできずにスポンサーの方にアップロードしてもらったが、今回はアップロードできた。
前回の条件を詳細に記録していないので確実ではないが、mentors.debian.net に
$ dput mentors ???.dsc
をしている最中に Ctrl-C を押したのが良くなかったようである。
間違いがあることに気がついて停止させたのであるが、途中までのアップロードの壊れたファイルがあると、そのあとでうまくアップロードできなくなってしまう、という可能性が推測できる。

あと、アップロードした後に確認メールが来るまでのあいだに、もう一度
$ dput mentors ???.dsc
とすうと、403 Forbidden となることが分かった。
これは時間経過を待って確認メールが来ればアップロードできるようになる。
ただし、上記の途中で Ctrl-C を押すと、確認メールも出せない状態に陥るので、スポンサーの方にアップロードしてもらうしかないようである。
一度スポンサーにアップロードしてもらうか、あるいは何日か経過すると mentors.debian.net にまたアップロードできるようになっているように見える。
(繰り返し確認ができるものではないので、推測の域を出ないが。)

今日の作業内容:Debian パッケージ 2h + 読んだ論文の整理 2h
今日のランチ:らく 鶏の照り焼き定食
明日の予測作業時間: 6h

2012年3月9日金曜日

微分の続き

この前のメールに返信があって、だいぶ理解ができそうな感じではある。
ただ、今日はあまり時間が取れなかったので、もう少しじっくりと考える必要がある。

いずれにしても、2,3日で分かるものでもなく、まだまだ時間をかけてもいいと考えている。

今日の作業内容:書類作成 3h
今日のランチ:角笛 鶏肉の山賊焼き
明日の予測作業時間:6h

2012年3月7日水曜日

Newton 法の高速化

最近になって Newton 法の高速化の論文をチェックしている。
主双対内点法は、いわゆる修正 Newton 法の一種なので、Newton 法が高速になれば直接その恩恵に与ることができる。


ただ、論文では計算過程が省略されていて、どのように計算されているのかが今一つよく分からない。
今日のうちに著者にメールをしたので、この返事を待ってみようと思っている。
いずれにしても、この論文の書いてあることがそのまま使えれば主双対内点法をオーダーのレベルで高速化できると思うので、時間をかけて検討する余地はありそうだ。

今日の作業内容:論文読み 3h
今日のランチ:サイゼリヤ ハンバーグと白身魚フライ
明日の予測作業時間:3h

2012年3月6日火曜日

SDPA の 7.3.6.dfsg-1 がなぜか optional になっていた

mentor.debian.net には、結局うまくアップロードできなかったが、スポンサーの人が ftp-master にアップロードしてくれたので、とりあえず 7.3.6.dfsg-2 は ftp-master まではアップロードされた。

ただ、このときに、「disparities が optional なのを extra でオーバーライトしようとしている」というメールが届いた。
7.3.5.dfsg-1 のときに optional になっていたのだが、依存している mumps が extra なので、7.3.6 にしたときに extra に修正したはずなのだが、たしかに
$ aptitude show sdpa
で確認すると 7.3.6.dfsg-1 は optional になっている。
どこで変更が行われたのか、少し謎である。


今日の作業内容:Debian 2h + 論文読み 1h
今日のランチ:つかさ しめさば
明日の予測作業時間: 4h



2012年3月5日月曜日

mentors.debian.net との相性がよくないのだろうか

SDPA のパッケージのアップロードにてこずっている mentors.debian.net であるが、またもやトラブルとなっている。
エラーメッセージを出力しないので、いまひとつ何が原因なのかを特定できないでいる。


ところで、Debian のパッケージを作るときには、そのパッケージが正しいかを確認してくれる「スポンサー」という人がついてくれるのだが、SDPA のパッケージのスポンサーになってくれた人は、ビックリするぐらい Debian パッケージに詳しいので、いろいろと教えていただいている。
自分でもインターネットで情報収集をしたりしているが、やはり人から直接教わる情報というのは間違いなく貴重である。

今日の作業内容:Debian パッケージ 2h + 論文読み 4h
今日のランチ:味庵 豚肉の甘味噌炒め
明日の予測作業時間:5h

2012年3月2日金曜日

Couenne 下調べ

この前から解いている POP は SparsePOP で SDP 緩和すると大きくなってしまうが、NEOS のBARON で試しに解いてみたところ、わずか数秒で解けてしまった。
どうやら、問題の性質によって大きな差があるらしい。

ところで、BARON はフリーソフトではないので、スタンドアローンで実行するのであれば、別途購入する必要がある。
そこで、今回は同じく NEOS に載っている Couenne を調べている。
NEOS で解いてみたところでは、BARON と同じ最適値をほぼ同じぐらいの時間で出力していた。

Couenne は COIN-ORの一部であって、 Windows バイナリもあるが、GAMS フォーマットではなく nl フォーマットで入力しないといけないのがネックである。
このあたり、検討の必要がありそうだ。

今日の作業内容:Couenne 下調べ 2h + 書類作成 2h + フーリエ変換 2h
今日のランチ:四川 豚にらもやし炒め
明日の予測作業時間:5h

2012年3月1日木曜日

gzip の時刻と md5sum

SDPA の Debian パッケージをスポンサーの方に ftp-master にアップロードしてもらったのだが、reject されてしまった。
どうやら、sdpa_7.3.6.dfsg.orig.tar.gz の md5sum が異なるために弾かれたらしい。

今回は SDPA 本体の修正ではなく、debian/ ディレクトリのみの修正のため dfsg-2 としてアップロードできるように準備している。
本来は、orig.tar.gz は dfsg-0 または dfsg-1 の本体のバージョンが上がって最初のときにだけ必要なのだが、今回は mentors.debian.net のバグが良く分かっていなかったので、mentors のファイルを一度削除してしまっており、orig.tar.gz が必要となってしまった。
さらに、orig.tar.gz については毎回 tar.gz で圧縮するようにしていた。

ところが、gzip では時刻の情報がファイルに入ってしまうため、md5sum の値が異なってしまう。

ここまでの原因が絡み合って、reject に至っているようである。
ひょっとしたら、SDPA 7.3.6 から 7.3.7 にバージョンを上げないといけないかもしれない。

今日の作業内容:本読み 4h + Debian 1h
今日のランチ:つかさ ぶりの照り焼き
明日の予測作業時間:5h