Today's Access -
Yesterday's Access -
研究日誌・プログラム輪講編。
研究室配属直後の辛く、苦しいプログラム&輪講地獄を乗り越えた軌跡。
2009/6/25(THU)
今日はプロ輪の最終発表日でした。
なんだか思ってたよりもあっさりと終了した。質問には答えられる範囲でちゃんと答えられていたとも思う。
みんなもいい感じで終えられていたようで一安心。
が、卒研にスパコンが含まれるかもしれないというのは安心できないよね・・・。
そんなわけで、ここで研究日誌は一旦休止することにする。
みんなは院試勉強やるやろうし、しばらくは最後の輪講に向けてまったり勉強していくことにしよう。
おそらく、次に書くのは卒研が始まってからになるやろうな。
では、研究日誌・プロ輪編は終了しておく。
2009/6/24(WED)
今日はほぼ朝で実験は終了した。しかし、なんだか疲れた。
輪講
今日はNLP輪講。同期J君の発表。昨日わからんとか言ってたとこを、「もういいんちゃう?」って言ったけどなんとかなったみたいだw
基本的に何したいかはわかったから、それでいいと思う。
プロ輪
昨日の夜のうちに実験を素早くする方法を考えてて、結局スパコンに頼ることに。
そして、今日やったこと。
→スパコンでインライン化などの高速化を施した上、各パラメータで複数プログラムを実行した。単純に効率5倍!
- 実験結果を元に、ローカル・スパコン(MPI未使用)・スパコン(MPI使用)の速度実験
- 実験結果から資料を作成
- 発表練習・見直し・心構え
一応プロ輪は完了した。発表できるだけの資料は揃えたが、どれだけ突っ込みに耐えられるかは未知数だ。
とりあえずスムーズに発表が終わればいいなと、願うのみです。
そう。明日は待ちに待ったプロ輪の最終日。終わるというだけでうれしいです。もうなんとでもなれ。
2009/6/23(TUE)
今日は順調でした。自分だけ進んでるみたいなのが心苦しい。明日余裕があればお手伝いします。
輪講
今日はCV輪講。担当オレ。資料に不備がありすぎてしまった・・・。申し訳なかったです。
が、図がきれいにできたのはよかった。そして、質問がなかった。恐かったので助かったw
プロ輪
今日は同期O君に教えてもらった方法でプログラムを組みなおす。
結局今までやってたMPIの部分は使わず。泣けるで・・・。
では、今日やったこと。
- スパコン上のプログラムをMPI化(固有値計算のみ)
- ローカルでのkccaのパラメータ実験(正規化定数について)
- 最終発表の資料作成
実験にはかなり時間がかかっている。明日はかなりやりこまなければならないか。
が、それ以外にはあまりすることがないと思われる。資料を完璧に、発表練習をしっかりすることにしよう。
そこで、明日の課題。
- ローカルkccaのパラメータ実験継続
- 上記実験のパラメータを用いての速度実験(スパコン[MPI未使用]・スパコン[MPI使用])
- 発表資料完成(先生に添削をお願いする)
ということで、いよいよ明後日に迫ってまいりました最終発表。もう延期しないよね?
2009/6/22(MON)
なんか当日書くのを忘れていた。とりあえず、この日にやったことだけ書いておく。
この日、夜までスパコンが動かなかったためにほとんどなにもできなかった。
それと、雨という憂鬱さにはいくつになっても勝てません。
2009/6/19(FRI)
そして金曜が過ぎていきました。明日明後日は全くプログラムはできません。妄想するしかありません。
輪講
今日はAI輪講。前から興味深かったSVMの話もあったりで、ちょっと気合入ってたw
そこそこ理解はできたが、やっぱりムズイので使う時には復習は必須ですね。
それにしても、同期J君のしゃべりのトーンはラリホーですか?w
プロ輪
今日は終始MPIに努める。
昨日のうちにおおよそ必要な関数を作り上げはしたが、やはり実装ではうまくいかない。
とりあえず、やったことを書いてみる。
- ノード数とデータ数に基づいて、使用ノード数を決定する
- カーネル関数を求める部分を並列化
- kccaのパラメータ実験
こう書くとできてることがかなり少ない。なんてこった。
正直かなり手間取っている。とにかく配列の添え字がややこしくてよく間違えるから、大元ができていても実装完了しない。
それから、今回完成できなかったのは、逆行列を求めた後それを各プロセスに分割配布し、昨日作った行列計算関数に適用すること。
逆行列を求めること自体を並列化するには、無理そうな感じを受けたので今回は無視。ということで、分散して求めたカーネル行列をまとめなおすことには成功。
そこから、逆行列を求めることも成功。
問題は、「逆行列の分割配布→行列積計算」って部分。
これができれば、かなり進めることができるが、はてさてどうなることやら。
2009/6/18(THU)
言うてる間に木曜が終わった。本当は明日最終発表だったらしいよ?
輪講
今日は雑誌会。今日のは半分以上理解できたと思う。
でも、質問を考えようとするとあんまり浮かんでこない。結構人の話を鵜呑みにしてしまうところがあるからか。直さなければ。
それから、CV輪講の資料が完成した。眠たいときにでも見直すかな。
プロ輪
今日はスパコンが動きはじめたということで、MPI再開。
kccaのパラメータ実験も継続中。発表で使うかわからんけど、損はないと信じてる。
てことで、今日やったこと。
- MPIで「行列×ベクトル」を関数に
- MPIで「行列×行列」を関数に
- 更新していたkccaでスパコン上のkccaをアップデート
- スパコン上のデータセットのバグを修正(javaでのデータセット生成メソッドのバグを修正)
今日は特に問題も残っていない。
が、vectorの扱いに慣れない・・・。どこかしら添え字の定義やらなんやら間違えて、タイムロス。めんどくせー。
とにもかくにも、明日の課題。
- kccaのMPI化
- kccaのパラメータ実験
- CV輪講の資料見直し・理解
明日は今日のそのままの続き。土日はスパコンもローカルも使えないということで、それを踏まえて進めなければ。
・・・めんどくせー。
2009/6/17(WED)
プロ輪がまた延期になりました。しんどい期間がのびました。最初から覚悟しているのと、ギリギリで変えられるのでは精神的ダメージが違います。
そして、日曜の停電。どうしたいの?
輪講
今日はNLP輪講。隠れマルコフモデルというなんともわかりにくいところ。しかし、発表者のOくんの説明がわかりやすくて、思ったより理解できた。
実装はムリw
あと、今日はスパコンが使えないということだったのでCV輪講の資料作りばっかりしてました。もう9割完成。
しかし、理解はまだまだ。ちょっとずつやろう。
プロ輪
今日はスパコンが使えないということで、そっちは手をつけず。
が、やったことはちょっとある。
→やはり、ループでvectorなどを解放せずに何度も定義していたのがまずかったらしい。
実験・計算部分はすべて関数に落とし込み、メモリを逐次解放させるようにする。
→関数にしたことで、各ファイル毎での実験についてパラメータを簡単に変更できるように。
かなり片手間でやってました。明日も片手間で実験しながら色々しようと思う。
明日はスパコンが使えるようになるはずなので、MPIを試していくのが中心になるか。
ってことで、明日の課題。
- kccaのパラメータ実験を進める
- CV輪講の資料を完成
- MPIを進める(行列×行列の関数を作る)
昨日も書いていたとおり、オレの場合はMPIについての最大の目標は「行列×行列を行う関数」を作ることにある。
今日はなんにも考えてないので、昨日書いた枠組みから進んでない。
明日はなにか進むはず・・・。はず!
2009/6/16(TUE)
今日はなんかだるかった。わりには色々やってた。サボりとかキャッチボールとか・・・。
輪講
今日はCV輪講。来週のオレの発表につながる部分。なんとか理解できた。
そして、今日はほとんどCV輪講の準備を進めていた。半分はおわったかな。しかし、もっと理解を深めておかなければ。
プロ輪
今日はあんまりなんもやってない。なんでって、スパコンが使えないから。
スケジュールでは、今週はスパコンにかかりっきり!・・・ってなってるはずやったのに。明日も使えへんらしいな。
しかしながらも、今日やったこと。
- kccaをちょっとパラメータを変えて実験してみる。
→一括で実験できるようにしたところ、なんかメモリ関連のエラーが出ている。とりあえず、結果は出てるから今回は無視。
→例によって速度実験部分は白紙
- MPIで、「行列*ベクトル」のサンプルを元に「行列*行列」を作ってみる
→例によって動作実験はしてない
なんか散々やん・・・。とりあえず、明日はkccaのエラーを取り除くあたりしとこうかな。
そして、明日の課題。
→最悪一括実験は断念するか
→先生に添削してもらう→直す
今日とあんま変わらん感じで。が、こうなるとMPIやってる時間がマジでない。また期間延長って話が出てるけど、どっちにしても時間が足りんことに変わりはない。
一応、MPI化する際に欲しい感じの関数を考えておくことにはする。Foxはめんどいから断念するかも。
こんなんできたらいいなー、ってやつ。
vector<vector<double> > MM_prod(vector<vector<double> > X, vector<vector<double> > Y){
vector<vector<double> > Z;
・・・(MPIでたらったら~)
return Z;
}
細かい引数とかは追加・変更があるにしても、こんな感じでしておけば、現在行列同士の掛け算をしている部分を行列を引数にして差し替えるだけで並列化できると思う。
あとの問題は入力となる引数の分割の仕方。行列をどこで区切るかとかはノードの使い方で決まってしまうからそれを使えばいい形にできるけど、行列を導出するところでどこまで並列化できるかがポイントになりそうな予感。・・・そんなんいうてるけど、上に書いたのも中身考えてないし、どーしよーもない。
・・・ほんま、どーしよーもないわ。
2009/6/15(MON)
今日は特筆すべきことはない。ということが特筆すべきこと。
輪講
今日はプレ輪。いつもどおりユルイ感じでいい感じ。
今度、テクニカルの本を読もう。プレゼンも。あれは一読の価値があるよね。
プロ輪
wekaとkccaが完成。実験とかがやりやすいように改変は随時する。
にしても、スパコンが使えへんのは痛すぎる。ってか、プロ輪進まねぇよ。どーしたらええねん・・・。
にしても、今日やったこと!
- wekaのプログラムを完成(実行のみで10-fold cross varidationによる精度評価を行う)
- kccaのプログラムを完成(実行のみで10-fold cross varidationのデータを使ってラベル付けから、ファイル出力までを行う)
- 3つのデータセットについて試験的に実験(一応ノートにメモ)
- 最終発表のプレゼン資料を作り始める
なんだかんだで時間のかかる作業が多かった。来週はCVもあるし、平行してやらんと。
そして、明日の課題。
- 改変したkccaで、スパコン上のkccaをアップデート
- kccaのMPI化を進める
- 最終発表のプレゼン資料を進める
→目的
→実験結果
ほんまにスパコンはどーなってるねん。やることがなくなっちゃうんですけどー。
2009/6/13(SAT)
日曜が朝早かったために、土曜夜は早く寝て、日曜の執筆。とりあえずやったことだけでもまとまめておく。
プロ輪
基本的にwekaのプログラムを作っていく。そろそろ実験のための色々を仕上げなければ。
- kccaのファイル出力をwekaのプログラムへの入力形式に対応
- スパコンに上げたkccaに実行時間計測を追加
- kccaのスパコン上での動作を確認(ファイル入出力もOK)
- wekaのファイル入出力関数を整備
→スパコン用ファイル出力・kccaからのファイル入力
一応は進んでいる。が、MPIが思いのほか進んでいない。
しかし、今日見ていた限りではMPIはそこまで頑張らんでも、しっかり並列化できればそこそこいい結果になりそう。
FOXアルゴリズムはいまだによくわからんけど、使わんでもいいかな・・・?
とりあえず、明日の課題。
- wekaの分類器生成メソッドを完成
- 分類精度評価メソッドを作成
- スパコン上のkccaプログラムのMPI化に着手
- 最終発表の概要をまとめる
最後の1週間が始まる。死なない程度に頑張りまっしょい!!
2009/6/12(FRI)
今日はキャッチボールは軽くしかできんかった。みんなにもっとうまくなってもらいたい。
輪講
今日はAI輪講。色々な分類手法があるということがどんどんわかってきた。
細かい理解や使い方は実際使うときでよし!
プロ輪
今日は
Javaでの分類器のプログラムを重点的に。
色々試しながらってことでのプログラムになるから、仕様がどんどん変化してわけわからんくなってきた。
ファイルの整理がかなり大変だ。
ってことで、今日やったこと。
- 各分類手法を使うためのクラス・メソッドを作成(半教師付き学習による)
- 10-fold cross varidationのメソッドを整備
→ローカルのkcca・スパコンのkcca・kccaなしの3つのやり方で使えるファイルを出力する
- kccaを使う・使わないの場合のファイルの利用法の整理
- kccaのプログラムをスパコン用に加工
発表の概要についても先輩と話したので、ちょっと話をまとめることを考え始めないと。
てか、今日夕方からスパコンにジョブが投げられなかったのはなんで?誰かが占有してんのか?やめてよ・・・。
2009/6/11(THU)
ハッピーバースデー、オレ。祝ってくれたみなさんに感謝。
ちょっと早起きすることを心がけると、なんと心地のいい日か。晴れやったからってのもあるやろうが。
輪講
今日は雑誌会。話された内容については何してるかはわかった。が、先生がわからんとこはやっぱりわからん。
後期にはあれやるんかー。こわっ。
プロ輪
今日はkccaに戻る。以前ファイル出力が正常に動作しなかったが、今日は機嫌よくスイっといく。
・・・あのときのオレの苦悩はなんだったのか('A`)
やっぱり、あのときはいろいろ動かしたあとでメモリにキャッシュがたまったりなんかしてたらしい。・・・これってプログラムに問題あるような・・・・・・。
ってことで、今日やったこと!
- ファイル出力関数を確認→正常に動く
- 固有値計算を拡張(複数個の固有値を求めることに成功)
- 複数固有値を用いた類似度計算の関数を作成
- ランキング関数を複数固有値に対応・改良
- ランキング部分を関数に落とし込む→main関数がスッキリ
- ランキングを元に「正例・負例ファイル」と「ラベルなしファイル」の出力関数を作成
- 最初のファイル出力関数のバグを修正(表示が少しおかしかった)
- データ取得関数を修正(クラスの取得部分の正規表現を修正・データ取得時の読み込み条件を拡張)
- JavaにWekaを導入
- Wekaのサンプルプログラムの動作確認→精度:19/30
なんかたくさんしてるな。自分ではそんなにしてない気がするんだが。
ひとまず、kccaが完成したことに一安心。が、まだ問題はある。
- 正規化定数κ(精度が大分変わる)
- べき乗法の収束条件と最大反復回数
これについては、やっぱりまた論文を読み返さなければ。でも、とりあえず先に進む!
そこで、明日の課題!
- Wekaの仕様を確認
- 分類器を使うプログラムを作成
→分類器を訓練
→ラベル付け
→ラベルありファイル出力(確認用)
→さらに分類器を訓練
→評価ファイル出力
- kccaをスパコン仕様にし、スパコンにアップする
- 発表の概要を考える
仕様も含めて考えることはまだ多そう。土日は研究室に行けへんし、スパコンでできることを多くするためにkccaの加工が最優先か。
明日も今日の調子でいきまっしょい!
2009/6/10(WED)
今日はなんか疲れた。あんまり作業してないのに。なんでやろ。
輪講
今日はNLP輪講。なんかすげーわかりにくいところで、集中しすぎて燃え尽きた。
もうちょい気楽に受けるかな・・・。
プロ輪
今日はMPIばっかりやった。
スパコン講習を受け、基本的な考えが間違っていなかったことは確認。資料のpdfを送ってもらえることも約束できてよかった。
そして、行列計算をするアルゴリズムを読んで、載ってたサンプルを打ってみたが、サンプルが中途半端すぎて動かせない。
アルゴリズムの理解も進まない。
明日からは一旦MPIをやめてkccaに戻るかな。発表の概要も考えないかんし、やっとかな。
ちょっとアイデアも出てきたところやし。
てことで、明日は
- 固有値計算を最大以外も出せるように拡張
- その他の必要な関数を整備
→特に現在うまくいっていないファイル入出力の部分を重点的に
しっかり集中しなければ。しかし、気楽にいこう。イライラしちゃだめだよね。
2009/6/9(TUE)
最近研究室にいながらにして研究していない。いや、してるよ?してる!・・・進んでないだけだもん。
輪講
今日はCV輪講。まとめの天才かつ天才の輪講はマジパネェっすw
質問しまくり。理解はそこそこ。先生が「そこはほとんど使わないよw」だって。
もっとはよ言って・・・。
プロ輪
とりあえず昨日の問題に取り組んでみるがあまり解決せず。
今日やったことはあまりないけど、やったこと!
- データファイル書き出しの関数は後回し。コメントアウト。
- データセットを捏造して、所望の動きをしているか確認。が、よくわからず。精度がちぐはぐ。
それから、今日は担当の先生と先輩を交えてのミーティングをすることに。
やはり、重視すべきはスパコンを使いこなすことのようで、kccaは最悪できなくてもいいとか。
・・・できなくてもいい!?
いいえ、やりますよ。やりますとも。
課題に関しては、昨日と変わらないので、ここでは割愛。
てことで、重視すべきはスパコン→MPI。
今日は何してたってMPIやってたよ。明日はスパコンのスペシャリスト先生に頼み込んでの講義があるので予習。
とりあえず、早めに家に帰り、家からスパコンにログイン。作業ー。
成果をまとめたから見てもらうといいです。
スパコン講習でたくさん質問できるといいな。
2009/6/8(MON)
今日はかなり遊んでてしまった。反省。明日からはもうちっと気合入れます!・・・病まない程度に。
輪講
今日はプレ輪。オレの発表。もうちゃちゃっと終わらした。笑いのポイントも押さえて、いい感じ♪
が、誤字の多いこと、多いこと。気つけんと・・・。
プロ輪
今日はそんなに進んでないと思われますが、それなりに進んだような気がする。だって、また問題にぶち当たるくらいはやってるもん。・・・ぶち当たりたくない。
では、とりあえず今日やったこと。
- 類似度を求める関数を作成(前日の評価関数のこと)
- ランキング関数を作成
見た感じあんまり進んでない・・・。が、これはできたと思えただけのことで、実際にしたことはもう少しある。
問題が起きたのよ。起きた問題は以下。
→正例に判定されたものが実際には負例で、負例に判定されたものが実際には正例だった。ラベル付ける前の判定です。
ラベルは無視するっつってもこれはまずいだろ・・・。
- 最初に使っていたデータセットがラベルの種類が3つのものだったので、positiveとnegativeだけのものに変更
→正常動作せず・・・。最初に使ってたファイル以外、今日試したものはダメだった・・・。
具体的には、
・「正例ファイル」と「ラベルなしファイル」が正常に出力されず中身が見れない
・相関係数が小さすぎるときがある
・固有ベクトルがすべての要素が0の場合がある
1つ目の問題は、今日作ったランキング関数やら評価関数がどっかおかしいと思う。そう思う。思いたい。そのはず!・・・たぶん。
2つ目の問題は、ファイルの文字コードかと思う。一度少しだけ出力されたときに、データの部分だけ変な文字化け(変な文字が2文字だけ出てた)して、他のattributeの部分はすべて行間が広く表示されるという意味がわからんことに。ちょっと関係ありげ。以前javaでファイル入出力やってたときに同じことなったかな、ってね。確認してみる価値はありそう。
あとは、カーネル行列の逆行列を求めるときの正規化定数の設定をどうするかが問題になっているみたい。その値によって相関係数も若干変わってるし、そもそも逆行列が求まるかもこの値次第のようで。もう一回論文をしっかり見直そう。
また、固有ベクトルで類似度を計算しているが、勘違いして最大固有ベクトルだけでいいとおもったら、それは正準相関分析のお話。カーネルではいくつかいるとのこと。
メモリに気をつけて直しましょうか。これに関しても固有ベクトルはmペア必要ということでこのmの決め方を確認しなければ。
ということで、明日やること。
- 入力ファイルの文字コード確認
- ランキング関数・評価関数を確認
- 正規化定数について調べる
- 固有値計算の部分をmペア導出できるように拡張
- 上記に関連して、評価関数の改善
なんか進んでるはずやのに、やることが減らない。がんばれオレ。
水曜にはスパコン講習が開かれる。MPIについての特別講義だ。ちょっとぐらい予習をしとくかな。
2009/6/7(SUN)
今日はちょろっと研究室に顔出した。ちょろっとだけプログラムやった。
プロ輪
メモリのエラーが出ていたが、今回のは2重開放ではなく、単に確保して使ってないメモリを解放したことによるエラーだったらしい。
今回のプログラムでは固有ベクトルは最大固有値に対するものだけでよかったので、その方向で修正。
具体的には以下。
- べき乗法による固有値計算を最大固有値ひとつだけを求めるように変更
- 上記に伴って、様々な変数の型や代入方法などを変更
- kccaの処理部分を関数としてmainから除去
- ラベルの配列cの不具合を修正(ファイル書き出しができてなかった)
- 正例ファイルとラベルなしファイルの出力関数を作成
なんとか形になってきた。今後は以下。
- 評価関数の作成
- 評価関数によるランキング関数の作成
- ランキング後のデータ列で正例・負例ファイル・ラベルなしファイルの生成関数の作成
ここまでは明日のうちにやってしまいたい。
自分の希望では水曜までには金曜に詰めたところまで作りたいと思う。
まずは・・・願書だw
2009/6/5(FRI)
今日は昨日と打って変わって、のんびりしてた。そして7時台に帰るという奇跡。・・・もっと早く帰っていいはずだよね?
輪講
今日はAI輪講。まとめの天才2人の資料は短くて簡潔ですごかったが、講義中の説明がいまいち理解できず。
質問とかめっちゃしたから大丈夫だけど。
それと、昼飯あとの眠いときにプレ輪をまとめ終わる。印刷も完了。誤字脱字はないと思う!
プロ輪
今日は少し進めた。固有値計算の関数は初期値を設定してないものがあっただけで動かなかったというお粗末さ・・・。
それから、先輩に教えてもらいながらプログラムの仕様と今後の進め方を詰める。ちょっとまとめてみる。
- kccaへの入力ファイルは「正例ファイル」と「ラベルなしファイル」
・・・ただし、正例は1例のみ。ラベルなしファイルは、元のラベルありファイルをそのまま使ったもの。(プログラム内でラベルを無視して処理する)
- kccaの出力ファイルは「正例・負例ファイル」と「ラベルなしファイル」
・・・正例・負例ファイルは、kccaでのラベル付けによる正例と負例のみを記述したファイル。ラベルなしファイルは上記と同じもので、正例・負例以外のもの。
- また、出力ファイルはarff形式で出力する。(分類器の訓練はjavaでするため)
- 半教師付き学習はjavaのwekaで行う。入力ファイル形式はarff形式
- 「正例・負例ファイル」のみで分類器を訓練
- 作った分類器で「ラベルなしファイル」にすべてラベルをつけ「ラベルありファイル」を作る。
- 「正例・負例ファイル」と「ラベルありファイル」を使って分類器を再訓練。
kccaを使わない場合では、以下の流れ。上記同様、javaのwekaを使用。
- 最初の分類器を「正例ファイル(1例)」で訓練する。
- 訓練した分類器で「ラベルなしファイル」をラベル付けする。
- 「正例ファイル」と「ラベルありファイル」で再訓練。
- 評価に関しては、できれば「10-fold cross varidation」で行う予定。
やることがここにきてやっと明確になりました。来週は輪講の準備とかもないし頑張らねば。
しかし、まずはkccaのプログラムを完成させましょ。
目前の課題は以下。
- メモリに関するものであろうエラーを取り除く
- 相関係数による評価関数、ランク・ラベル付けの関数、正例・負例ファイルの出力関数
とりあえずはこんなもん。これができれば、今日詰めたことまでいく。
・・・そういえば願書も提出しなあかんねやったな
(゚ω゚)
2009/6/4(THU)
今日は久々、ちょー気だるい日だった。朝からだるいと思ったら・・・。
輪講
今日は雑誌会。NLP輪講のおかげで言いたいことがだいたいわかった、話の中に専門用語がありすぎてわからんことも多かったけど、輪講の効果はあるらしい。
プロ輪
今日は、全く進んでません。
気だるさと色々なイライラにやられて、やろうとしたけど手につかず。
期限が延びたみたいやし、まあいい。明日がんばろう。
やったことといえば、研究計画書とプレ輪の資料読んだりしただけ。
こんな日もあってもいいよね。
2009/6/3(WED)
できたと思った研究計画書にまさかのダメだし・書き直し。表現をぼかせ、だと。もう、いらんことさせんでくれ・・・。
輪講
今日はNLP輪講。助手先生のまさかの早期夏季休業を受け、学生のみに。議論は白熱。理解はそこそこ。
来週もまだ夏休みなんだってー。
・・・プロ輪のこと忘れてないよな?
プロ輪
昨日までに作り上げたプログラムを改良・追加実装。詳細は以下。
- 配列定義をすべてvectorに変更
- スパコンでboostが使えないことを確認
→ arff形式ファイルを、スパコンでも容易に読み込めるようにtxt形式に出力する関数を実装
- 逆行列を求める関数を実装
- 固有値を求める関数を実装中(デバッグ中)
vectorの使い方がいまひとつ。メモリを余計に使ってたりせんか心配。スコープ抜けたら自動開放してるらしいが、確認したほうがよさそう。
明日からの課題は以下。
- 固有値を求める関数を実装完了
- 相関係数でのランキング関数の実装
- ラベル付け関数の実装
- 評価関数の実装
ってもう進めるしかねーよw
明日は最悪でも固有値計算はできるようにならないとお話にならない。
周囲の進み具合もあまり芳しくない様子。自分に至っては、ここに来て詰まり始めてイラっときてます(#゚ω゚)
そこに来て、研究計画書。イラっ(#゚ω゚)
そして、明日は発表1週間前と目されるが、正式な通達はまだ。マジでプロ輪のこと忘れてないやろな?
・・・イラっ(#゚ω゚)
2009/6/2(TUE)
この日誌を書くことが習慣になりつつある。いいことだ。しかし、この日誌を書くときに初めて曜日を認識する。
・・・いいこと!?
輪講
今日はCV輪講。一回画像工学でやったことが多くて助かった。が、理解はしてない。納得はした。
・・・使う時に理解すればいいのよ。
プロ輪
今日は引き続きカーネル正準相関分析のプログラムを進める。
朝にジーニアスM先輩のご助言により、自分だけで作るよりかなりよいプログラムに。ありがとうございました!
進捗状況としては、こんな感じ。
- arff形式のファイル読み込みに対応(数値データのもののみ)
- カーネル関数(ガウスカーネル)実装
- カーネル行列(カーネル関数で求めた値を並べたもの)を求める関数を実装
いずれも動作は確認。が、正しい出力かをじっくり確認してないので、なんか検証法を考えなくては。
ファイル読み込みに関しては、M先輩の言った通りboostを使った正規表現で実装。他の部分でも使えそうなので、余裕があればアップグレードする。
しかし、boostがスパコンで使えるかは未確認。明日します・・・。
てことで、明日の課題。
- 実装した関数の改めての動作確認
- boostがスパコンでも使えるか(果ては、今のプログラムが動くか)確認
- 2次元配列での表現をvectorでの表現に書き換える(余裕があれば)
- 固有値計算の部分以降の実装を進める(明日で固有値計算は実装したい)
なんか、こうやって見るとやること多いな(゚ω゚)
研究計画書ができたのがせめてもの救い。願書かいていかな・・・。
2009/6/1(MON)
6月初日。もう6月か。・・・感慨に浸っている暇もないのか。
輪講
今日はプレ輪だけ。いつものことながら20分くらいで終わるのはいくらなんでも早すぎませんか?
僕にはそんな早くできる自信はないです・・・。
プロ輪
今日からカーネル正準相関分析に取り掛かる。
アルゴリズムとかは覚えてたけど、おおざっぱで細かい計算とかは・・・(゚ω゚)?
ってことですべて見直し。行列の行数とか列数とかから徹底的に見直し、やっとのことでまとめおk。
そして、プログラムに取り組む。
まずは、データの読み込み部分から。これがなくては動作確認もあったもんではないからね。
先輩にもらった.arff形式のファイルの読み込み部分を作った。
Classのラベルの部分がファイルによって若干違うのがウザい。いまだ未対応。明日やる。
・・・あ、もう明日になってるやん。
さーて、明日からの課題は~
- データ読み込み(Classの読み込み)完全対応
- ガウスカーネルの関数作成
- 行列計算のやり方の確認
の3本です。やれるとこまでやりましょー。
2009/5/29(FRI)
当日につけられなかったので、土曜日に書く。さすがにねみー。
輪講
今日はAI輪講の発表。なんかすごいノド乾いててやばかった。
まとめる作業はあまりやってなかったので長くなり、案の定「もっと短く」と言われました。
がんばります…。
プロ輪
今日はほとんど手をつけず。
が、MPIが稼動することは確認。仕様等はまだよくわかってません。これからこれから。…これからなぁ。
んで、今日はなにしててんって研究計画書を書いていた。先輩の去年のものを参考にさせてもらいながら書くものの…骨が折れる。
院の2年間を賭けた壮大な嘘を書くには、それなりに練らないときついようです。面接もあるしねー。
とにかく土日は適度に休みたいと思います。誰かよく眠れる方法知らんかなー。
2009/5/28(THU)
昨日は寝つきが最悪だった。横になってから1時間寝れんて・・・。
輪講
今日は雑誌会。なんとなく話はわかったし、質問もしてみようかと思ったら、3賢人に先に質問された。
「もっと質問引き出せよw」ってボスはおっしゃった。全部言われたのにどうしろとw
プロ輪
今日もOpenMPに明け暮れる。
の、前に。その効果がいまひとつわからないということで作ってたシェルスクリプトも利用した平均計算時間計測を2桁の実行回数が可能なように拡張。
コンパイルから、結果表示まで一括処理はちょー楽w
エラーが表示されんことが難儀やけど、そこはまた考えよう。それくらいなら逐一見てもいいし。
これが、一応の形になったところでOpenMPに戻る。
何度も頭を悩ませていただけあって、そこそこ掴めてきたか。もうちょっと見直せば、並列処理できるところはまだありそう。
配列とメモリーの関係には要注意。
そして、明日の課題は引き続き。
- MPIの利用
- OpenMPの効果の判断(実装込み)
今のところ、OpenMPで2%ほどの速度改善。正味、2次元2組の10万個のデータではスパコン使うとミリ秒単位なんで不毛に思えてくる・・・。
2009/5/27(WED)
今日は6時・7時・8時に目が覚めた。変な夢を見た。また、病み始めてきた。早っ。
輪講
今日はNLPの発表。なんとか問題なくクリア。が、思った以上に誤字脱字多し。俺のボケ。
金曜にはAIの発表だ。あんなんの誤字脱字が見抜けるかー。
プロ輪
今日もOpenMPの実装を試みる。
と、なかなか速くならない。どころか遅くなる。なして(゚ω゚)?
調べてみると、スレッドでの並列はいいけれども、メモリアクセスの時点で不具合が生じていることがあるとか。
てことで、改善。ちょっと速くなった。
だがしかし。
実行するたびに実行時間に結構差がでる・・・。そこで、差があるなら平均をとろう!
ということで、新たなプログラムとシェルスクリプトをいじって平均実行時間を見られるようにした。
これで、今後の評価もしやすくなった。
今後の課題はいろいろ追加。
- MPIの利用
- 並列化の有効な場合、逆効果な場合を把握する
スレッドのみの並列化には限界があるよう。ノードでの並列化を考えていかねばいけないらしい。
2009/5/26(TUE)
1時までネット麻雀をした後の朝。
今日はまたダルい!あそびたいー。
輪講
CV輪講は内容が抽象的で、実像が掴めない。何がしたいとかはわかったけど、具体的な部分は使うときでいいや。
明日はNLP輪講の発表。ということで、見直し………誤字脱字が多い…。俺のアホ。
プロ輪
実験結果をすこしづつ貯めていこうか。プログラムの改変具合と共に。
これに関しては、研究のほうに書いていこうか。
今日は終始上のことを踏まえて、OpenMPによる並列高速化を検証していった。
基本的にfor分ループの並列化を試していたが、効果的なところもあれば、やはり逆に遅くなったり。
ぐちゃぐちゃのループを無理やりバラして並列化するも、やはりものによる。
あまりスパコンのスペック、特に並列可能なスレッド数にあまり着目できていなかったかも。
「なんも書かんかったら、最大スレッド数やしなー」
って思ってたけど、スレッドの割り振りは考えず。これこそが考え物か。
今後の課題は、
- for文以外の並列処理できるものを並列化する
- 並列化するときの、変数の割り振り(特にshareかprivateか)などを見極める
- 同期処理の必要なところは?
教授に「MPIの方は?」って言われましたが、そんな余裕ないっす。てか、あれは1台のパソコンで有効なの?俺はまだ知りませぬ。
3重ループって並列化できひんのー?
…頭の処理が並列化できればいいのに。
2009/5/25(MON)
インフル休講明け1日目。
マスク姿の人がちらほら。推薦入試の願書を受け取りにいく。
輪講
NLP輪講の資料見直し終了。印刷もばっちり。
AI輪講の資料作成(校正)。まだ、内容をまだ十分理解できず。が、資料は完成。要見直し。図が汚い…。
プロ輪
進捗状況を先輩に報告。「結構進んでるやん」って言われた。
だがしかし。だがしかしたかし。
疑問いっぱい。不安いっぱい。お腹は減った。
ここからは真面目に。
- 正準相関分析のプログラムの理解は大体済む。
- octaveライブラリをスパコン上で使用可能か検証するつもりではいるが、その必要性は?
というのも、ライブラリを使うと、行列計算における配列やループの並列処理をすべてライブラリにたよることになるので、スパコンによる恩恵を得られるのかわからないというもの。ライブラリの中身もしてくれんのかなー。
- カーネル正準相関分析については、現在の正準相関分析のプログラムを応用すればなんとか作れそう。まだ、着手する気は起きていない。
- 先に、正準相関分析のプログラムをサンプルとして、スパコン上での最適化の方法をしっかりと検討していく。
現在使用可能なものは、-fastsse、-Mipa=inlineである。
Mconcurでの自動並列化ではSegmentation Faultで結果が出ず。OpenMPによる並列箇所の指定が必要だ。
#bf
最終更新:2009年09月29日 20:16