岩澤全規 理化学研究所 計算科学研究機構 粒子系シミュレータ研究チーム 2015年7月22日 AICS/FOCUS共催 FDPS講習会

Slides:



Advertisements
Similar presentations
地図の重ね合わせに伴う 位相関係の矛盾訂正手法 萬上 裕 † 阿部光敏* 高倉弘喜 † 上林彌彦 ‡ 京都大学工学研究科 † 京都大学工学部 * 京都大学情報学研究科 ‡
Advertisements

Problem C: Grated Radish ~大根おろし~. 成績 Submit 数: 0 Accept 数: 0 問題セットの中で最難問題なので解けな くても仕方が無いかなと思いつつ, 1 チー ム位 submit して欲しかった.
ソフトウェア工学 理工学部 情報システム工学科 新田直也. 演習問題 1 の解答例  入庫処理の DFD 酒屋の在庫問題の DFD( 入庫処理 ) 更新情報 在庫ファイル 更新処理 倉庫係 在庫不足リスト 在庫ファイル 出庫指示書 新規出庫 判定 出庫指示書 作成処理 出庫依頼 積荷票.
アルゴリズムとデータ構造 第2回 線形リスト(復習).
区間グラフにおける区間表現からMPQ-treeを効率よく構成するアルゴリズム
東京大学大学院 情報理工学系研究科 コンピュータ科学専攻 金田研究室 工藤 誠
Chapter11-4(前半) 加藤健.
自己重力多体系の 1次元シミュレーション 物理学科4年 宇宙物理学研究室  丸山典宏.
Handel-Cによる       エアホッケー.
オブジェクト指向プログラミング(2) OOPの三大要素 「クラス」「ポリモーフィズム」「継承」
分散遺伝的アルゴリズムによる各種クラスタのベンチマーク
JavaBeans とJSP データベース論 第5回.
階層的境界ボリュームを用いた 陰関数曲面の高速なレイトレーシング法
プログラミング入門2 総合演習課題 2008年 1/7, 1/21 実施 これまでの講義内容についての腕試し
(B2) 親: minami, kazuki 多様な認証機器に対応する 認証システム (B2) 親: minami, kazuki.
アスペクト指向プログラミングを用いたIDSオフロード
MPIによる行列積計算 情報論理工学研究室 渡邉伊織 情報論理工学研究室 渡邉伊織です。
二分探索木によるサーチ.
京都大学大学院医学研究科 画像応用治療学・放射線腫瘍学 石原 佳知
プログラム実行履歴を用いたトランザクションファンクション抽出手法
Occam言語による マルチプリエンプティブシステムの 実装と検証
その他の図 Chapter 7.
半無限領域のスペクトル法による竜巻を模した渦の数値実験に向けた研究開発
Λハイパー核の少数系における荷電対称性の破れ
MPIとOpenMPを用いた Nクイーン問題の並列化
オブジェクト指向プログラムにおける エイリアス解析手法の提案と実現
Jh NAHI 横田 理央 (東京工業大学) Hierarchical low-rank approximation methods on distributed memory and GPUs 背景  H行列、H2行列、HSS行列などの階層的低ランク近似法はO(N2)の要素を持つ密行列をO(N)の要素を持つ行列に圧縮することができる。圧縮された行列を用いることで、行列積、LU分解、固有値計算をO(NlogN)で行うことができるため、従来密行列の解法が用いられてきた分野では階層的低ランク近似法
卒論進捗発表(1) 10/ 山崎孝裕.
中性子干渉実験 2008/3/10 A4SB2068 鈴木 善明.
第14章 モデルの結合 修士2年 山川佳洋.
研究課題名 研究背景・目的 有機エレクトロニクス材料物質の基礎電子物性の理解 2. 理論 3. 計算方法、プログラムの現状
通信機構合わせた最適化をおこなう並列化ンパイラ
実行時情報を用いて通信を最適化するPCクラスタ上の並列化コンパイラ
Webプロキシ HTTP1.0 ヒント CS-B3 ネットワークプログラミング  &情報科学科実験I.
超並列宇宙プラズマ粒子シミュレーションの研究
先進的計算基盤システムシンポジウム SACSIS2007併設企画 マルチコアプログラミングコンテスト 「Cellスピードチャレンジ2007」
Data Clustering: A Review
開放端磁場における低温プラズマジェットに関する研究
応用課題 8.太陽風磁気圏相互作用 ベクトル化とベクトル並列化(MPI)の3次元グローバルMHDコードを用いて、SUNワークステーションとベクトル並列型のスーパーコンピュータ Fujitsu VPP5000で太陽風と地球磁気圏相互作用のシミュレーションを行い、惑星間磁場(IMF)が北向きと南向きの場合の磁気圏構造を調べる。図形処理として、PostScript言語を用いた断面図や3次元磁力線の描画、VRMLを用いた3次元可視化を実行する。
K核に関連した動機による K中間子ヘリウム原子X線分光実験の現状 理化学研究所 板橋 健太 (KEK-PS E570 実験グループ)
ILC実験における ヒッグス・ポータル模型での ヒッグス事象に関する測定精度の評価
階層的境界ボリュームを用いた 陰関数曲面の高速なレイトレーシング法
不確実データベースからの 負の相関ルールの抽出
バイトコードを単位とするJavaスライスシステムの試作
CGと形状モデリング 授業資料 1,2限: 大竹豊(東京大学) 3,4限: 俵 丈展(理化学研究所)
GW space-timeコードの大規模な有機-金属界面への適用に向けた高効率化
プログラミング入門2 総合演習課題 2008年 12/22(月), 2009年 1/14(水) 実施 これまでの講義内容についての腕試し
1-3 UMLの図(ダイアグラム) コンポーネント図 システムの物理的な構成を表現 ソフトウェアコンポーネントの依存性を表現
UMLの概要とオブジェクト指向の基本概念
わかりやすいパターン認識 第7章:部分空間法  7.1 部分空間法の基本  7.2 CLAFIC法                  6月13日(金)                  大城 亜里沙.
★C++/オブジェクト指向実践企画★ Othelloゲーム作成
マイグレーションを支援する分散集合オブジェクト
プロジェクト演習 知能情報学部 新田直也.
自己組織化マップ Self-Organizing Map SOM
高精細計算を実現するAMR法フレームワークの高度化 研究背景と研究目的 複数GPU間での袖領域の交換と効率化
全体ミーティング (5/23) 村田雅之.
C#プログラミング実習 第3回.
Javaによる Webアプリケーション入門 第4回
社会の情報インフラストラクチャとして、高性能コンピュータおよびネットワークの重要性はますます増大しています。本研究室では、コンピュータおよびネットワークの高速化を狙いとする並列・分散情報処理の科学と技術に関する研究に取り組んでいます。効率のよいシステムの実現を目指して、下記の項目を追求しています。 ◇コンピュータアーキテクチャ.
「マイグレーションを支援する分散集合オブジェクト」
メソッドの同時更新履歴を用いたクラスの機能別分類法
アルゴリズムとデータ構造1 2009年6月15日
理工学部情報学科 情報論理工学研究室 延山 周平
MPIを用いた並列処理計算 情報論理工学研究室 金久 英之
アルゴリズムとデータ構造 2010年6月17日
ソフトウェア工学 知能情報学部 新田直也.
MPIを用いた 並列処理 情報論理工学研究室 06‐1‐037‐0246 杉所 拓也.
分散メモリ型並列計算機上での行列演算の並列化
荷電粒子の物質中でのエネルギー損失と飛程
計算機プログラミングI 第5回 2002年11月7日(木) 配列: 沢山のデータをまとめたデータ どんなものか どうやって使うのか
Presentation transcript:

岩澤全規 理化学研究所 計算科学研究機構 粒子系シミュレータ研究チーム 2015年7月22日 AICS/FOCUS共催 FDPS講習会 FDPSのAPIと内部構造 岩澤全規 理化学研究所 計算科学研究機構  粒子系シミュレータ研究チーム 2015年7月22日 AICS/FOCUS共催 FDPS講習会

構成 FDPSの実装方針 FDPSを用いた粒子シミュレーションの流れ。 まとめ 領域分割 粒子交換 相互作用計算 ツリー構造 相互作用に必要な粒子交換 Barnesベクトル化 まとめ

FDPSの実装方針 内部実装の言語としてC++を選択 並列化 分散メモリー環境(ノード間):MPI 共有メモリー環境(ノード内):OpenMP FDPSが提供するAPIは並列化されており、ユーザーは並列化を意識してコードを書く必 要がない。

FDPSを用いた粒子シミュレーションの流れ 計算領域全体を分割する。 計算領域に合わせて粒子を再配置する。 各プロセスが担当する粒子への相互作用を計算する。 相互作用の結果を使って粒子の情報を更新する。 FDPSは手順1,2,3を担当。 手順1,2,3に対応したクラスがある。 DomainInfoクラス: 領域のデータを持ち、領域分割を行う。 ParticleSystemクラス: 粒子のデータを持ち、粒子交換を行う。 TreeForForceクラス: 相互作用の計算を行う。 ユーザーはこれらのクラスのインスタンスを作り、メンバ関数を呼び出すことでそれ ぞれの処理を行う。

FDPSを用いた粒子シミュレーションの流れ 計算領域全体を分割する。 計算領域に合わせて粒子を再配置する。 各プロセスが担当する粒子への相互作用を計算する。 相互作用の結果を使って粒子の情報を更新する。 FDPSは手順1,2,3を担当。 手順1,2,3に対応したクラスがある。 DomainInfoクラス: 領域のデータを持ち、領域分割を行う。 ParticleSystemクラス: 粒子のデータを持ち、粒子交換を行う。 TreeForForceクラス: 相互作用の計算を行う。 ユーザーはこれらのオブジェクトを作り、メンバ関数を呼び出すことでそれぞれの処 理を行う。

領域分割と粒子交換 FDPSでは領域の分割にMulti-Section法 を採用(Makino2004) x軸方向にそって分割 y軸方向にそって分割 z軸方向にそって分割 プロセス数が2のべき乗であることを要求しな い。 領域は各プロセスからサンプルした粒子を 使って計算負荷が均等になる様に決める。 APIはDomainInfo::decomposeDomainAll() 新しい領域に合わせて粒子の交換を行う。 APIはParticleSystem::exchangeParticle()

FDPSを用いた粒子シミュレーションの流れ 計算領域全体を分割する。 計算領域に合わせて粒子を再配置する。 各プロセスが担当する粒子への相互作用を計算する。 相互作用の結果を使って粒子の情報を更新する。 FDPSは手順1,2,3を担当。 手順1,2,3に対応したクラスがある。 DomainInfoクラス: 領域のデータを持ち、領域分割を行う。 ParticleSystemクラス: 粒子のデータを持ち、粒子交換を行う。 TreeForForceクラス: 相互作用の計算を行う。 ユーザーはこれらのオブジェクトを作り、メンバ関数を呼び出すことでそれぞれの処 理を行う。

相互作用の計算 FDPSでは相互作用を短距離力型と長距離 力型の2つの型に分けている。 短距離力型: 分子間力の様に遠くの粒子の寄与が無視できる 場合。 流体シミュレーションでは、物理量は近傍粒子の 重ね合わせで表現されるため、近距離力型。 長距離力型: 重力やクーロン力の様に遠くの粒子の寄与が無 視できない場合。 遠くの粒子からの寄与は小さい為、粒子をまとめ て計算(Barnes-Hut tree法)。 力の種類はTreeForForceクラスのテンプレート引数として与える。 どちらの場合も粒子を木構造で管理する事で高速に計算可能

並列計算機における相互作用計算の手順 (Makino2004, Ishiyama et al.2009) 自分が担当する粒子からツリー構造を作る。 ツリー構造を使って相互作用に必要な粒子を交換する。 送られてきた粒子情報を元にツリーを再構築する。 ツリー法を使って力の計算を行う。 TreeForForce::calcForceAllAndWriteBack()で手順1-4全てが実行され る。 FDPSでは全ての手順でOpenMPによる並列化がされている。

並列計算機における相互作用計算の手順 (Makino2004, Ishiyama et al.2009) 自分が担当する粒子からツリー構造を作る。 ツリー構造を使って相互作用に必要な粒子を交換する。 送られてきた粒子情報を元にツリーを再構築する。 ツリー法を使って力の計算を行う。 TreeForForce::calcForceAllAndWriteBack()で手順1-4全てが実行され る。 FDPSでは全ての手順でOpenMPによる並列化がされている。

相互作用に必要な粒子の交換 各プロセスが他プロセスが相互作用する のに必要な粒子をツリー構造を用いて探 査し送信する。 長距離力では遠い粒子からの寄与はまとめる。 短距離力では、近傍の粒子のみ持ってくる。 受信した粒子と担当している粒子で再び ツリー構造を作る。 各セルは各プロセスが担当する計算領域を表す。

並列計算機における相互作用計算の手順 (Makino2004, Ishiyama et al.2009) 自分が担当する粒子からツリー構造を作る。 ツリー構造を使って相互作用に必要な粒子を交換する。 送られてきた粒子情報を元にツリーを再構築する。 ツリー法を使って力の計算を行う。 TreeForForce::calcForceAllAndWriteBack()で手順1-4全てが実行され る。 FDPSでは全ての手順でOpenMPによる並列化がされている。

相互作用の計算 Barnes の方法を使う。(Barnes 1990) 1粒子毎にツリーをたどるのではな く、近傍にいる複数の粒子をまと めてツリーをたどる。 ツリーをたどる回数が減らせる。 複数の粒子が同じ粒子群と相互 作用するため、SIMD化が可能。

まとめ FDPSは以下の流れで粒子シミュレーションを実現する。 領域分割 粒子交換 相互作用計算 MS法 APIはDomainInfo::decomposeDomainAll() 粒子交換 APIはParticleSystem::exchangeParticle() 相互作用計算 Barnesベクトル化したツリー法により計算 APIはTreeForForce::calcForceAllAndWriteBack()

予備スライド

ツリー構造の作り方 ツリーセルの中に13粒子。 セルの中の粒子数がある粒子数以下になるまで、セルを分割。 ここでは、1粒子になるまで分割。

ツリー構造の作り方

ツリー構造の作り方

ツリー構造の作り方

短距離力の計算 ツリーをたどり、ツリーセルが力を計算したい粒子から十分遠ければ、ツリーをたどるのをやめる。近ければ更に深く探査する。

長距離力の計算 ツリーをたどり、ツリーセルが力を計算したい粒子から十分遠ければ、そのセル内に入っている粒子をまとめて評価。近ければ更に深く探査する。 十分遠いかどうかの判定は、ツリーセルの見込み角を使う。 十分遠い: R > l/θ (R:セルと粒子の距離、 l:セルの長さ、 θ:見込み角)