全体ミーティング (6/13) 村田雅之.

Slides:



Advertisements
Similar presentations
1 高速フーリエ変換 (fast Fourier transform). 2 高速フーリエ変換とは? – 簡単に言うとフーリエ変換を効率よく計算 する方法 – アルゴリズムの設計技法は分割統治法に基 づいている 今回の目的は? – 多項式の積を求める問題を取り上げ、高速 フーリエ変換のアルゴリズムを用いた解法.
Advertisements

MPIを用いたグラフの並列計算 情報論理工学研究室 藤本 涼一.
4.3 マージソート.
プログラミング演習II 2004年11月 30日(第6回) 理学部数学科・木村巌.
ファイルキャッシュを考慮したディスク監視のオフロード
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第4回 配列(2) 情報・知能工学系 山本一公
情報理論2 注意!! 11月26日(火)は休講 (小林が学会出張のため) 湘南工科大学情報工学科 准教授 小林 学 湘南工科大学
三重対角化アルゴリズムの性能評価 早戸拓也・廣田悠輔.
第11回 整列 ~ シェルソート,クイックソート ~
情報基礎演習B 後半第5回 担当 岩村 TA 谷本君.
全体ミーティング (4/25) 村田雅之.
AllReduce アルゴリズムによる QR 分解の精度について
システムプログラミング 第11回 シグナル 情報工学科  篠埜 功.
応用情報処理V 第1回 プログラミングとは何か 2004年9月27日.
2007/1/18 山下 諒蔵 佐藤 春旗 前田 俊行 大山 恵弘 佐藤 秀明 住井 英二郎
2006/11/02 山下 諒蔵 佐藤 春旗 前田 俊行 大山 恵弘 佐藤 秀明 住井 英二郎
データ構造とアルゴリズム 分割統治 ~ マージソート~.
応用情報処理V 第1回 プログラミングとは何か 2003年9月29日.
2007/1/11 山下 諒蔵 佐藤 春旗 前田 俊行 大山 恵弘 佐藤 秀明 住井 英二郎
ネストした仮想化を用いた VMの安全な帯域外リモート管理
 データベースによる並列処理 情報論理工学研究室  三宅健太.
第11回 整列 ~ シェルソート,クイックソート ~
Moodleの使い方 基幹教育セミナー用 ※利用しない機能のスライドは、適宜、削除してご利用下さい。
川口真司 松下誠 井上克郎 大阪大学大学院情報科学研究科
SAccessor : デスクトップPCのための安全なファイルアクセス制御システム
ソースコードの変更履歴における メトリクス値の変化を用いた ソフトウェアの特性分析
静的情報と動的情報を用いた プログラムスライス計算法
関数の定義.
最適化の方法 中田育男著 コンパイラの構成と最適化 朝倉書店, 1999年 第11章.
MPIとOpenMPを用いた Nクイーン問題の並列化
梅澤威志 隣の芝は茶色いか 梅澤威志
IaaS型クラウドにおける インスタンス構成の動的最適化手法
“Separating Regular Languages with First-Order Logic”
仮想メモリを用いた VMマイグレーションの高速化
コンパイラ 2012年11月15日
岩村雅一 知能情報工学演習I 第10回(後半第4回) 岩村雅一
プログラミング言語論 第五回 理工学部 情報システム工学科 新田直也.
オープンソース開発支援のための ソースコード及びメールの履歴対応表示システム
アルゴリズムとデータ構造1 2005年7月1日
データ構造と アルゴリズム 第五回 知能情報学部 新田直也.
先進的計算基盤システムシンポジウム SACSIS2007併設企画 マルチコアプログラミングコンテスト 「Cellスピードチャレンジ2007」
復習+α JBuilderの使い方を思い出す。 配列とGUI 再帰とマージソート 木と二分木の探索
IaaS環境におけるVMのメモリ暗号化による情報漏洩の防止
未使用メモリに着目した 複数ホストにまたがる 仮想マシンの高速化
プログラミング 4 整列アルゴリズム.
プログラミング 4 探索と計算量.
第5章 計算とプログラム 本章で説明すること ・計算の概観と記述法 ・代表的な計算モデル ・プログラムとプログラム言語.
3次元Nクイーン問題の 解の存在の検証 07-1-037-0106 前波 大貴 情報論理工学研究室 宜しくお願いします。
VMが利用可能なCPU数の変化に対応した 並列アプリケーション実行の最適化
アルゴリズムとデータ構造1 2006年7月11日
アクセス集中時の Webサーバの性能に対する OSの影響
データ構造とアルゴリズム (第5回) 静岡大学工学部 安藤和敏
プログラムが実行されるまで 2002年4月14日 海谷 治彦.
全体ミーティング (5/23) 村田雅之.
アルゴリズムとデータ構造 2012年7月2日
米澤研究室 全体ミーティング 2010/07/07 M2 渡邊裕貴.
Cell/B.E. のSPE上で動作する 安全なOS監視システム
アルゴリズムとデータ構造 2011年6月28日
アルゴリズムとデータ構造 2013年7月2日
理工学部情報学科 情報論理工学研究室 延山 周平
オブジェクト指向言語論 第五回 知能情報学部 新田直也.
全体ミーティング (12/15) 村田雅之.
SMP/マルチコアに対応した 型付きアセンブリ言語
曖昧なポインタの存在下での Copying Garbage Collection
IPmigrate:複数ホストに分割されたVMの マイグレーション手法
プログラミング演習I 2003年6月11日(第9回) 木村巌.
全体ミーティング (9/12) 村田 雅之.
プログラミング演習II 2003年12月10日(第7回) 木村巌.
知能情報工学演習I 第11回(後半第5回) 課題の回答
プログラミング論 バイナリーサーチ 1.
Presentation transcript:

全体ミーティング (6/13) 村田雅之

テーマ 決定的な並列コピーガベージコレクション 何度実行しても結果が決定的 Deterministic Parallel Copying Garbage Collection 何度実行しても結果が決定的 DPJ [Bocchino Jr. et al. 2009] を応用する シンプルなアルゴリズムを実装

アルゴリズムの概要 copy (heap){ if ( heap.length < Threshold ) then { (逐次アルゴリズムでコピーする) // 範囲外は無視 }else{ cobegin { copy(前半); copy(後半); } // 並列実行 (範囲外だったポインタを処理する) (隙間をつめる) (ポインタのつけかえ) }

前回の問題点 ポインタのつけかえに時間がかかっていた ヒープ全体を見る必要がある 分割の回数に比例した時間がかかる データ位置とポインタの値は関連がない 分割の回数に比例した時間がかかる

ヒープに隙間があるとき 1 2 3 4 5 6 7 1 4 4 1 7 4 5 1 2 5 4 1 2 3 4 5 6 7

データを移動する 1 2 3 4 5 6 7 1 4 4 1 7 4 5 1 2 4 5 1 2 3 4 5 6 7

必要に応じてポインタを修正 1 2 3 4 5 6 7 1 4 4 1 7 4 5 1 2 4 3 1 2 3 4 5 6 7

ポインタの修正を行うところ 分割ごとにこの操作を行っていた

対策 データを移動させるごとにどの範囲のデータがどれだけ移動したか覚えておく その情報をもとに最後にまとめてポインタ情報を書き換える さっきの例なら、7番のデータが4つ前に移動した ポインタの変更回数を減らせる ヒープ全体をチェックする必要があるため重い

前回までのアルゴリズム copy (heap){ if ( heap.length < Threshold ) then { (逐次アルゴリズムでコピーする) // 範囲外は無視 }else{ cobegin { copy(前半); copy(後半); } // 並列実行 (範囲外だったポインタを処理する) (隙間をつめる) (ポインタのつけかえ) }

新しいアルゴリズム copy (heap){ if ( heap.length < Threshold ) then { (逐次アルゴリズムでコピーする) // 範囲外は無視 }else{ cobegin { copy(前半); copy(後半); } // 並列実行 (範囲外だったポインタを処理する) (隙間をつめる) // データの移動履歴を記憶 } (ポインタのつけかえ)

Linuxでも動いた DPJはMacで動かしていた Javaのバージョンが重要だった 必要なのは1.6以上とされる 試したときはharpでJava1.4だったので動かない harpはSolarisだが… DPJのバージョン自体も最初と変わっているかも

環境 candy 配列長さが1G (= 230) Intel Xeon x5570 (4 core) 2.93GHz * 2 8コア, HTで論理的には16コア 72GB RAM Linux Java 1.6.0 update 18 配列長さが1G (= 230) そろそろ signed int の限界 (= 231-1 ) longへの書き換えをする?

結果 かなり速くなる

ワーカースレッドの数の変化 64分割で測定 限界を超えているのは…

逐次実行との比較 8並列で逐次アルゴリズムを上回る

どこで時間がかかるのか 各部分について時間を 計測した copy (ヒープ){ if ( heap.length < Threshold ) then { (逐次アルゴリズムでコピーする); // 範囲外は無視 }else{ cobegin { copy(前半); copy(後半); } // 並列実行 (範囲外だったポインタを処理する); (隙間をつめる); // データの移動履歴を記憶 } (ポインタのつけかえ); 各部分について時間を 計測した

測定結果 ポインタのつけかえに多くの時間がかかる

対策を考える データの移動を少なくする 移動の情報をコンパクトに 完全に前から詰める必要はないのでは? 複数回の移動を1回にまとめてしまう 10→8→2と移動させるところを10→2にする

その他 調べようとしていること GCの検証について GCのときのキャッシュに関する話

今後の日程 7/20 15:00 題目・要旨提出 8/24 15:00 本文提出 8/31 発表 (15分+質疑5分)