2013年8月30日金曜日

論文読み終了

昨日読んでいた主成分分析の論文は、今日のうちに読み終わり。
途中から定義がなく話が進んでおり、数学的にあやふやな感じだった。
おそらくプログラムを読んでアルゴリズムを理解したほうが早そうな感じ。
ただ、どのあたりまで深追いするか、そのあたりのバランスが検討課題になりそうだ。

今日の作業内容:論文読み 2h + 資料作成 1h
今日のランチ:久絵 アジフライ定食
明日の予測作業時間:3h

2013年8月29日木曜日

主成分分析の論文読み

主成分分析は固有値と密接に関係しているので、そのあたりの論文を読んでみている。
ただ、内容がいまひとつ曖昧な表現で書かれていたりするところがあって、意図を組むのに時間がかかっているので、もう少し時間がかかりそうだ。

今日の作業内容:論文査読 1h + 論文読み 2h
今日のランチ:らく 豚焼肉のおろしポン酢
明日の予測作業時間:5h


2013年8月28日水曜日

SDPA for 64bit Windows

64bit の Windows 用にコンパイルした SDPA のバイナリだが、数値実験の結果を教えてもらったところ、なぜか 32 bit 版よりも 64 bit 版の方が高速に実行できるらしい。
メモリ空間へのアクセスが高速になるためなのか、それとも、そもそも 64bit Windows だと 32bit バイナリは遅くなってしまうのか、理由はよく考えていないが、高速になるということで、とりあえずは OK ということにしておく。

今日の作業内容:論文査読 2h
今日のランチ:つかさ マグロの竜田揚げ
明日の予測作業時間:5h

2013年8月27日火曜日

発表資料を一通り完成

昨日の続きで発表資料作りを行った。
だいたいの発表練習をしたところ、必要そうな時間にピッタリだったので、これで一通りの完成としておく。
いずれにしても、発表は1か月以上も先なので、また見直して進めておきたい。

今日の作業内容:発表資料作り 2h + 論文査読 2h
今日のランチ:シッダルータ キーマカレー
明日の予測作業時間:4h


2013年8月26日月曜日

発表資料準備中

発表資料準備の方は、だいたいの構成が決まって、どんな内容をしゃべるべきかをある程度練り始めたところである。
しゃべる内容は、ざっと3分の1強までしかできていないので、このあたりをもう少し進めていく必要がありそうだ。

今日の作業内容:資料準備 5h + 論文査読 1h
今日のランチ:サイゼリヤ ハンバーグ&マスタードチキン+ドリンクバー
明日の予測作業時間:4h


2013年8月23日金曜日

64bit Windows の SDPA 用に OpenBLAS をコンパイル



SDPA の 64bit Windows バイナリを生成するために OpenBLAS をコンパイルしているが、以下のような make コマンドを実行すると mingw64 でコンパイルがうまくできることが分かった。

ただ、これだと CBLAS, WARMUP, LAPACKE を使用しておらず、また DYNAMIC_ARCH なので生成されるファイルも大きなものになる。

    rm -rf OpenBLAS
    git clone https://github.com/xianyi/OpenBLAS.git
    cd OpenBLAS
    make \
CFLAGS="-static" CXXFLAGS="-static" FCFLAGS="-static" FFLAGS="-static" \
DYNAMIC_ARCH=1 \
HOSTCC=gcc \
CC=x86_64-w64-mingw32-gcc \
FC=x86_64-w64-mingw32-gfortran \
CROSS_SUFFIX=x86_64-w64-mingw32- \
BINARY=64 \
USE_OPENMP=0 \
NO_CBLAS=1 \
NO_WARMUP=1 \
NO_LAPACKE=1 \
libs netlib
  # この上までが make コマンドの引数
    ln -s libopenblas.a libopenblas.lib
    x86_64-w64-mingw32-ranlib libopenblas.lib
   

これを利用して、SDPA をコンパイルすると
$ file ./sdpa.exe
./sdpa.exe: PE32+ executable (console) x86-64, for MS Windows
となって、たしかに 64bit Windows バイナリが生成できる。
また、Windows で実行しているときにタスクマネージャで確認しても *32 が表示されないので、64bit バイナリとなっている。

今日の作業内容:SDPA コンパイル 2h + 資料作成 2h
今日のランチ:食堂 ライスS + わかめの味噌汁 + 野菜たっぷりハンバーグ + ほうれん草ごま和え
明日の予測作業時間:3h

2013年8月22日木曜日

SDPA binary for 64bit Windows に挑戦

今までの SDPA のバイナリが 32bit 用しかなかったので、改めて 64bit に挑戦をしている。

前回は、どうも amd64-mingw32msvc- を使っていたようなので、今回は x86_64-w64-mingw32- を使ってみている。
今のところコンパイル中なので、どうなるかは結果待ちといったところだ。

今日の作業内容:SDPA コンパイル 1h
今日のランチ:  ローソン 冷やし中華 + ポテトチップス
明日の予測作業時間:3h



2013年8月21日水曜日

Wine を Debian sid/unstable にインストール

SDPA の 64bit Windows binary が必要そうなので、以前はコンパイルに失敗したが今度はできるかもしれない、ということで再度挑戦してみている。

ただ、Debian sid/unstable から Wine のバイナリーが削除されているようなので、Wine のインストールをしてみた。
(SDPA の Windows binary は Debian 上でクロスコンパイルしている。)

1.
deb-src http://ftp.jp.debian.org/debian sid main contrib non-free
を /etc/apt/sources.list に追加
2. # apt-get update
3. # apt-get build-dep wine
4. # apt-get install build-essentials checkinstall


5. git clone git://source.winehq.org/git/wine.git ~/wine-git
6. cd ~/wine-git
7. ./configure --enable-win64 --disable-win16 --disable-tests
8. make
9. # make install


参考 URL
http://forums.debian.net/viewtopic.php?f=10&t=68770
http://wiki.winehq.org/GitWine#head-ac963f86ee8616e2d0607735a80183b538379f84


今日の作業内容:発表資料作成 2h + SDPA コンパイル 1h
今日のランチ:ハーフレモン + おさつスナック + インスタント焼きそば + ミックスゼリー
明日の予測作業時間:1h



2013年8月19日月曜日

TeX で横書きのスライドを作成するときのメモ

TeX で横書きのスライドを作る必要があったので、そのステップをメモ書きで残しておく。

(1) documentclass に横書きの landscape を指定
\documentclass[landscape]{extbook}

(2) xdvi で開くときには、A4 の横である a4r を指定
xdvi -paper a4r sample.dvi

(3) pdf に変換するときにも横書きであることを示す -l を追加する。
dvipdfmx -l sample.dvi

今日の作業内容:原稿校正 2h
今日のランチ:らく 鶏の照り焼き定食
明日の予測作業時間:3h

2013年8月16日金曜日

計算式再検討

ちょっと間が空いてしまったが、計算式の再検討を始めている。
Newton 方向も分かり、だいぶ捗ってきた感じもあるが、まだまだ全体を構築するには何ステップかあるので、次のステップへも進めていきたい。

今日の作業内容:計算式再検討 1h
今日のランチ:味庵 豚肉細切りとにんにくの芽炒め
明日の予測作業時間:3h


2013年8月8日木曜日

原稿の校正

昨日までにラフに描いた原稿の校正をはじめてみた。
やはり、ラフに描いただけなので、修正点も数多い。
ここからどんどんと修正を進めていく必要がありそうだ。

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



2013年8月7日水曜日

原稿のだいたいの骨格を書く

今日のところで原稿のだいたいの骨格まで書いた。
最初はページ数が足りないのでは?と思ってスリムにしていたため、逆にページ数が余りそうな雰囲気になっている。
ここから全体を見直して書き足すべき部分を検討することにする。

今日の作業内容:原稿作成 3h
今日のランチ:ココナッツシュガー トムヤンクンラーメン
明日の予測作業時間:3h


2013年8月6日火曜日

原稿作成

文章にまとめる機会をいただけたので、原稿作成を少しずつ進めている。
内容が多いのでページ数に納めるために、かなりの減量が必要そうなので、とりあえずは文章を作ってみて内容を削っていくことにする。

今日の作業内容:原稿作成 3h
今日のランチ:たちばな 〆サバ
明日の予測作業時間:4h


2013年8月5日月曜日

YALMIP で SDPA データの生成

SDPA についての問い合わせで多いのが、SDPA sparse format にするのが大変、ということである。
これについては、YALMIP で簡単に生成できる、という風に返信することが多い。
例えば

http://users.isy.liu.se/johanl/yalmip/pmwiki.php?n=Commands.Savesdpafile

のサンプルを参考にすると、比較的簡単に生成できる。
これで保存したファイルを SDPA online solver で解く、というのがお手軽である。

SDPA 自身に YALMIP と同様のインターフェイスを持たせることも可能とは思うが、SDPA は計算エンジンでもあるため、インターフェイスと両方を同時に改善するのが難しい。
インターフェイスは YALMIP などの専門に任せて、SDPA 自身は計算速度を重視する、という方向も一つの方向だとは考えている。

今日の作業内容:打ち合わせ 4h
今日のランチ:味庵 豆腐の厚揚げと野菜の煮込み
明日の予測作業時間:5h


2013年8月2日金曜日

プロファイリング結果をグラフィックス表示

gprof による解析結果は、有益ではあるがちょっと見づらいので、グラフィックス表示方法を探してみた。
すると、valgrind + gprof2dot.py + graphviz という3段で、以下のような表示をすることができた。





gprof の場合は、複数の関数から同一の関数を呼び出した場合、呼び出し先の関数の合計だけが表示されて呼び出し元からどれくらい来るのかが分かりにくかった。
たとえば、func1() と func2() の両方から func3() を呼び出している場合に、func1 と func2 がどれだけ func3 に依存しているかが分かりにくかった。
今回の方法だと、こういった情報も分かるので解析が便利である。
ただ、valgrind を使うので、gprof に比べるとプロファイリングが10倍以上時間がかかるようになる。
(gprof でも gprof2dot は名前が示す通り処理できるのだが、自分がやった範囲では valgrind のときに上の func3 についてなどの情報を得られてない。)

具体的な方法としては、
1. valgrind を callgrind で実行する
$ valgrind --tool=callgrind ./sdpa-c6 example1.dat-s example1.result
2. gprof2dot.py で結果を処理し、さらに graphviz で画像に変換する
$ ./gprof2dot.py -f callgrind -w callgrind.out.[プロセスID番号] | dot -Tpng -o a.png

ここで、gprof2dot.py は 
の Download から入手できる。valgrind, graphviz は Debian 系なら
# apt-get install valgrind graphviz
でインストールできる。

今日の作業内容:SDPA-C チェック 3h + センサーのデータ再チェック 2h
今日のランチ:シッダルータ ダルカレー
明日の予測作業時間:5h


2013年8月1日木曜日

SDPA-C 打ち合わせ

SDPA-C の改良についての打ち合わせがあった。
いろいろと改良のアイデアをもらったので、それについて考えていくことになりそうだ。
まずは、今の状況でどのようなスペックなのかを再確認するために、いくつかプロファイリングをする必要がありそうだ。

今日の作業内容:SDPA-C 打ち合わせ 2h
今日のランチ:ココナッツシュガー カオムーデン
明日の予測作業時間:3h