グリッド環境に適した並列組み合わせ最適化システムjPoPにおける分枝限定法の実装

Slides:



Advertisements
Similar presentations
1 プリミティブ Web サービスの 入出力データに関する一考察 2005 年 3 月 21 日 松江工業高等専門学校 情報工学科 奈良先端科学技術大学院大学 情報科学研究科 越田高志 電子情報通信学会 2005年総合 大会.
Advertisements

多目的GAに対する パレート最適個体の分布制御 九州大学大学院工学府知能機械システム専攻徳井 宏司.
OWL-Sを用いたWebアプリケーションの検査と生成
Web アプリをユーザー毎に カスタマイズ可能にする AOP フレームワーク
モバイルエージェントシステムの実装 エージェント移動(状態とコードの一括移送) エージェント移動の特徴 システム構成 エージェントプログラム
遺伝的アルゴリズムにおける ランドスケープによる問題のクラス分類
MPIを用いたグラフの並列計算 情報論理工学研究室 藤本 涼一.
グローバルコンピューティング環境における遺伝的アルゴリズムの検討
クラスタの構成技術と クラスタによる並列処理
最新ファイルの提供を保証する代理FTPサーバの開発
PCクラスタにおける2個体分散遺伝的アルゴリズムの高速化
谷村 勇輔 (同志社大学大学院) 廣安 知之 (同志社大学) 三木 光範 (同志社大学) 青井 桂子 (同志社大学大学院)
DNASシステム上のアプリケーション起動シーケンスのための基盤であるdsh部分の性能評価
アルゴリズムとプログラミング (Algorithms and Programming)
P,Q比が変更可能なScaLAPACKの コスト見積もり関数の開発
分散遺伝的アルゴリズムによる各種クラスタのベンチマーク
福盛 秀雄, 浜中 征志郎, 菅原 健一, 吉川 潤, 中山 周平 早稲田大学 村岡研究室
ネットワーク性能に合わせた 分散遺伝的アルゴリズムにおける 最適な移住についての検討
同期的にアドバイスを活性化できる分散動的アスペクト指向システム
グリッド環境に適したJava用階層型実行環境Jojoの設計と実装
ユーザ毎にカスタマイズ可能な Web アプリケーション用のフレームワークの実装
入出力データ型に透過な Webサービス動的実行システム 松江工業高等専門学校 情報工学科 越田高志 情報処理学会第68回全国大会
IPv6アドレスによる RFIDシステム利用方式
MPIによる行列積計算 情報論理工学研究室 渡邉伊織 情報論理工学研究室 渡邉伊織です。
大阪大学 大学院情報科学研究科 博士前期課程2年 宮原研究室 土居 聡
大阪市立大学 学術情報総合センター 大西克実
ソフトウェア工学 知能情報学部 新田直也.
MPIを用いた並列処理 ~GAによるTSPの解法~
アルゴリズムとプログラミング (Algorithms and Programming)
オブジェクト指向 プログラミング 第十一回 知能情報学部 新田直也.
暗黙的に型付けされる構造体の Java言語への導入
蛋白質立体構造の進化的解析のための Ninf版並列MGGとその性能評価
オーバレイ構築ツールキットOverlay Weaver
オブジェクト指向プログラムにおける エイリアス解析手法の提案と実現
ユーザ毎にカスタマイズ可能な Webアプリケーションの 効率の良い実装方法
モデルの逆解析 明治大学 理工学部 応用化学科 データ化学工学研究室 金子 弘昌.
Jh NAHI 横田 理央 (東京工業大学) Hierarchical low-rank approximation methods on distributed memory and GPUs 背景  H行列、H2行列、HSS行列などの階層的低ランク近似法はO(N2)の要素を持つ密行列をO(N)の要素を持つ行列に圧縮することができる。圧縮された行列を用いることで、行列積、LU分解、固有値計算をO(NlogN)で行うことができるため、従来密行列の解法が用いられてきた分野では階層的低ランク近似法
実行時情報に基づく OSカーネルのコンフィグ最小化
通信機構合わせた最適化をおこなう並列化ンパイラ
進化的計算手法の並列計算機への実装 三木 光範
Grid環境に適した並列組み合わせ最適化システムの提案
グリッド向け実行環境Jojo を用いた遺伝的アルゴリズムによる蛋白質構造決定
東京工業大学 情報理工学研究科 数理・計算科学専攻 千葉研究室 栗田 亮
連続領域におけるファジィ制約充足問題の 反復改善アルゴリズムによる解法 Solving by heuristic repair Algorithm of the Fuzzy Constraint Satisfaction Problems with Continuous Domains 北海道大学.
オブジェクト指向 プログラミング 第十ニ回 知能情報学部 新田直也.
サポートベクターマシンを用いた タンパク質スレッディングの ためのスコア関数の学習 情報科学科4年 81025G 蓬来祐一郎.
片方向通信路を含む ネットワークアーキテクチャに於ける 動的な仮想リンク制御機構の設計と実装
Peer-to-Peerシステムにおける動的な木構造の生成による検索の高速化
ナップサック問題 クマさん人形をめぐる熱いドラマの結末.
アルゴリズムとプログラミング (Algorithms and Programming)
「マイグレーションを支援する分散集合オブジェクト」
マイグレーションを支援する分散集合オブジェクト
ソフトウェア工学 知能情報学部 新田直也.
高精細計算を実現するAMR法フレームワークの高度化 研究背景と研究目的 複数GPU間での袖領域の交換と効率化
「マイグレーションを支援する分散集合オブジェクト」
サブゼミ第7回 実装編① オブジェクト型とキャスト.
表紙 分散遺伝的アルゴリズムのための 新しい交叉法.
理工学部情報学科 情報論理工学研究室 延山 周平
ユビキタスコンピューティングの ための ハンドオーバー機能付きRMIの実装
状況に応じて適切な 例外処理が行なえる アスペクト指向分散環境実験の 支援ツール
プログラム分散化のための アスペクト指向言語
MPIを用いた並列処理計算 情報論理工学研究室 金久 英之
統合開発環境のための プログラミング言語拡張 フレームワーク
コストのついたグラフの探索 分枝限定法 A*アルゴリズム.
エイリアス関係を考慮した Javaプログラム用静的スライシングツール
ソフトウェア工学 知能情報学部 新田直也.
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
MPIを用いた 並列処理 情報論理工学研究室 06‐1‐037‐0246 杉所 拓也.
オブジェクト指向言語における セキュリティ解析アルゴリズムの提案と実現
プログラミング 2 静的変数.
Presentation transcript:

グリッド環境に適した並列組み合わせ最適化システムjPoPにおける分枝限定法の実装 秋山 智宏*1, 中田 秀基*2*1, 松岡 聡*1*3, 関口 智嗣*2 *1東京工業大学 *2産業技術総合研究所 *3国立情報学研究所

グリッド(Grid)とは 地球規模でのデータとコンピュータの共有 高速ネットワーク上のグリッド基盤 スライドオリジナル 下條氏@阪大より グリッド(Grid)とは 地球規模でのデータとコンピュータの共有 ネット上のさまざまな計算機を、必要なときに、必要な数(多数)使える 高速ネットワークによって可能に 今までにない超大規模な計算から、大量の計算や、大規模なデータ処理 高速ネットワーク上のグリッド基盤

グリッド上で組み合わせ最適化問題を解く研究が多く行われている 本研究の背景 組み合わせ最適化問題 多次元パラメータ関数の最適値を求める スケジューリング、設計問題、生産計画、バイオインフォマティックスなどの実社会において応用範囲が広い グリッドとの親和性 実社会で求められる問題を解くには膨大な計算量が必要 自明な並列性が大きく、実行粒度の調整が容易 グリッド上で組み合わせ最適化問題を解く研究が多く行われている

関連研究 並列化ライブラリ 遺伝的アルゴリズム:PGAPack[98, ANL],OO-library[M.Bubak],etc 分枝限定法:PUBB[96,Y.Shiono],ZRAM[99,A.Brungger],etc その他:Popkern[01,横山ら] →PVMやMPIで実装されたものが多く、クラスタやワークステーションを対象、ポータビリティが低い、計算機のヘテロ性に対応してない グリッド技術 MW(Master-Worker)[00,J.-P.Goux] グリッド上でマスタ・ワーカ形式のアプリケーションを容易に実行するためのフレームワーク Condorをリソース管理に使用 →ユーザが最適化アプリケーション全てを実装しなければならない

グリッドRPC システムによるグリッド化 グリッド RPCシステム Ninf-1による最適化アプリケーションの実装 BMI固有値問題[02, 合田ら] 半正定値計画問題(SDP)[01, 藤沢ら] タンパク質構造決定[03, 小野ら] 既存のグリッド RPCシステムを用いることで、以下のようなプログラマの負担が軽減される セキュリティ データのマーシャリング リソースの選択

問題点 既存のグリッド RPCシステムを用いた場合でも、以下のような問題は依然として残る プログラミングの煩雑さ アルゴリズム、同期、負荷分散…etc 並列度のスケーラビリティの獲得の困難 マスタ・ワーカ方式における、マスタへの集中負荷によるボトルネックの発生→並列性の限界 数台~数十台→数百台~数千台へのスケールアップ 低いポータビリティ 環境(OS、アーキテクチャ…etc)に依存したプログラムのコンパイル

本研究の目的 グリッド環境における大規模並列組み合わせ最適化支援環境の構築 アルゴリズムのみを記述することでグリッド上で最適化アプリケーションが実装、実行が可能 並列・分散実行を隠蔽 問題が持つ階層構造を利用した制御 標準的なグリッド技術を使用 グリッド上の計算資源の選択 高いセキュリティを持った通信、計算資源の保護 上記の用件を満たすような並列組み合わせ最適化システムjPoPを設計、実装し、その性能評価を行う

実行環境(クラスタofクラスタ) サイト間通信 サイト内通信 Secure Shell (ssh) Grid Security Infrastructure (GSI) サイト内通信 rsh, ssh Global address 131.112.x.xxx site C site A Master node WAN JPOPは以下のようなクラスタオブクラスタを実行環境を想定している 各サイトにはクラスタがあり、そのうちの一つはグローバルなアドレスを持ったマスタノードが存在します。このノードを介してサイト内のローカルアドレスしか持たないノード群にジョブが割り当てられる 各サイト間やユーザのプログラムを実行するクライアントノード間は 。。。といった安全な通信で行われる。 node群 Local address 192.168.x.1 ~ 192.168.x.8 Client node user site B

jPoPの実行の様子 Javaで実装 →任意のプラットフォームで実行可 自動的に実行プログラムをアップロード リソースの保護 サイト内で認証されたコードのみを実行 セキュリティマネージャの設定 Javaではクラスローダ別に設定 可能 それぞれの役割を記述する。

object passing library jPoPアーキテクチャ 最適化アルゴリズムの テンプレート(抽象クラス) アルゴリズムに特化したデータ の 構造・操作のシグネチャを定義 エンジン テンプレートを操作し、アルゴリズム の解法を実行 Jojo[02, 中田ら] オブジェクトパッシング通信ライブラリ 階層制御を実現 algorithm template engine object passing library Jojo Java VM ・・・ user program

テンプレート(抽象クラス) 各アルゴリズムのフレームワークを与える 遺伝的アルゴリズム 分枝限定法 アルゴリズムに依存したクラス群 ユーザは提供されたテンプレートクラスを実装 するのみ 遺伝的アルゴリズム 個体, 評価環境, プール 分枝限定法 ノード, 評価環境, プール algorithm template engine object passing libray Jojo Java VM ・・・ user program

エンジン ユーザが記述したテンプレート クラスの実装を実行し、解法を行う アプリケーションプログラマから 並列実行, 通信, 同期 などを隠蔽する algorithm template engine object passing libray Jojo Java VM ・・・ user program

Object Passing 通信ライブラリ Jojo 階層的な計算機構成を前提としたライブラリ 各ノード上のコードは自分の親ノード, 子ノード, 兄弟ノードと通信可能 通信単位はオブジェクト一つ 高度な通信機構を記述可能 階層ごとのSPMDプログラミングモデル 各階層内部では同一のコードを実行 階層間では異なるコードを実行 (同一のコードでも可能) algorithm template engine object passing libray Jojo Java VM ・・・ user program descendant sibling ascendant 親ノード ascendant 子ノードdescendant 兄弟ノードsibling

jPoPの対象アルゴリズム 遺伝的アルゴリズム(jPoP-GA) 分枝限定法(jPoP-BB) 焼き鈍し法(jPoP-SA)

分枝限定用クラス群(jPoP-BB)

分枝限定法の概要 分枝限定法の概要 マスタ・ワーカ方式で並列化を 実現 問題を複数の部分問題(ノード)に分割(分枝操作)、限定操作で解の探索効率を上げる手法 マスタ・ワーカ方式で並列化を 実現 マスタ:ノードの管理 ワーカ:許容解の計算や下界値計算をおこなう →ユーザがリモートで行う部分を自由に変更可能 :分枝済みノード :終端されたノード :許容解 :最適解 :活性ノード

jPoP-BBの設計 分枝限定法を記述する際には ユーザは以下の情報を記述 制御を行うエンジン ノード(部分問題) 評価環境 プール 初期暫定解の計算 ノードの選択 許容解の計算 および 下界値計算 暫定解の更新 分枝操作 限定操作 終了 分枝限定法を記述する際には ユーザは以下の情報を記述 ノード(部分問題) 評価環境 プール 制御を行うエンジン Masterクラス Workerクラス

ノードの定義 BBNode クラス ノードをあらわすクラスのテンプレート 適用問題のデータ構造などを定義 /*static 変数propに設定されているSilfPropertiesを用いて自らを初期化*/ public static void initializeProperties(); /*static変数envに設定されているEnvironmentを用いて 下界値評価を行い結果を返す*/ public double getLowerBound(); /*static 変数envに設定されている許容解の計算を行い結果を返す*/ Public BBNode getFeasible(); /*分枝操作で新たなノードを生成し、それを返す*/ public BBNode [] branch();

環境の定義 Environment インターフェース ノードを評価する環境をあらわすクラスのテンプレート 下界値計算、許容解計算を行う 例:TSPにおける都市間の距離のテーブルなどの評価に用いるデータを保持 ノードと分離することで通信コストを削減 Interface Environment extends Clonable Serializable{ void init(SilfProperties prop); /*初期化*/ }

ノードプールの定義 BBNodePool インターフェース ノードオブジェクトの保持 指定された探索法で次ノードの選択を行う デフォルトで一般的な探索法を提供 深さ優先、幅優先、最良下界探索 ユーザが自分で定義することも可能 public interface BBNodePool { void init(SilfProperties prop); /*初期化*/ void push(BBNode node); /* ノードをプールに収める*/ BBNode pop(); /*ノードをプールから取り出す*/ }

jPoP-BBの実行 Master Pool ・・・ Worker :Node Object :Environment Object current feasible Pool return new nodes or feasible request node ・・・ Worker Wait node :Node Object :Environment Object

定義例 0-1ナップザック問題 ノードクラスと環境クラスを定義 プロパティファイル 目的関数: 制約条件: 用意されたテンプレートに従い、それぞれのクラスを記述 プールクラスはデフォルトの幅優先探索を用いる プロパティファイル jpop.bb.BBNode.classname = KnapNode jpop.bb.Environment.classname = KnapEnvironment jpop.bb.NodePool.classname = silf.jpop.bb.breadthPool jpop.bb.Environment.DataFileName = knap.dat

ノードクラスの定義例 getLowerBound, getFeasibleのそれぞれのメソッドで下界値計算、許容解の計算を行う import silf.jpop.bb.*; import silf.util.*; import java.util.*; public class KanpNode extends BBNode{ public double array[]; public int branch[]; public int feasible; : KnapEnvironment env = new KnapEn…; public double getLowerBound(){ return env.calcLower(this); } public BBNode getFeasible(){ KnapNode node; return env.calcFeasible(this); } : public BBNode [] branch(){ KnapNode a = (KnapNode)this.clone(); KnapNode b = (KnapNode)this.clone(); a.branch[i] = 1; b branch[i] = 0; return new BBNode []{(BBNode )a, (BBNode)b};

環境クラスの定義例 calcLower, calcFeasibleがノードの計算を行う実体 import silf.jpop.bb.*; import silf.util.*; import java.util.*; public class KanpEnvironment implements …{ final double capacity; final int number; final int [] value; final int [] weight; public void init(SilfProperties prop){ : } public double calcLower(KnapNode node){ double g; double tmp; for(int =0; I<node.array.length;i++){ switch(node.array[i]){ case 1:・・・ case -1:・・・ case 0:・・・ } return g; public KnapNode calcFeasible(Knap node){ : for(int i=0; i<node.branch.length;i++){ node.feasilbe+=value[i]*node.・・・ return node;

評価環境 LAN環境 松岡研PrestoIIIクラスタ CPU:Athlon1900+ x2, Mem:768MB, Linux2.4.18 Host A CPU:PentiumIII 500MHz x2, Mem:1GB, Linux2.4.17 Network:100Base-T WAN環境 Host B CPU:PentiumIII 1400MHz x2, Mem:2.3GB,Linux2.4.18 Network: 11.0Mbyte/sec, ping_latency=4,068ms

評価対象 ナップザック問題 ランダムに目的関数および、制約条件の値を決定 目的関数: 制約条件: ランダムに目的関数および、制約条件の値を決定 (n,b)= (30, 100),(100, 1000), (200, 2000) 分枝限定法を用いて最適解が求まるまで、計算をおこなう 探索法としては幅優先を用いた

jPoPによるオーバーヘッド LANにおいて、n=100, b=1000 で計測 ワーカの数に比例して起動・終了時間が増加 →実行時間が十分大きくなれば無視可能な値

性能評価(LAN環境) 問題サイズが大きくなると性能向上は上がる しかし、ワーカが8台以上では性能向上が飽和

性能評価(WAN環境) 問題サイズが大きくなると性能向上が上がる しかし、8台以上では性能向上が飽和

LANとWANにおける性能比較(1) 起動・終了などのオーバーヘッドの部分をのぞけば、LANでもWANでも性能に大差はない

LANとWANにおける性能比較(2) LANがWANよりも良い性能向上を示すのはWANでは異なるサイトにあるクライアント側に出力などを返すことによるオーバーヘッドが原因

考察 0-1ナップザック問題では8台以上では良い性能向上は見られなかった →対象となる問題の粒度が小さすぎる 以下では任意に問題の粒度を調整し、jPoPが期待された性能を示す状態について考察する 0-1ナップザック問題においてワーカで実行される下界値の計算で結果をマスタに返す前にWaitする →粒度の大きな問題を作り出す Waitの時間は0.2, 0.5, 1.0, 2.0[sec]の4種類 対象となる問題はn=30, b=100で、LAN環境で実行

粒度を調整した実行 Waitの時間が大きいほど、実行時間は大きくなるが、同時に台数効果があらわれる

粒度の違いによる性能向上 2~16台まではほぼリニアな性能向上 32台ではWaitを大きくしても性能向上は上がらない

考察 問題の粒度を大きくすることで速度性能は上がる →小さな粒度でも、複数のノードをワーカに一度に送ることによって、見かけの粒度を上げことが可能 現在のマスタ・ワーカモデルでの実現可能 限定操作に必要な情報の更新が遅れる 粒度を大きくしても性能向上には限界がある →マスタが管理するワーカを減らすことが性能向上につながる 複数のマスタそれぞれがワーカを管理、マスタ間で暫定解などの情報を交換

まとめ グリッド環境における組み合わせ最適化システム jPoPを提案し、その設計、実装を行った jPoP-BBを用いて0-1ナップザック問題を実装し、性能評価を行った 階層構造を用いた実行→性能には影響小 対象となる問題の粒度が小さい場合には期待された性能向上は示されなかった jPoPのプログラミングモデルの変更の提案 複数のノードを一度にワーカに送ることによる粒度の調整 階層構造を用いて複数のマスタによるワーカ管理

今後の課題 焼き鈍し法用のフレームワークであるjPoP-SAの設計、実装 jPoP-BBの再実装 さらなる評価 ワーカに送るノードの調整 多階層モデル さらなる評価 汎用性 スケーラビリティ