キャッシュヒント自動付加を用いたソフトウェア高速化

Slides:



Advertisements
Similar presentations
1 広島大学 理学研究科 尾崎 裕介 石川 健一. 1. Graphic Processing Unit (GPU) とは? 2. Nvidia CUDA programming model 3. GPU の高速化 4. QCD with CUDA 5. 結果 6. まとめ 2.
Advertisements

HBSP モデル上での 行列積を求めるアルゴリ ム 情報論理工学 吉岡健太.
Web アプリをユーザー毎に カスタマイズ可能にする AOP フレームワーク
CPU/GPUを協調利用する ソフトウェア開発環境
MPIを用いたグラフの並列計算 情報論理工学研究室 藤本 涼一.
Webプロキシサーバにおける 動的資源管理方式の提案と実装
計算理工学基礎 「ハイパフォーマンスコンピューティングの基礎」
キャッシュ付PRAM上の 並列クィックソートと 並列マージソート
ヘテロジニアスマルチコアプロセッサ 環境を対象としたキャッシュシステム 自動生成ツールの開発
Intel AVX命令を用いた並列FFTの実現と評価
最新ファイルの提供を保証する代理FTPサーバの開発
A Q R QR分解とは? → × ◆QR分解 QTQ = I (単位行列) ◆応用例 ◆主な計算方法 n m 今回はこの方法に注目
キャッシュヒントの自動付加による数値計算の高速化
三重対角化アルゴリズムの性能評価 早戸拓也・廣田悠輔.
超並列計算研究会 PCクラスタにおける ベンチマークと並列ツールの紹介 廣安 知之 三木 光範 大向 一輝 吉田 純一.
研究集会 「超大規模行列の数理的諸問題とその高速解法」 2007 年 3 月 7 日 完全パイプライン化シフト QR 法による 実対称三重対角行列の 固有値並列計算 宮田 考史  山本 有作  張 紹良   名古屋大学 大学院工学研究科 計算理工学専攻.
Finger patternのブロック化による 陰的wavelet近似逆行列前処理の 高速化
DNASシステム上のアプリケーション起動シーケンスのための基盤であるdsh部分の性能評価
情報伝播によるオブジェクト指向プログラム理解支援の提案
AllReduce アルゴリズムによる QR 分解の精度について
Explorations in Symbiosis on two Multithreaded Architectures
P,Q比が変更可能なScaLAPACKの コスト見積もり関数の開発
分散遺伝的アルゴリズムによる各種クラスタのベンチマーク
プログラムの動作を理解するための技術として
ユーザ毎にカスタマイズ可能な Web アプリケーション用のフレームワークの実装
演算/メモリ性能バランスを考慮した マルチコア向けオンチップメモリ貸与法
変更文の移動を可能にした 静的単一代入形式上の部分冗長性除去
アスペクト指向プログラミングを用いたIDSオフロード
シミュレーション演習 G. 総合演習 (Mathematica演習) システム創成情報工学科
サーバ負荷分散におけるOpenFlowを用いた省電力法
MPIによる行列積計算 情報論理工学研究室 渡邉伊織 情報論理工学研究室 渡邉伊織です。
プログラム実行履歴を用いたトランザクションファンクション抽出手法
Occam言語による マルチプリエンプティブシステムの 実装と検証
型付きアセンブリ言語を用いた安全なカーネル拡張
高速剰余算アルゴリズムとそのハードウェア実装についての研究
独立大学法人・電気通信大学 大学院情報システム学研究科 情報ネットワーク学専攻・並列処理学講座
動的依存グラフの3-gramを用いた 実行トレースの比較手法
最適化の方法 中田育男著 コンパイラの構成と最適化 朝倉書店, 1999年 第11章.
梅澤威志 隣の芝は茶色いか 梅澤威志
オブジェクト指向プログラムにおける エイリアス解析手法の提案と実現
インラインスクリプトに対するデータフロー 解析を用いた XHTML 文書の構文検証
動的スライスを用いたバグ修正前後の実行系列の差分検出手法
ユーザ毎にカスタマイズ可能な Webアプリケーションの 効率の良い実装方法
Advanced Computer Architecture
実行時情報に基づく OSカーネルのコンフィグ最小化
クラウドにおけるIntel SGXを用いた VMの安全な監視機構
通信機構合わせた最適化をおこなう並列化ンパイラ
オープンソース開発支援のための ソースコード及びメールの履歴対応表示システム
実行時情報を用いて通信を最適化するPCクラスタ上の並列化コンパイラ
東京工業大学 情報理工学研究科 数理・計算科学専攻 千葉研究室 栗田 亮
Javaバイトコードの 動的依存解析情報を用いた スライシングシステムの実現
アスペクト指向言語のための 独立性の高いパッケージシステム
バイトコードを単位とするJavaスライスシステムの試作
VMが利用可能なCPU数の変化に対応した 並列アプリケーション実行の最適化
Javaバーチャルマシンを利用した 動的依存関係解析手法の提案
Peer-to-Peerシステムにおける動的な木構造の生成による検索の高速化
コーディングパターンの あいまい検索の提案と実装
JAVAバイトコードにおける データ依存解析手法の提案と実装
オブジェクトの協調動作を用いた オブジェクト指向プログラム実行履歴分割手法
設計情報の再利用を目的とした UML図の自動推薦ツール
「マイグレーションを支援する分散集合オブジェクト」
プログラムの差分記述を 容易に行うための レイヤー機構付きIDEの提案
オープンソースソフトウェアに対する コーディングパターン分析の適用
MPIを用いた並列処理計算 情報論理工学研究室 金久 英之
統合開発環境のための プログラミング言語拡張 フレームワーク
エイリアス関係を考慮した Javaプログラム用静的スライシングツール
IPmigrate:複数ホストに分割されたVMの マイグレーション手法
オブジェクト指向言語における セキュリティ解析アルゴリズムの提案と実現
1.2 言語処理の諸観点 (1)言語処理の利用分野
Presentation transcript:

キャッシュヒント自動付加を用いたソフトウェア高速化 早稲田大学 理工学研究科 情報・ネットワーク専攻 稲垣 良一 上田 和紀 FIT2005

研究の背景と目的 プロセッサとメモリの速度差の拡大 キャッシュヒント (Itanium) 研究の目的 適切に使用することでキャッシュの有効活用 既存のコンパイラはキャッシュヒントを使用したメモリアクセス命令を生成しない 研究の目的 ①コンパイル時のキャッシュヒント自動付加 ②キャッシュヒント付加によるソフトウェア高速化 メモリアクセスコストの 相対的な増加 メモリアクセス遅延の隠蔽 キャッシュの有効活用 一般的な対処方法 FIT2005

発表の流れ 背景と目的 キャッシュヒント キャッシュヒント自動付加手法 - CHSU 評価・まとめ FIT2005

キャッシュヒント データを配置するキャッシュ階層を制御 Itanium プロセッサのキャッシュヒント 取り込むキャッシュ階層、 LRU の更新、etc… データの局所性を意識したキャッシュの有効活用 Itanium プロセッサのキャッシュヒント メモリアクセス命令にヒントを付加する形式で表現 ストア・ロード命令に応じて4種類 .nta ヒント データをキャッシュに最も残さないヒント データを L2 キャッシュだけに配置 LRU を更新しない ⇒一度使うだけで再利用しないメモリアクセスに有効 例) ld4.nt1, st8.nta 多段キャッシュの有効活用 データの局所性を意識したキャッシュの有効活用 FIT2005

キャッシュヒント 通常のストア命令によるキャッシュの変化 .nta ヒントを付加したストア命令によるキャッシュの変化 cf. ストリーミングストア (Pentium3~) FIT2005

キャッシュヒントとコンパイラ 現状 関連研究 既存のコンパイラはキャッシュヒントを使用したコードを生成していない! GCC, Intel Compiler #pragma memref_control (Intel Compiler 9 ~) 関連研究 Beyls (Gent Univ) ら K.Beyls and E.D'Hollander. Compile-Time Cache Hint Generation for EPIC Architectures, In Proc. EPIC2, pp.19--29, Nov 2002. Reuse Distance に基づいてキャッシュヒントを選択 Open Research Compiler 既存のコンパイラはキャッシュヒントを使用したコードを生成していない! FIT2005

背景と目的 キャッシュヒント キャッシュヒント自動付加手法 - CHSU 評価・まとめ FIT2005

キャッシュヒントの自動付加手法 Binary Program Compiler/Assembler/Linker ・・・ 提案する手法 ・・・ 従来のコード生成 Assembly Program (annotated Cachehint) Cachehint Annotation Unit (CHSU-core) Compiler/Assembler/Linker CacheHint Supply Utility (CHSU) Source Program (C, C++, Fortran, etc…) Binary Program FIT2005

本手法の特徴 プログラミング言語に依存しない 透過性 ヒントの自動付加 アセンブリプログラムを生成できるコンパイラが必要 使用するコンパイラも選択可能 透過性 既存のコンパイラのラッパーとして動作 既存のコンパイラの最適化機能 + キャッシュヒント付加 ヒントの自動付加 ヒントを付加すべきメモリアクセス命令を自動的に選択 $ icc –O3 –o foo foo.c Intel Compiler の場合 $ chsu –O3 –o foo foo.c 本手法の場合 コンパイラの使用者側からみて透過的に動作する FIT2005

CHSUの設計・実装 Java で実装 フロントエンド CHSU-core コマンドラインの解析 設定ファイルの解析 コンパイラ、アセンブラの起動 アセンブリプログラムを CHSU-core に渡す Assembly Program (annotated Cachehint) Cachehint Annotation Unit (CHSU-core) Compiler/Assembler/Linker Source Program Binary Program FIT2005

CHSUの設計・実装 CHSU-core アセンブリプログラムの 解析 キャッシュヒントの付加 キャッシュヒント付加済 プログラムの出力  解析 キャッシュヒントの付加 キャッシュヒント付加済  プログラムの出力 Assembly Program (annotated Cachehint) Cachehint Annotation Unit (CHSU-core) Compiler/Assembler/Linker Source Program Binary Program アセンブリプログラムの解析 字句解析 アセンブリプログラムの構造を抽出 FIT2005

アセンブリプログラムの解析 3階層のデータ構造に分類 Program - プログラム Procedure - プロシージャ Block – アセンブリプログラム中のラベルで区切られる部分 以降の解析は Procedure 単位で行う Program Procedure Block Block 単位で保持する情報  プログラム原文、命令の種類・数、  分岐先、etc… FIT2005

キャッシュヒントの付加方針 本研究では .nta ヒントを付加 方針・・・プログラムの局所性に注目 多くのメモリアクセスがループ等の局所性の高い部分で実行されている .nta ヒント・・・1度使うだけで再利用しないメモリアクセスに有効 それぞれの部分について、メモリアクセスの再利用性を仮定し、ヒントの付加方針を導く 1.局所性が高い部分 2.局所性が低い部分 3.(どちらでもない部分) FIT2005

キャッシュヒントの付加方針 (cont’d) 局所性に応じた仮定 局所性が高い部分について 局所性が低い部分について 実行回数が他の部分に比べて相対的に少ない ⇒再利用しないメモリアクセスであると仮定 ストア命令 同じメモリアドレスにデータを何度もストアすることはない ⇒再利用しないメモリアクセスと仮定 ロード命令 同じデータを何度もロードすることはないが、同じキャッシュライン上の別のメモリアドレスからデータがロードされる可能性はある ⇒キャッシュラインは再利用される ⇒再利用されるメモリアクセスと仮定 FIT2005

キャッシュヒントの付加方針 (cont’d) プログラムの局所性と.nta ヒント付加の関係 どちらにも該当しなければ、ヒントは付加しない この方針に基づいてアセンブリプログラムから 局所性が高い部分 局所性が低い部分  を見つける 局所性の高い部分 局所性の低い部分 それ以外 ストア命令 ○ × ロード命令 FIT2005

.nta ヒントの付加 Procedure 単位で処理 局所性の高い部分 局所性の低い部分 Block 単位で CFG を構築 自Blockへの分岐を持つBlock ループ構造そのもの Block の局所性が高いと判断 → ストア命令に .nta ヒントを付加 局所性の低い部分 実行回数が少ない Block CFG から判断 Block の局所性が低いと判断 → ストア・ロード命令に .nta ヒントを付加 label_b: … br label_b label_a: br label_p label_q: … br.ret label_r: for文, while文がアセンブリプログラムになった形であると考えられる FIT2005

背景と目的 キャッシュヒント キャッシュヒント自動付加手法 - CHSU 評価・まとめ FIT2005

評価 評価環境 – SGI Altix 350 CHSU を使用してキャッシュヒントを付加、性能比較 Itanium2 1.4GHz L1D:16KB, L2:256KB, L3:3MB 使用コンパイラ Intel Compiler 8.1, GCC 3.2.3 CHSU を使用してキャッシュヒントを付加、性能比較 FFTE 4.0 FFT ライブラリ、キャッシュ内での高速な動作 ATLAS 3.6.0 自動チューニング機構を持つ数値計算ライブラリ NAS Parallel Benchmark 並列計算機用のベンチマーク集 Itanium アーキテクチャでは Intel Compiler の方が GCC 3.2.3 より2倍以上高速 数値計算ソフトウェアにキャッシュヒント付加を適用 FFTE 4.0 FFT ライブラリ、キャッシュ内での高速な動作 行列積計算 ATLAS 3.6.0 NPB 3.2 NAS Parallel Benchmark FIT2005

評価(1) – FFTE 4.0 1次元FFT キャッシュヒントの有無による性能を比較 15%性能向上 データサイズを変化させて性能を測定 Itanium2 L3上限 FIT2005

評価(1) – FFTE 4.0 プロセッサイベントの計測 結果から 0.981 0.982 0.401 0.551 1.703 1.754 N=217 Original w/Cache Hint L2 cache hit 0.981 0.982 L3 cache hit 0.401 0.551 IPC 1.703 1.754 Total stalls 0.625 0.605 プロセッサイベントの計測 perfmon 使用 結果から L3 キャッシュのヒット率向上 N=217の場合で15% IPC の向上 Total stalls (全実行時間に占めるプロセッサストールの割合)の減少 15% N=220 Original w/Cache Hint L2 cache hit 0.979 L3 cache hit 0.331 0.337 IPC 1.541 1.570 Total stalls 0.668 0.662 FIT2005

評価(2) – ATLAS 3.6.0 行列積計算 データサイズを変化させて性能を測定 MFLOP ベースで 1%~2% の性能向上 FIT2005

評価(3) – NPB 3.2 NAS Parallel Benchmark 3.2 今回使用したのは逐次実行版 (NPB-SER) Class W, Class A の二種類について評価 EP 乗算合同法による一様乱数、正規乱数の生成 MG 簡略化されたマルチグリッド法のカーネル CG 正値対称な大規模疎行列の最小固有値を求めるための共役勾配法 FT FFTを用いた3次元偏微分方程式の解法 IS 大規模整数ソート Simulated CFD Application Benchmarks LU Synmetric SOR iterationによるCFDアプリケーショ SP Scalar ADI iterationによるCFDアプリケーション BT 5x5 block size ADI iterationによるCFDアプリケーション FIT2005

まとめ 既存のコンパイラを使用して、コンパイル時にキャッシュヒントを付加する手法を提案した 今後の課題 高い汎用性 L3 キャッシュのヒット率向上 → 全体性能向上 今後の課題 性能評価の充実 キャッシュヒント付加方針の検討 バイナリプログラムに対するキャッシュヒント付加 CHSU 公開中 http://www.ueda.info.waseda.ac.jp/~inagaki/chsu/ FIT2005