実行時の情報を用いて通信を最適化するコンパイラ

Slides:



Advertisements
Similar presentations
HBSP モデル上での 行列積を求めるアルゴリ ム 情報論理工学 吉岡健太.
Advertisements

Web アプリをユーザー毎に カスタマイズ可能にする AOP フレームワーク
MPIを用いたグラフの並列計算 情報論理工学研究室 藤本 涼一.
第3回 並列計算機のアーキテクチャと 並列処理の実際
連続系アルゴリズム演習 第2回 OpenMPによる課題.
計算理工学基礎 「ハイパフォーマンスコンピューティングの基礎」
クラスタの構成技術と クラスタによる並列処理
コンピュータプラクティス I 再現性 水野嘉明
第1回.
PCクラスタにおける2個体分散遺伝的アルゴリズムの高速化
DNASシステム上のアプリケーション起動シーケンスのための基盤であるdsh部分の性能評価
キャンパスクラウドによる 実験環境の構築 情報ネットワーク特論 講義資料.
分散遺伝的アルゴリズムによる各種クラスタのベンチマーク
侵入検知システム(IDS) 停止 IDS サーバへの不正アクセスが増加している
プログラミング演習Ⅰ 課題2 10進数と2進数 2回目.
第5回 CPUの役割と仕組み3 割り込み、パイプライン、並列処理
ネットワーク性能評価.
データベース設計 第9回 Webインタフェースの作成(1)
Flyingware : バイトコード変換による 安全なエージェントの実行
サーバ負荷分散におけるOpenFlowを用いた省電力法
MPIによる行列積計算 情報論理工学研究室 渡邉伊織 情報論理工学研究室 渡邉伊織です。
京都大学大学院医学研究科 画像応用治療学・放射線腫瘍学 石原 佳知
計算物理学基礎 第1回 UNIXの基礎 C言語の基本.
型付きアセンブリ言語を用いた安全なカーネル拡張
ネットワークプログラミング 中村 修.
IPv6 ネットワークにおける エニーキャスト通信実現のための プロトコル設計と実装
OpenMPハードウェア動作合成システムの検証(Ⅰ)
ネットワークアプリケーションと セキュリティ
特定ユーザーのみが利用可能な仮想プライベート・ネットワーク
Xenによる ゲストOSの監視に基づく パケットフィルタリング
分散IDSの実行環境の分離 による安全性の向上
最適化の方法 中田育男著 コンパイラの構成と最適化 朝倉書店, 1999年 第11章.
インターネットにおける真に プライベートなネットワークの構築
実行時情報に基づく OSカーネルのコンフィグ最小化
キャンパスクラウドによる 実験環境の構築 情報ネットワーク特論 講義資料.
Linux リテラシ 2006 第5回 SSH と SCP CIS RAT.
社会シミュレーションのための モデル作成環境
私の立場 OSカーネルを手がけるエンジニア 大阪市立大学 創造都市研究科の学生
通信機構合わせた最適化をおこなう並列化ンパイラ
オープンソース開発支援のための ソースコード及びメールの履歴対応表示システム
オープンソース開発支援のための リビジョン情報と電子メールの検索システム
実行時情報を用いて通信を最適化するPCクラスタ上の並列化コンパイラ
Webプロキシ HTTP1.0 ヒント CS-B3 ネットワークプログラミング  &情報科学科実験I.
アナライザ パケットを収集 測定用のマシン 通信.
実行時の情報を用いてプロセッサ間の通信を最適化するコンパイラ
Step.1 LinuxとIPコマンド ifconfig [-a] [インタフェース名] arp [-n]
アスペクト指向言語のための 独立性の高いパッケージシステム
最低限インターネット ネットワークにつなぎましょ!
VMが利用可能なCPU数の変化に対応した 並列アプリケーション実行の最適化
InTriggerクラスタ環境の構築 i-explosion 支援班 クラスタ環境の概要 研究に使える「共有資源」を提供
Ibaraki Univ. Dept of Electrical & Electronic Eng.
コンパイラ 2012年10月1日
計算機アーキテクチャ1 (計算機構成論(再)) 第一回 計算機の歴史、基本構成、動作原理
仮想マシンに対する 高いサービス可用性を実現する パケットフィルタリング
OSI7層に関係する機器、仕様、機能など 物理層 データリンク層 ネットワーク層 トランスポート層 セッション層 プレゼンテーション層
「マイグレーションを支援する分散集合オブジェクト」
理工学部情報学科 情報論理工学研究室 延山 周平
ユビキタスコンピューティングの ための ハンドオーバー機能付きRMIの実装
システムプログラミング 第10回 プロセス間通信3 簡易Web server(準備) Chat プログラム 担当:青木義満、篠埜 功
MPIを用いた並列処理計算 情報論理工学研究室 金久 英之
CO-Client Opeartion 1.1 利用履歴データベースの設計 (スキーマ バージョン 対応)
ネットワークプロトコル.
プログラムの一時停止時に 将来の実行情報を提供するデバッガ
異種セグメント端末による 分散型仮想LAN構築機構の設計と実装
特定ユーザーのみが利用可能な仮想プライベート・ネットワーク
MPIを用いた 並列処理 情報論理工学研究室 06‐1‐037‐0246 杉所 拓也.
アーキテクチャパラメータを利用した並列GCの性能予測
並列処理プロセッサへの 実数演算機構の開発
ソケットの拡張によるJava用分散ミドルウエアの高信頼化
ユーザ認証の盗聴 2002/9/10 峯 肇史 牧之内研究室「インターネット実習」Webページ
Presentation transcript:

実行時の情報を用いて通信を最適化するコンパイラ 横田 大輔 (筑波大) 千葉 滋 (東工大) 板野 肯三 (筑波大)

計算物理で望まれる環境 実行時間の短縮 容易にプログラムを記述できる 超並列計算 書き手は計算機の専門家ではない 時間がかかる 金がかかる 実行に数日~数週間かかる 金がかかる 日立SR2201は月500万円 容易にプログラムを記述できる 書き手は計算機の専門家ではない

対象にするプログラムの特徴 ある特定の処理を莫大な回数繰り返す ある程度規則性がある シミュレーション時間 核になる処理の最適化に時間をかけられる ある程度規則性がある 各プロセッサのアクセスパターンは比較的簡単(コード中に通信命令を展開できる) 核になる計算の中で必要になる通信は繰り返しても変わらない

本研究のコンパイラ 特定個所を時間かけてでも最適化 書きやすく習得が容易な言語 実行時の情報を最適化に利用 ハードウェアの機能を利用 CP-PACS / Pilot-3のRDMA(Remote DMA) 書きやすく習得が容易な言語 HPF(High Performance Fortran)のサブセット FORTRAN+並列化のためのヒント 明示的に通信命令を書かなくてよい

実行時の情報を最適化に利用 プロファイルを取るためだけのコードを生成(インスペクタ-エグゼキュータ方式を改良) インスペクタエグゼキュータ方式 得られた情報をコンパイル時に利用できない 不規則なデータアクセスを並列化するときに使う インスペクタをコンパイル時に処理 PCクラスタでコンパイル コンパイル時間の増加

インスペクタ-エグゼキュータ 先にプログラムの一部を実行して通信が必要になる個所を把握(インスペクタ) 把握された情報を元に通信を行いながら実際に実行(エグゼキュータ)

本方式の処理の流れ

通信機構RDMA ブロックストライド通信 TCW再利用型通信 片側通信 等間隔に並んだデータを一度に送信 同じ通信(アドレス、通信相手、その他)が繰り返される場合高速 要事前セッティング 片側通信 RECVいらず

行った最適化 ブロックストライドの利用 TCW再利用型通信の利用 テーブル参照の除去 ループの最適な分配 通常のインスペクタ-エグゼキュータではインスペクタの解析結果を参照しながら動作する ループの最適な分配 ループを多プロセッサで手分けして実行する場合、どのように分けたら最適だろう

行った最適化(ブロックストライド) 通信回数を減らす(ブロック→ブロックストライド) 同時に実行できる通信を探す インスペクタの結果から必要になる通信を求める INDEPENDENT命令をヒントにする

行った最適化(TCW再利用) 通信のオーバーヘッドを減らす TCW再利用型通信を利用する 設定 do I=1,… end do 送信 送信 パラメータが定数 通常の通信 TCW再利用型通信

行った最適化(テーブル参照) インスペクタ-エグゼキュータ方式に発生するテーブル参照を除く IF(TABLE_ISSEND(I))     SEND(TABLE_PARAM(I)) IF(I==定数)     SEND(定数パラメータ)

行った最適化(ループの分配1) ループの繰り返しをプロセッサで手分けして実行 $HPF! DISTRIBUTE AR(BLOCK,*) 計算に必要なデータを他のプロセッサが持っている可能性がある データの配置はHPF命令でユーザが指定 通信でやりとり $HPF! DISTRIBUTE AR(BLOCK,*)

行った最適化(ループの分配2) 通信量が少なくなるようにループのくり返しを分配 ループのくり返しごとに発生する通信量をインスペクタで調べる 不連続な反復にも対応 P E 2 必要な通信量 P E 1 ループのくり返し P E 1 P E 1 P E 2 P E 2 受け持つプロセッサ

実験 ベンチマーク 実行環境 コンパイル環境 Nas parallel benchmarks FT-a BT-a Genesis distributed memory benchmarks pde1(N=7) 実行環境 Pilot3上の1~16ノード コンパイル環境 PCクラスタ : PIII733Mhz, 512Mbytes, 100Base, Linux Redhat7.1 1~16ノード

実行時間(pde1) 20 15 本方式 日立 10 線形 スピードアップ 5 I-E 1 2 4 8 16 プロセッサ数 249秒 262秒 10 線形 スピードアップ 5 I-E 137,100秒 1 2 4 8 16 プロセッサ数

実行時間(FT-a) 20 15 本方式 46秒 日立 10 スピードアップ 線形 5 4,898秒 1 2 4 8 16 プロセッサ数

実行時間(BT-a) 20 15 本方式 10 日立 スピードアップ 線形 5 1 2 4 8 16 プロセッサ数 1,430秒 1,370,000秒 1 2 4 8 16 プロセッサ数

コンパイル時間(pde1)

コンパイル時間(FT-a)

コンパイル時間(BT-a)

まとめ シミュレーションプログラムのうち、実行時間の支配的な部分を最適化した 最適化のための解析は動的に行った コンパイル時間を含めて実行速度の向上を得るには十分な反復回数が必要 Pde1: 1000→9400 BTはコンパイル時間が爆発した インスペクタの解析結果が膨大になってしまった。

関連研究 コードを書き換える 実行時の情報で判断 実行時にオブジェクトを配置するプロセッサを変更する リモートのデータのコピー M. Philippsen, B. Haumacher 実行時の情報で判断 リモートのデータのコピー R. Ponnusamy, J. Saltz, A. Choudary, Y. S. Hwang, G. Fox

今後の課題 コンパイル時間のスケーラビリティの改善 より物理シミュレーションに近い実験 通信パターンが変るプログラムは? インスペクタの解析結果の爆発(BT) ソースコードの膨張 より物理シミュレーションに近い実験 通信パターンが変るプログラムは?

おまけ(Binbo VPN) 貧しい貧しい環境のVPN

エンドユーザでもVPNしたいぞ プライベートIPしか持ってないよ 相手もプライベートIPだよ 端末以外、勝手にソフトも入れられないよ 「当プロバイダはシェルは公開していません」 グローバルIPを持っているマシンが1台だけあるけどウェブ専用だよ レンタルサーバ/プロバイダのウェブスペース

どうやってつなげようか? CGIでリレー ソケットのラッパ関数を作る listenやreadはプライベートからポーリング 現在はTCPのみ 内部ではHTTP listenやreadはプライベートからポーリング 外から届かないので中から 相手はプロバイダのwebサーバだ。無茶な周期はだめだぞ

Binbo VPNのしくみ

実験 netkit-telnet-0.17でリモートのファイルを表示 1000,000桁の円周率のテキスト 使用したマシンは特に断りがなければPIII733Mhz,512Mバイト,i810のオンボードLinuxRedhat7.1,100Base BinboVPNのポーリング周期は1秒

結果(1/2) 接続 処理時間 ローカル表示 0.77 秒 通常のtelnet 0.78 秒 Binbo VPN 288.38秒

結果(2/2) 接続 処理時間 多段ssh 1.86秒 Binbo VPN 555.93秒 筑波大HLLA研究室プライベートIPマシン ネットエイジの普通のウェブページ 東工大CSG研究室プライベートIPマシン telnet PIII566Mhz512Mバイト ATI Mach64 PIII1.2Ghz 接続 処理時間 多段ssh 1.86秒 Binbo VPN 555.93秒 新城 靖 先生@筑波大学 に感謝ネットエイジさんにごめんなさい

まとめ 今後の課題 最悪の環境でもVPNできた 速度の面はだめだこりゃ 速くしたい Selectの例外を再現したい pop3(+SMTP)やFTPならどうだ!? プロバイダに怒られないギリギリのポーリング周期を求める(笑