[an error occurred while processing this directive]
[an error occurred while processing this directive]
分散集合オブジェクト開発メモ
- ソース
-
weekly report :
10/29,
11/12,
11/19,
11/26,
12/3,
12/10,
12/17
- [0-10)といったIndex集合を表す、IndexSet.ccを書いてみたが、遅いのではないかという懸念。
先生にbdd(二分決定グラフ)を教えてもらい、とりあえず
The BDD Libraryをインストールするも、使い方がよく分からず。
-
BDDについては、こんな素敵なサイトがあったので、こちらも参考にします。
-
オブジェクトをバイト列に変換するのは、とりあえずは人力だけど、それを補助するクラスとしてmsgObject.ccを書いた。これ使うと、MyObject.ccみたいにブジェクトがバイト列になる。
-
あと、RMIの実験として、単純にメッセージで予め决めたメソッドを呼び出すDATest.ccを書いた。
-
RMIの第一歩として、各プロセッサが[0-10)-[100-110)といった勝手なIndexSetを持ち、[5-120)とか指定した
メッセージを送信すると分散するオブジェクト間でRMIをリレーできるようにした、relay-test.ccを書いた。
-
各プロセッサでオブジェクトをnewして、それを登録できるようになった。
で、rmi_send関数で、オブジェクトを指定してメソッド呼び出しの指定ができる。
-
オブジェクトのleaveに対応した。
各プロセッサでmigrate_fraction(オブジェクト番号)とすると、断片がマイグレートする。
-
記述をC++っぽく整理して、ファイルもクラスごとに整理した。
あと、ロックの問題を、「配列の要素にアクセスする関数は、メッセージ経由で呼び出す」
とすることで簡便にかっこよく回避することができた。
あと、-lefenceのおかげで見付からなかったバグが発見できた。素敵。
-
ほんとはオブジェクトのnewをかっこよく書けるようにしたいけど、そろそろ具体的なアプリを書き始めた方が
いいのでは?とのアドバイスを受けてちょっと中断。
-
アプリケーション書きに着手。本当はちょっと複雑なのを書きたかったんだけど、結局SOR(偏微分方程式の数値解法)
になりました。それに伴い、IndexSetを二次元化する作業に着手。まずは長方形の集合演算を書きました。
-
次に配列データを共に持つRectDataSetを書いていたんだけど、ちょっと時間がなくなってきたのでトップダウンに変更。新しくsorリポジトリを作って、雛形を書き始める。
-
今までの処理系にRect関係を組み込むとき、どうも実装の汚さが目に付いて、IndexSetというインターフェースを実装するLinearIndexSetとRectIndexSet、みたいに書き換えたら、随分時間を食ってしまった。ついでにPack / Unpackも64bit対応。
-
些細なことだけど、pack / unpackするクラスはPackableを継承して、pack / unpackをプログラマが実装することで、見かけ上intと同じようにPackObjectに突っ込めるようになった。
-
LinearIndexSetのremove / getDiffの実装を効率良くした。というか、いじってたらちゃんと動かなくなってしまったので、新しく書いただけなんだけど。virtual classのIndexSetもだいぶすっきりした。
-
新しくしたLinearIndexSet / RectIndexSet / PackObjectの類を使ってシステムを動かしてみた。
一ヶ月ぶりにメッセージリレー & join & leaveを動かしました。色々いじりたくなる衝動を抑えて次へ進む。
-
RectDataSetの実装が一応完了。これを用いてSORMatrixを書き進める。
-
一応記述完了&逐次動いた。join()は出来たけどデッドロックします。がーん。
-
leave以外は動いた? と思ったら、三台で動かしたらバグリました。道のりは険しい。
-
joinはいちおちゃんと動きました。でもleaveにはちょっと本質的な問題が。土日でちょっと本腰入れて最後の開発するか。
-
leaveは延期して実行できるようにして、とりあえずleave / join動いた。
でも、65台で動かしてみると、joinすら動かない。
状態を出力させまくった結果、メッセージの到達順序がばらばらになっちゃうためと判明。
-
思い切って状態を減らしてみる。実はRMI関数は二つでいいことが判明。
-
join動いたー。とりあえず64台で測定。とはいえ論文提出は三日後…
[an error occurred while processing this directive]