2010年11月30日火曜日

ZIB訪問記[7分の2]

この日から、本格的に活動である。
まずは、朝ごはんであるが、これはホテルからすぐ近くのカフェで取った。Steigenberger Berlin の正面を出て右に進み、最初の角で右に曲がると30mほどでカフェがある。ホテルへの近さから、圧倒的に便利である。おばちゃんが一人でまかなっているので、こぢんまりとしているが、そこがいい。
ほうれん草のパイが1.6ユーロ、ミルクティが1.5ユーロ、とお値段も手ごろである。(ホテルで朝食は取らなかったが、値段は23ユーロと書いてあった。)


この写真はサンドイッチ2.3ユーロとホットチョコレート1.7ユーロである。

そのあと、ZIB に移動するため地下鉄を利用する。Steingeberger Berlin は地下鉄の駅が2つ近いところにあり、3路線を利用できるが、ZIB に移動するには U3 の路線である。ここでは Augsburg で U3 に乗る。今回は日数がそれなりにあるので、7日間自由に乗り降りできるチケットを購入する。地下鉄などは中心街が A ゾーン、近郊が B ゾーン、そのまわりが C ゾーンとなっており、観光のメインは A,B ゾーン、ZIB も B ゾーンにあるので、A,B ゾーン共通のチケットを購入した。これが 26.20 ユーロである。1回で2ユーロ近いので、13回乗れば確実に元が取れる計算である。買ったらすぐにスタンプを機械で押して有効にする。

なお、チケット販売機はお札の認識があまく、下手に入れると認識しない。どうやら、お札の表側を上向きにして、挿入口の中央ではなく左側に沿うように入れると認識率が高いようだ。

地下鉄では、ドアは自動では開かないので、緑のボタン、あるいはレバーを引いて開けることになる。

ZIB は Dalem-Dorf でU3を降りる。駅数にして8個である。駅から ZIB までは10分。まだ寒さに慣れていない分、耳がかなり痛む。ZIB に入ってしまえば、暖房が効いていて快適である。
 写真のうち、右側と奥の建物が ZIB の建物である。左側はフリー大学という大学の建物である。一見すると ZIB が大学の組織の一つのような立地条件であるが、組織としては完全に独立しているとのことであった。


ZIB では、一緒に行ったグループでひとつ部屋を借りることができるように手配してくれてあったので、そこに荷物を置く。ここで ZIB のなかでも Optimization や SCIP に関係ある人を次々に紹介してもらう。


あいさつ回りと簡単なスケジュールを決めたところで、すぐにお昼になってしまった。お昼はフリー大学の学食で食べた。学食はいくつかあるそうだが、おいしいところまでは距離があるとのことで、5分程度学内を歩く。学食は自由に取ったあとにレジで精算するタイプである。とてもレパートリーが多く、見ているだけでも楽しめる。今回は、普通に野菜をできるだけ取れるようにしてみた。
午後に SCIP の人たちと打ち合わせ。お互いの自己紹介のあと、SDPA がどんなことをしているか、また SCIP ではどのようなことができるか、について色々と聞いてきた。ZIB の人の英語は聞き取りやすいが、疲れてくると英語においてかれることがあるので、少し注意が必要だった。

夕飯は、ホテルに一度戻ったあと地下鉄のU9で移動して Birkenstr 駅から出て1分のArema に連れて行ってもらう。ここはカツレツが有名ということで、早速それを注文。

これは、かなり美味しいカツレツだった。衣にも味がすでについているのが良かった。
ただし、ボリュームがすごい。日本でいうカツレツの2倍程度は軽くある。
下にポテトサラダが敷かれており、味は抜群であるが、これもボリュームがある。
なお、ポテトサラダの代わりにフライドポテトもあるが、それはさらにボリュームがある。
値段は、下がポテトサラダのときに10ユーロぐらい、フライドポテトで12ユーロぐらい、だったかと記憶している。
もちろん食べきれるわけでもなく、4分の1程度をテイクアウトで持ち帰る。


2010年11月29日月曜日

ZIB訪問記[7分の1]

今回は、ドイツにある ZIB (Zuse Institute Berlin) を訪問してきたので、その記録をしておく。
今回の主な目的は、研究所でのワークショップで発表することと、研究内容などを打ち合わせてくることである。

今回のフライトは、フィンエア航空のヘルシンキ経由であるため、12時ごろに成田を出発である。これに間に合わせるために、朝5時に起きて7時半ごろには家を出発。無事に成田について、フィンエアで成田第2ターミナルを出発する。
このときにユーロに両替をしたが、成田第2ターミナルでも電車を降りてすぐのところと出発ロビーにいくつか両替があり、これらは同じレートではなかった。比較してみると、1ユーロでも1円程度の差があるため、大きな金額を両替する人は一通りまわってみるとよい。(自分にはあまり関係ないが)

飛行機はかなり空いている感じであった。夕飯は匂いにつられてカレーを選択。朝はサンドイッチであった。カレーは、それなりに美味しかったのでよかった。サンドイッチはボリュームが少なめであるが、そもそも機内では運動できないので、むしろ少なめでよかった。

飛行機の中では、英語の勉強を兼ねて「ウェイトレス」という映画を観る。音声は英語、字幕は中国語で見て、日本語無しでの勉強にする。

なお、「ウェイトレス」のあらすじは、ダメな夫に愛想をつかしたウェイトレスがお金を貯めて夫から逃げようとするが、突然の妊娠で状況が一変してしまう。しかしながら、産婦人科医と不倫をはじめてしまう、という、あまり面白くないストーリであった。おそらく、純小説に似た部類なのであろう。英語の勉強にはなったが、いまひとつであった。

ヘルシンキの乗り換えは2時間程度。ヘルシンキまでの飛行機でエビアンが配られていたので、それを持ってきたのだが、ここでセキュリティチェックがあることが解かり、エビアンを一滴も飲まずに断念する。EUへの入国のパスポートチェックもあったが、今回は質問無しで簡単に入れた。

ヘルシンキからベルリンまでは約2時間のフライト。ここでも機内食がでる。パンとポテトサラダ、そしてチキンのから揚げのようなもの。冷たいのが難点であるがポテトサラダは美味しい。

ベルリンの空港にほぼ定刻に到着する。ZIB の人が空港にお迎えにきてくれるという歓迎ぶりをありがたく思いつつ、車に乗せてもらってホテルへと移動する。

今回のホテルは Steingeberger Berlin である。expedia 経由で予約をしたので、かなり予算を抑えられたが、立地条件、内装については値段以上の価値があるホテルである。ただし、メインストリートから一本入るため、夜6時以降はホテルの周りはかなり暗くなり、一人で歩くときなどは気をつける必要がある。また、このホテルは、値段の中にすでにインターネットも含まれており、ワイアレスで接続できる。ワイアレスで接続するには、ロビーで一人ずつパスワードをもらう必要がある。

ホテルについて早速メインストリートに出ると、すでにクリスマスのイルミネーションが飾られており、クリスマスマーケットが出ている。

ここでベルリン最初の夕飯を食べた。


ここは屋台なので外で食べることになり相当に寒かったが、これは結構美味しかった。特にキャベツはこの季節限定のものということで、日本のキャベツとは異なり、甘みが強くて良い。

いずれにしても、相当な寒さであり、ヨーロッパセンターなどを少し見た程度でホテルに戻る。厚着が必要だということを実感する。
(東京とは15度ぐらいの温度差があり、12月上旬で東京の一番寒い季節と同じかそれよりも寒くなる)

2010年11月26日金曜日

多様体

今日は、すこし雰囲気を変えるために別の勉強をいれた。
いろいろと勉強になるが、特に勉強になったのが
「n次元リーマン多様体は n(n+1)/2 次元の任意の実解析的リーマン多様体に等長埋込可能である。」
というところである。
これはなんか関係がありそうである。

今日の作業内容:多様体
今日のランチ:つかさ ブリの照り焼き

2010年11月25日木曜日

Ubuntu の ATLAS は 10.10 からディレクトリが変更されている

今日インターネット上で少し調べてみたところ、Ubuntu で SDPA のコンパイルがうまく行かないときがあるようである。
原因を調べてみると、ATLAS のインストールされるディレクトリが 10.10 (Marverick) から変更されて、Debian と同じところになっているようである。
つまり、/usr/lib/atlas-base/libblas.a が /usr/lib/atlas-base/atlas/libblas.a に変更されている。
とりあえず、この違いを吸収できるように configure などのスクリプトを修正しておいた。

あと、今日の午後は、いまひとつ作業の調子が出ず。
少し疲れがあるのかもしれない。

今日の作業内容:Ubuntu 対応
今日のランチ:日高屋 レバニラ炒め
明日の予測作業時間:4h

2010年11月24日水曜日

出張準備とSDPAのconfigure調整

ドイツ出張が迫ってきたので、出張準備をしておいた。
飛行機やホテルなどの必要な情報をプリントアウトして、整理しておいてある。

また、SDPA の configure.in についても、さらに改良した。
SDPA-M については、追加でいろいろとコマンドができているので、こちらについても CommandList.txt というファイルで説明を書くことにした。
これらのコマンドを使うと、
(1) SDPA フォーマットへの書き出し
(2) SDPA,SDPARA の結果ファイルの読み込み
などが行える。とくに (2) を使うと、SDPA Online solver の出力ファイルを Matlab に読み込み直せるので、実はかなり便利である。

今日の作業内容:出張準備, configure 調整
今日のランチ: たちばな いわしのお寿司
明日の予測作業時間:4h

2010年11月23日火曜日

最短路の部分、mex 化

センサーネットワークのプログラムの一部にあった最短路だが、ボトルネックになっていたのでやはり mex にした。
もともと、スタート地点が一つでないため、Floyd–Warshall algorithm をベースにしていたが、アルゴリズムを整理したうえで mex にしたおかげで 30 倍程度の高速化になっている。
これによってボトルネックにならずに済みそうである。

ところで、最短路問題は基本的な問題であるため、非常に多くの実装があるし、ヒープなどを利用して高速化などが行なわれている。
しかし、スタート地点が複数でしかも全部の地点がスタートではない、という状況になるとあまり研究がなされていないようである。こういったときに、どれだけヒープなどで高速化できるのか、ということも良く解からないのか簡単には見つけることが難しい。

今日の作業内容:最短路 mex 化
明日の予測作業時間:5h

2010年11月22日月曜日

SDPAとMUMPS

SDPA のパッケージの中には MUMPS のパッケージがある。
しかし、Ubuntu, Debian では MUMPS のパッケージがあるので、SDPA の中のパッケージを利用する必要はない。
今まで、この違いを configure で吸収させていなかったが、修正をして既存の MUMPS パッケージがある場合にはそれを利用することにした。
これによって --with-mumps-include, --with-mumps-libs というオプションがついている。
また、Makefile.am で mumps 系のファイルをインストールしないように条件分岐も入れるようにしておいた。

今日の作業内容:MUMPS と configure
今日のBGM: FF12 OST [4]
今日のランチ:つかさ 〆さば

2010年11月19日金曜日

プロファイリング

SDPA の論文の校正をするにあたって、比較対象の SeDuMi, SDPT3, CSDP のそれぞれに計算時間を測定する修正を追加している。
これによって、SCM の計算とそのコレスキー分解の各計算時間が算出できるようになる。

数問だけ比較してみているが、同じ計算機でもコレスキー分解にかかっている時間にかなりの違いがある。反復回数で割って1回ごとの反復にしても、かなり違っているのである。今まで気がついてなかったが、面白い結果である。

今日の作業内容:センサーネットワークの問題を確認、プロファイリング準備
今日のランチ:らく しょうが焼き定食
明日の予測作業時間:5h

2010年11月18日木曜日

SDPAの configure にバグがあるようだ

今日はあまり作業の時間がとれなかったので、明日以降のメモのみ。

SDPA は 7 以降で configure でインストールできるが、この一部にバグがある、という報告をもらった。どうやら Debian の kfreebsd だと -lpthread が追加されずに停止するようである。
しかも、このバグは BLAS にリンクできるかどうかをチェックしている段階で発覚するので、BLAS のリンクに失敗しているのか pthread に失敗しているのかがわかりにくい。
pthread を確認するように AC_CHECK_FUNC を追加することとしよう。

あと、AC_CHECK_FUNC で失敗したときに、config.log の中身を表示できるととても便利なので、そういった機能があるのかも確認する必要がある。

今日の作業内容:SDPA configure の状況確認
今日のランチ:らく 麦とろろセット
明日の予測作業時間:3h

2010年11月17日水曜日

Lovasz Workshop で Lovasz と少しだけ話ができた

今日は京都賞を取った Lovasz の受賞記念ワークショップということで、話を聞きに行ってきた。
他にも作業があったのであまりたくさんは聞けなかったが、William Cook の話では TSP の話だった。TSP は有名な問題であるが、厳密解を求める理論的なオーダーは半世紀も改善されていない、という点が驚きであった。

今日の最後が Lovasz の話であり、graphon の話であった。graphon はグラフの隣接行列を拡張したようなものであって、グラフの隣接行列であれば各要素は 0 or 1 であるが、graphon の場合には 0 から 1 の値が取れるように拡張されている。
この graphon の説明や、その性質、それから導かれる内容などが話であった。

そのあとの懇親会でも Lovasz は色々な研究者と話をしていたが、タイミング的に暇になっているところがあったで「このタイミングはラッキーなのでは?」と思い、話しかけてみたところ、少しだけ話をすることができた。

どうやら、graphon の勉強を始めたのは 5,6 年前ぐらいで、行列の収束などに興味を持ったのが研究のスタート地点だったようである。
ワークショップの話では数学的な側面に話が集中していたが、このような収束はインターネットなどのネットワークの研究に役立つ、といった応用がある、とのことであった。
graphon について知りたいのであれば、
"Very Large Graph" http://arxiv.org/abs/0902.0132
がサーベイを兼ねていて取っ付きやすいかもしれない、とのことであった。
(注:英語で話している関係で、一部に間違いを含む可能性あり)


graphon は SDP と直接関係があるかどうかはわからないが、Lovasz theta は SDP においても重要な問題のひとつなので、ひょっとしたら関係があるのかもしれない。


今日の作業内容: Lovasz Workshop
今日のランチ:弁当 チキンガーリック
今日の夕飯:ワークショップ懇親会

2010年11月16日火曜日

SDPA 論文校正の打ち合わせ

今日は、SDPA の論文校正の打ち合わせをした。
大きな項目としては、数値実験の問題をどのように選択するか、ということと SDPA-GMP の数値実験をどうするか、が検討課題になりそうである。
このあたりは、まだまだ検討すべきである。

また、最短路については、splib の dikbd.c を C++ に書き直しているが、バグが混入したようでデバッグが必要となっている。これについては、明後日以降見直すことにする。

今日の作業内容:
8:15-9:15 dikbd.c 編集その1
10:30-11:00 SDPA 論文校正検討
11:00-11:30 dikbd.c の C++ 化
11:30-12:00 dikbd.cpp のデバッグその1
13:15-14:00 dikbd.cpp のデバッグその2

14:00-15:00 dikbd.cpp のデバッグその3
18:30-20:30 SDPA 校正打ち合わせ
今日のランチ:味庵 牛肉のブラックペッパー炒め
明日の予測作業時間:2h

2010年11月15日月曜日

最短路の基本的な勉強

この前教えてもらったところでは、最短路問題の基本的な勉強としては、

[教科書1] Network Flows: Theory, Algorithms, and Applications
               Ravindra K. Ahuja, Thomas L. Magnanti, James B. Orlin
[教科書2] Network Optimization
              Dimitri P. Bertsekas
のあたりであり、とくに[教科書1]は2章割いてあるだけあって、基本的なことについてかなり詳しい。
また、実装としては、Andrew Goldberg の Network Optimization にある
http://www.avglab.com/andrew/soft.html
の SPLIB が基本的な実装を網羅している。
この実装は、このページにもあるように Math Prog で比較実験の論文が出ているので、これも参考になる。


とりあえず、上記の情報をベースに進めているが、いろいろと問題もある。
SPLIB は実装が古いので、かなり読みにくくなっている。
特にデータ構造のあたりを無理なマクロを使用して書いているので、このあたりがきつい。
まずは、これを C++ で書き直して、どの程度の性能が出るのかを見てみたい。

あと、これもクリティカルな状況だが、今回の最短路についてはあくまで SDP 処理の前処理であるため、正確な最短路ではなく、SDPにとって都合のいい最短路がベターである。
つまり、目的関数が厳密でないため、厳密解法がいいとも限らず、頭が痛いところである。

今日の作業内容:
10:00-10:30 [ng] parser_db.c 解読
10:30-10:50 [ok] 解読続き
14:00-14:30 [ok] 枝の重さ 確認
14:30-15:30 [ng] dikbd.c 確認
15:30-16:00 [ok] STLのヒープの確認
16:00-16:30 [ng] dikbd.c 続き
16:30-17:00 [ok] dikbd.c 続き
17:00-18:00 [ok] dikbd.c を C++ に書き直し その1
今日のランチ:四川 豚の角煮弁当
明日の予測作業時間:4h

2010年11月12日金曜日

Intel MKL での SDPA,SDPARA リンク

SDPA, SDPARA のコンパイルができたので、そのメモをしておく。
基本的に Intel MKL の場合、C は icc, C++ は icpc, Fortran は ifort なので、SDPA の場合には、最終的に icpc でリンクしている。

icpc -openmp -O -funroll-all-loops -fPIC -o sdpa sdpa_exe.o -L. -lsdpa \
-L${mumps_dir}/single/lib -ldmumps -lmumps_common -lpord -L${mumps_dir}/mumps/single/libseq -lmpiseq -L/opt/intel/11.1.072/mkl/lib/em64t -lmkl_intel_lp64 -lmkl_core -lmkl_intel_thread -L/opt/apps/isv/intel/11.1.072/lib/intel64 -lifcore

のような感じでリンクしている。
なお、MUMPS については、Makefile.INTEL.SEQ を Makefile.inc にしているが、CC が gcc になっているので、これを CC = icc に修正している。

SDPARA の場合の最終リンクは
mpicxx -O -funroll-all-loops -openmp -fPIC -o prsdpa sdpa_exe.o libprsdpa.a \
-L${mumps_dir}/parallel/lib -ldmumps -lmumps_common -lpord \
-L/opt/intel/11.1.072/mkl/lib/em64t -lmkl_scalapack_lp64 -lmkl_blacs_openmpi_lp64 -lmpi_f77 \
-L/opt/intel/11.1.072/mkl/lib/em64t -lmkl_intel_lp64 -lmkl_core -lmkl_intel_thread \
-L/opt/intel/11.1.072/lib/intel64 -lifcore
のようにしている。
これで mpirun で実行できるが、このまま単純に実行すると SDPA 自体のマルチスレッドと MKL の OpenMP が衝突するので(CPU使用率が2000%を超えたりする)、
export OMP_NUM_THREADS=1
として、OpenMP を1スレッドだけにするように設定している。

ただし、今日のところは PBS にうまく submit できていないようで、PBS からの実行はできていない。


今日の作業内容:SDPA, SDPARA コンパイル + SDPA パッケージング + 最短路問題下調べ
今日のBGM: FF12 OST [2,3,4]
今日のランチ:らく 鶏くわ焼丼とおそば
明日の予測作業時間:4h

2010年11月11日木曜日

GotoBLAS コンパイルと今から打ち合わせに

GotoBLAS については、
../kernel/x86_64/gemm_ncopy_4.S:175: Error: undefined symbol `RPREFETCHSIZE' in operation
というメッセージが出ていたが、これについては getarch.c の
#define FORCE_NEHALEM
を有効にすることで回避できた。今回のCPUは Westmere-EP のモデルのようであるが、getarch.c にWestmere-EP に相当する部分はなかったので、
http://ja.wikipedia.org/wiki/Xeon
を参考にして一番近そうな Nehalem を選択しておいた。
コンパイルには、
make BINARY=64 CC=icc FC=ifort USE_THREAD=1 USE_OPENMP=1 NUM_THREADS=24
としてある。
これで SDPARA のコンパイルに一歩前進である。

ただ、たったいま気がついたが、intel compiler といっしょに MKL が入っていた。
これを使うのもひとつの手である。

あと、昨日出したメールについて昨日の夜のうちに返信があり、飛行機の乗り継ぎの関係で今夜だけ日本に一泊するとのことで、スケジュールを変更して今日の夜に打ち合わせをすることになった。

今日の作業内容:GotoBLAS コンパイル + 打ち合わせ準備
今日のランチ:味庵 ピリ辛炒めの揚げ豆腐
明日の予測作業時間:4h

2010年11月10日水曜日

GotoBLAS2 がエラーでコンパイルできていない

SuSE11 の計算機で SDPARA をコンパイルできるかどうか試してみているが、GotoBLAS2 でコンパイルエラーになっている。
メモとして書いておくと、

../kernel/x86_64/gemm_ncopy_4.S:175: Error: undefined symbol `RPREFETCHSIZE' in operation

のようなメッセージが出る。どうやら、CPU の自動認識に失敗しているようで、RPREFETCHSIZE の #define が取り込まれていない様子である。
CPU 自体は、
$ cat /proc/cpuinfo | grep Xeon | head -1
model name : Intel(R) Xeon(R) CPU X5670 @ 2.93GHz
となっている。

これについては、明日また調べることにする。

あと、最短路の論文をチェック。
論文では数値実験をしているが、どうやらグラフの密度でだいぶ性能が左右されるようだ。
とりあえず数値実験に用いたプログラムを入手できるかどうかを著者にメールしてみた。
入手できないのであれば、自分で組むことになる。

今日の作業内容:
6:30-7:00 [ng] 文字のプログラム改良
7:00-8:00 [ok] 改良の続き
11:00-12:00 [ng] MPSP 論文チェックp1-p6
15:00-15:30 [ok] 計算機設定整理
16:45-17:30 MPSP論文チェックp5-p8
今日のBGM: FF7 OST [1,2]
今日のランチ:シッダルータ ポテトとグリーンピースのカレー
明日の予測作業時間:2h

2010年11月9日火曜日

並列計算の数値実験の論文へのまとめ方

昨日に続いて、数値実験の論文へのまとめ方についての論文を読む。今回は並列計算に関するものである。

Reporting Computational Experiments with Parallel Algorithms: Issues, Measures, and Expert's Opinions
ORSA Journal on Computing

1995年のものなので、コンピュータ名などは古い印象がある。

並列計算の指標などについてまとめられており、抜粋すると、

Speedup(p) = (特定の計算機上で最も高速なシリアル計算での計算時間)/(p台使用時の計算時間)
RelativeSpeedup(p) = (並列ソフトを1台で実行したときの計算時間)/(p台使用時の計算時間)
AbsoluteSpeedup(p) = (いろんな計算機で実行したシリアル計算の最短時間)/(p台での並列計算の計算時間)

efficiency(p) = S(p) / p
[ただし、S(p) は Speedup(p),RelativeSpeedup(p),AbsoluteSpeedup(p)]
incremental efficiency = ((p-1)*(p-1台での計算時間))/(p*p台での計算時間)

といったところである。

ただし、これらの計算も実は状況によって様々に異なることが指摘されており、どれがいいかについては疑問が残る。
この論文では、どのような指標がよいか23人の研究者からアンケートを取っているが、これがバラバラである。
要するに研究者の中でも並列計算を評価する指標はコンセンサスが取れていない。

今日の作業内容:
6:30-7:00 [ok] 数値実験の仕方の論文 並列計算について [その1]
7:00-7:30 [ok] p10-p20
8:00-8:30 [ok] p28-p34
8:15-8:45 [ok] 最短路アルゴリズム確認
10:00-11:00 [ok] アルゴリズム調査
11:00-11:30 [ok] Floyd-Warshall のアルゴリズム確認
11:30-12:00 [ok] Folyd-Warshall 関連の論文を調査
13:30-14:30 [ng] SNL サンプル作成
今日のBGM: FF12 OST [1,2]
今日のランチ:角笛 さばの竜田揚げ
明日の予測作業時間:5h

2010年11月8日月曜日

最短路問題

今日は、SDPAの論文について、レフリーから教えてもらった、数値実験の方法に関する論文に目を通した。

Designing and Reporting on Computational Experiments with Heuristic Methods
Journal of Heuristics, 1:9-32, 1995

特に重要なのはP11(論文内では3ページめ)にある Table 1 である。これがこの論文の要点である。
抜粋しておくと、
1. Define the goals of the experiment.
2. Choose measures of performance and factors to explore.
3. Design and execute the experiment.
4. Analyze the data and draw conclusions.
5. Report the experiment's results.
あと、Table 2 も有益である。
1. Reproducibility is essential.
2. Specify all influential factors in details.
3. Be precise about timing.
4. Show how algorithm parameters are set.
5. Use statistical experimental design techniques.
6. Compare the heuristic with other methods.
7. Reduce variability of results.
8. Produce a comprehensie report of the results.

これらは、今後の改訂に活かしていこう。

あと、SNL のプログラムの一部で最短路問題がボトルネックになっているので、それを解消するための改良をスタート。
Matlab のプログラムをいろいろと書き直したところ、だいたい10倍程度の高速化になった。
これを C++ で書けば、さらに2倍から5倍程度は高速化できそうな手応えはあるが、問題はそれでもボトルネックに成りかねないところである。
多点スタート多点ゴールの最短路問題で、しかも他にも条件分岐が入っているので、おそらくダイクストラ法はあまり高速化できなそうな気がする。
最短路問題のアルゴリズムはバラエティに富んでいるので、どのアルゴリズムなら効率的かを考えるところから始めたほうがよさそうである。

今日の作業内容:
6:45-7:15 [ok] SNL 論文復習
13:20-14:00 [ng] 事務処理いろいろ
14:00-14:20 [ok] 事務処理続き
14:20-14:50 [ok] データ整理
17:00-18:00 [ok] Matlab プログラム改良
18:00-18:30 [ok] 改良つづき
今日のランチ:つかさ 生サーモン照り焼き
明日の予測作業時間:4h

2010年11月5日金曜日

Wake On LAN の設定

Debian や Ubuntu は普段あまり使わないので、Vista の上の VMWare で動かしているが、Vista 自体もあまり動かしていないので、必要なときだけネットワーク経由で電源を入れられるように変更。
こういった機能は Wake On LAN と言って、オンボードの LAN 経由で起動できることが多い。

Windows Vista で Wake On LAN に対応させるときには、
http://tomorrow.meyon.gonna.jp/?eid=621382
がとても参考になる。
今回は、BIOS 画面で、[On Board LAN BOOT ROM] を [Enabled]にして再起動した。
(BIOSの項目はBIOSごとに異なるので、必ずしも同じ名前ではない)

そのあとは、[デバイスマネージャ]->[ネットワークアダプタ]->[LANにつながっているもの]->[プロパティ]->[電源の管理] と選んで[このデバイスで、コンピュータのスタンバイ状態を元に戻すことができるようにする]をチェックする。

また、このときにコマンドプロンプトから
ipconfig /all
としておいて、実際に使っている LAN カードの MAC アドレスを取得する。
具体的には、Physical Address と書いてあるところで、00-AA-BB-CC-11-22-33 と16進数で書かれている。

ここで、Windows Vista を終了する。
この Vista を今回は別サーバの RedHat からネットワーク経由で起動する。
RedHat では
# yum install wol
で wol コマンドをインストールする。
ここで
$ wol 00:AA:BB:CC:11:22:33
とすると、Vista PC が起動する。
(MAC アドレスが Windows 上だとハイフンだけど Linux 上だとコロンなところに注意)

なお、Windows Vista に外側からアクセスするには、VNC や cygwin による SSH などが必要である。VNC は UltraVNC などでできるようにあるが、dsm プラグインを設定したり、アクセスを変更したりなどが必要である。
また、cygwin の場合は、SSH をインストールしておく必要がある。これも他のサイトにいろいろと情報がある。なお、SSH でログインした場合、終了するときのコマンドは
$ shutdown.exe -s now
である。Linux なら -h であるが、-s である点に注意が必要である。
また、shutdown.exe は cygwin のコマンドであり、デフォルトでは入らないようなので、自分で入れる必要がある。shutdown.exe を実行すると、cygwin だけでなく Windows Vista 自体が終了するので、また必要なら wol で起動しなおす。

今日の作業内容:
8:30-9:00 [ok] SFSDP での実験
10:00-10:30 [ok] 事務処理関係チェック
13:00-13:30 [ok] Wake On LAN 設定
13:30-14:00 [ok] SFSDP での実験、大きめ
14:10-14:40 [ok] 発表原稿チェック
14:40-15:30 [ng] SeDuMi 中身チェック
15:50-16:30 [ok] SDPA 論文校正内容検討その1
16:30-17:00 [ng] SDPA論文校正内容検討その1まとめ
17:30-18:00 [ok] SDPA論文校正内容検討その1まとめ続き
今日のBGM: Romasing SAGA 3 OST [1-3]
今日のランチ: らく 山芋定食
明日の予測作業時間: 5h

2010年11月4日木曜日

SDPA の論文の校正スタート

1月最後に投稿していたSDPAの論文がようやくレフリーから返却されてきた。
かなり大幅な校正が必要、という判断であったが、reject されなかっただけ良かったと考えて、早速校正をするべきかと思う。
なにはともあれ、レフリーレポートを良く読んで、どのように校正すべきかを検討するところからスタートである。

あと、semidefinite embedding のは、読んだ論文の数値結果はどうやら SFSDP のよりもかなり高速である。ただ、データが特殊なので、論文で提案している手法が効果的なのか、あるいはデータの特質で高速に解けるのかを切り分ける必要がある。とりあえず、データを生成するプログラムは昨日作成したので、これを SFSDP にかけることになる。

今日の作業内容:SDPA 校正スタート、データ生成
今日のランチ:らく チキンカツ
明日の予測作業時間:5h

2010年11月1日月曜日

こまごまとした処理

今日は、こまごまとした内容を片付けただけで終了。
(したがって、細かい時間についてはメモをしていない)
基本的には、先週後半の学会出張の会計処理がメインで、あとは先週前半に作成したレフリーレポートの内容確認。
レフリーレポートはこれで完成なので、時期を待って返却すれば大丈夫である。

他に、Windows Vista を週に1度自動的に再起動するようにする設定をしておいた。

今日の作業内容:会計処理、レポート作成
今日のランチ:信華園 マーボー丼
明日の予測作業時間:6h