やるよ〜:
ノートPCになんとか導入できた。音が鳴らないことが残った問題。あとは家と研究室でネットワークの設定が異なるので自動切り替え出来るようにしたいところ。
GRAPEのライブラリを入れたので、これでいつでもどこでもコード書ける。エディタが引っかかるような極悪環境でプログラムしなくてすむ♪
Treeを整理しよう。方向性としてはRootを複数用意すればそれに応じてTree構造を複数構築できるものにしよう。
TreeいうよりはWoods。
並列化を見越した改変なのだよ。
デスマーチ/
Wolfram|Alpha/
IT戦士 岡田有花リンク集/
Flash Earth/
Garage/
SDSS/
GOLDMine Galaxy On Line Database Milano Network/
Peanuts/
男達が後ろから撃たれるスレ 衛生兵を呼べ
tt-craft/
トムとジェリーの夏休み/
orz/
法治国家つまみぐい/
Happymetal ハッピーメタル/
MARK A. GARLICK'S SPACE-ART.CO.UK
ここはジョークアベニューです
ペリー
良くわからんな...<br>並列化するなら cpu ごとにそれぞれ勝手に maketree を実行するわけで、ROOT は一個でいいんじゃないかい? 粒子の種類ごとに tree を作る時には ROOT は複数必要だけど、並列化とは関係ないよね。
昨日の晩はなぜか書き込みできませんでした。<br>local tree と guest tree を用意してTree+GRAPEなんてのを考えています。<br>あとはメモリ節約しながらでっかい計算するように、こっそり実験しようとしていることにも ROOT と Tree 構造を複数用意できることが必要なのですじゃよ。
Guest tree... そういや、君の tree は既に存在する tree に粒子をプチプチと insert して行くって作り方じゃないもんね。<br>う〜ん、基本的に分散メモリにしてしまえばそんなにメモリの節約に頭を使う必要はないと思うのだけど。
insert にするといまのコードの持つ利点を残せないと思うのよね。がんばれば出来るんだろうけどいまのところいいアイディアがない。
まっきーも書いてるけど並列だと insert の方がいいぞ。なんつーか、active な粒子を communication buffer として確保した部分に(少しずつ)詰めて全 CPU に輸出するわけだ。で、普通は communication buffer には全粒子は入り切らないので何回か輸出して加速度をもらってきてというプロセスを繰り返すことになるんだけど、その度に tree を 1 から構成しなおすのは無駄でしょ。
もらってきたのを自分のトコに突っ込むのと、もらってきたので独立のtreeを新たに作って、ってのとだいぶ違うかな?<br>local treeは各ステップごとには作り直すけど communication したからといって更新はしないつもりなんだけど。<br>もうちょっと設計つめてみます。
えーと、多分どう communication をするかのイメージが違うんだ。<br>各 CPU ごとに local tree を構成してそれぞれの domain の粒子をサイクリックに交換しながら加速度を計算する土瓶好きぃのやり方は individual time step の場合はものすごく効率が悪いぞ。<br>僕が言ってるのは CPU ごとに local tree を構成して各 CPU は active particles を communication buffer に詰めて全ての CPU にブロードキャストするわけ。んで、それぞれの CPU 受け取った粒子を各自の local tree に insert して加速度を計算し、その加速度をもとの CPU に返してあげる。この段階でその持ち主の CPU は全 CPU から受け取った加速度を足し上げるわけね。これだと actve particle が一個しかないときは 1 x N_TASAK 分の communication で済む。
えーと、active particlesの扱い方はおんなじ方法を考えています。<br>で、active particles による tree を作ろうとするのは Tree+GRAPEのためなんですよ。<br>active particles tree を回りながら重力計算をする粒子を決めていって、local tree との相互作用を計算させようという魂胆。
あ、これあんまりよくないのかも。<br>つまり、あほみたいにでかい箱が出来てしまう危険性があるのではないかと。
これってどれ?
あぅ、一個飛ばして読んでしまった。<br>あまり良くないと思う。ただし、僕もこの方法で葡萄をどうやって効率的に使うかはまだ思いつかない。individual time step でなければ簡単なんだけど...
active particles の tree だね。でも、active tree の作り方、回り方に条件をかければ回避できるか。。。<br><br>最初思ったのは、たとえば、2個の粒子がすんごいはなれて active ですよー、ってなった場合。<br>いまのままでは、ある粒子以下の箱はもう分割しない、としているのでこの2つの粒子で作られる箱に接するすべての箱に入っている粒子が直接計算にまわされる、と思ったんですが。まぁ、そんだけの話です、回避方法はいくつもあるね。<br><br>話の腰を折ってしまって申し訳ない。
この方法ってのは僕が書いた方法の方ね。
んーとさ、local tree と active particles の tree ってのがあったとして、それが ovarlap しないかというと上の communication 方法だと実はするんだね。自分とこからの active particles が混じるわけだから。その時点で君の active particles だけで tree を作るというのは破綻すると思う。ま、色々工夫すればなんとかなるけど、確実に遅くなる方向だぞ。
いや、少なくとも破綻しないと思うよ。<br>同じ粒子分布に対して2本treeを作って片方を力を与える側、もう片方を力を受ける側にしたばあいでも問題ないはず。<br>Tree+GRAPEでは2重にtreeを回るけどまったく問題ないし。<br>local treeはあくまで力を与える側としてのみ存在するという前提なんですが、、、
うん、別に良さそうだね、それでも。つか、葡萄を使うなら insert するより簡単カモ。
つーわけで、ちょいと弄繰り回してみます。