計算理工学基礎 「ハイパフォーマンスコンピューティングの基礎」

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 モデル上での 行列積を求めるアルゴリ ム 情報論理工学 吉岡健太.
Level-3 BLASに基づく特異値分解 アルゴリズムのSMP上での性能
CPUとGPUの 性能比較 -行列計算およびN体問題を用いて-
計算理工学基礎 「ハイパフォーマンスコンピューティングの基礎」
キャッシュ付PRAM上の 並列クィックソートと 並列マージソート
CPUについて HN:セシル.
基本情報技術概論(第10回) 埼玉大学 理工学研究科 堀山 貴史
Ibaraki Univ. Dept of Electrical & Electronic Eng.
Intel AVX命令を用いた並列FFTの実現と評価
Fill-in LevelつきIC分解による 前処理について
A Q R QR分解とは? → × ◆QR分解 QTQ = I (単位行列) ◆応用例 ◆主な計算方法 n m 今回はこの方法に注目
LZ圧縮回路の設計とハード・ソフト 最適分割の検討 電子情報デザイン学科 高性能計算研究室 4回生 中山 和也 2009/2/27.
三重対角化アルゴリズムの性能評価 早戸拓也・廣田悠輔.
研究集会 「超大規模行列の数理的諸問題とその高速解法」 2007 年 3 月 7 日 完全パイプライン化シフト QR 法による 実対称三重対角行列の 固有値並列計算 宮田 考史  山本 有作  張 紹良   名古屋大学 大学院工学研究科 計算理工学専攻.
対角マトリックスを用いた3次元剛塑性有限要素法の並列計算 対角マトリックスを用いた剛塑性有限要素法
AllReduce アルゴリズムによる QR 分解の精度について
神奈川大学大学院工学研究科 電気電子情報工学専攻
P,Q比が変更可能なScaLAPACKの コスト見積もり関数の開発
分散遺伝的アルゴリズムによる各種クラスタのベンチマーク
各種PC クラスタの性能評価 同志社大学 工学部 廣安 知之 三木 光範 谷村 勇輔.
PCクラスタ上での 連立一次方程式の解の精度保証
首都大学東京 都市教養学部数理科学コース 関谷博之
応用数理工学特論 線形計算と ハイパフォーマンスコンピューティング
応用数理工学特論 線形計算と ハイパフォーマンスコンピューティング
スパコンとJLDG HEPの計算環境 HEPnet-J
応用数理工学特論 第5回 計算理工学専攻 張研究室 山本有作.
演算/メモリ性能バランスを考慮した マルチコア向けオンチップメモリ貸与法
応用数理工学特論 線形計算と ハイパフォーマンスコンピューティング
応用数理工学特論 線形計算と ハイパフォーマンスコンピューティング
正方行列向け特異値分解の CUDAによる高速化
応用数理工学特論 線形計算と ハイパフォーマンスコンピューティング
MPIによる行列積計算 情報論理工学研究室 渡邉伊織 情報論理工学研究室 渡邉伊織です。
文献名 “Performance Tuning of a CFD Code on the Earth Simulator”
OpenMPハードウェア動作合成システムの検証(Ⅰ)
応用数理工学特論 線形計算と ハイパフォーマンスコンピューティング
応用数理工学特論 第6回 計算理工学専攻 張研究室 山本有作.
高速剰余算アルゴリズムとそのハードウェア実装についての研究
応用数理工学特論 第9回 高速フーリエ変換の高性能化手法
MPIを用いた最適な分散処理 情報論理工学研究室 角 仁志
応用数理工学特論 第9回 高速フーリエ変換とその並列化
コンピュータを知る 1E16M009-1 梅津たくみ 1E16M017-8 小沢あきら 1E16M035-0 柴田かいと
Level-3 BLASに基づく二重対角化 アルゴリズムとその性能評価
#6 性能向上、ブレイクスルー、集中と分散 Yutaka Yasuda.
コンピュータの歴史 〜計算速度の進歩〜 1E15M009-3 伊藤佳樹 1E15M035-2 柴田将馬 1E15M061-1 花岡沙紀
Jh NAHI 横田 理央 (東京工業大学) Hierarchical low-rank approximation methods on distributed memory and GPUs 背景  H行列、H2行列、HSS行列などの階層的低ランク近似法はO(N2)の要素を持つ密行列をO(N)の要素を持つ行列に圧縮することができる。圧縮された行列を用いることで、行列積、LU分解、固有値計算をO(NlogN)で行うことができるため、従来密行列の解法が用いられてきた分野では階層的低ランク近似法
九州大学情報基盤研究開発センター長 青柳 睦
導電性高分子材料の電子状態計算に現れる連立一次方程式に対する 並列直接解法の高性能化
GPUを用いた疎行列の格納形式による行列ベクトル積の評価
目的:高速QR分解ルーチンのGPUクラスタ実装
コンピュータの仕組み 〜ハードウェア〜 1E15M009-3 伊藤佳樹 1E15M035-2 柴田将馬 1E15M061-1 花岡沙紀
VMが利用可能なCPU数の変化に対応した 並列アプリケーション実行の最適化
岩澤全規 理化学研究所 計算科学研究機構 粒子系シミュレータ研究チーム 2015年7月22日 AICS/FOCUS共催 FDPS講習会
第4回 メモリ管理 主記憶(メインメモリ)の管理 固定区画方式と可変区画方式 空き領域の管理 スワッピング.
情報基礎Ⅱ (第1回) 月曜4限 担当:北川 晃.
計算機アーキテクチャ1 (計算機構成論(再)) 第一回 計算機の歴史、基本構成、動作原理
高精細計算を実現するAMR法フレームワークの高度化 研究背景と研究目的 複数GPU間での袖領域の交換と効率化
社会の情報インフラストラクチャとして、高性能コンピュータおよびネットワークの重要性はますます増大しています。本研究室では、コンピュータおよびネットワークの高速化を狙いとする並列・分散情報処理の科学と技術に関する研究に取り組んでいます。効率のよいシステムの実現を目指して、下記の項目を追求しています。 ◇コンピュータアーキテクチャ.
メモリ使用量の少ないGCR法の提案 東京大学理学部情報科学科 工藤 誠 東京大学情報基盤センター 黒田 久泰
理工学部情報学科 情報論理工学研究室 延山 周平
第4回 CPUの役割と仕組み2 命令の解析と実行、クロック、レジスタ
MPIを用いた並列処理計算 情報論理工学研究室 金久 英之
密行列固有値解法の最近の発展 (I) - Multiple Relatively Robust Representation アルゴリズム - 2004年11月26日 名古屋大学 計算理工学専攻 山本有作 日立製作所の山本有作です。 「~」について発表いたします。
情報論理工学 研究室 第1回:並列とは.
キャッシュマシン向け三重対角化 アルゴリズムの性能予測方式
応用数理工学特論 線形計算と ハイパフォーマンスコンピューティング
MPIを用いた 並列処理 情報論理工学研究室 06‐1‐037‐0246 杉所 拓也.
分散メモリ型並列計算機上での行列演算の並列化
Ibaraki Univ. Dept of Electrical & Electronic Eng.
2008年 7月17日 応用数理工学特論 期末発表 鈴木綾華,程飛
Presentation transcript:

計算理工学基礎 「ハイパフォーマンスコンピューティングの基礎」 2007年5月8日 計算数理グループ 張研究室 山本有作 日立製作所の山本有作です。 「~」について発表いたします。

計算科学・工学における大規模シミュレーション 流体計算 電子状態計算 構造解析 電子状態計算 数万~数億の自由度を持つ超多自由度の系 解析のために多大な計算機パワーが必要

ハイパフォーマンスコンピューティング(HPC)技術とは 大規模な計算を高速かつ高精度に行うための技術 HPC技術の内容 高速・高精度な計算アルゴリズム 単体プロセッサ向けの性能最適化技術 並列化技術 ネットワーク・GRID技術

PC向けプロセッサの クロック周波数の向上 周波数は10年間で約50倍も向上 たとえば AMD Opteronプロセッサ(1.6GHz)の場合,1秒間に最高で32億回の浮動小数点演算を実行可能   (3200MFLOPSのピーク性能)

それでは,一般的な科学技術計算のプログラムでは,ピーク性能の何%程度を発揮できているか? 例: 連立一次方程式を解くためのガウスの消去法 do k=1, n do i=k+1, n a(i,k)=a(i,k)/a(k,k) end do do j=k+1, n a(i,j)=a(i,j)–a(i,k)*a(k,j) n=1000のとき,Opteronでの性能はピークの何%? 10% 30% 50% 80%

Opteronでの性能測定結果 n=1000 での性能は225MFLOPS(ピークの7%) n が大きくなるにつれ,性能は低下 Performance (MFLOPS) n

ピークよりはるか下の性能しか得られない原因は? 最大の要因は,データ転送速度のネック 計算を行うには,主メモリに格納されているデータをプロセッサ内の演算器に転送する必要あり。 演算器は十分速いが,データを供給する速度が追い付かない。 それでは,データ転送速度のネックを解消するにはどうすればよいか?   まず,プロセッサのアーキテクチャを知る必要がある。

典型的なマイクロプロセッサのメモリ階層 演算器に近い記憶装置ほど高速だが,容量は小さい。 演算器と主メモリの速度差は,年々大きくなっている。 データ転送速度 非常に大 レジスタ 演算器 8~128 ワード データ転送速度大 キャッシュ 数100Kバイト ~ 数Mバイト データ転送速度小 ラインサイズ 主メモリ 数100Mバイト ~ 数Gバイト 演算器に近い記憶装置ほど高速だが,容量は小さい。 演算器と主メモリの速度差は,年々大きくなっている。

性能最適化の原理 データがレジスタ中にあれば,演算器は最高速度で計算が可能   いったんデータをレジスタに持ってきたら,そのデータに対して必要な計算を集中して行うよう,計算の順序を変更する。   (データ参照の局所性を高める。) キャッシュと主メモリについても,同じ方針で最適化を行う。

性能最適化の具体例 もっとも単純なアルゴリズムである行列乗算 C=AB に対して最適化を行う。 最適化前のプログラム do i=1, n do j=1, n sum=0.0d0 do k=1, n sum=sum+a(i,k)*b(k,j) end do c(i,j)=sum 性能 = 77.7MFLOPS (Opteron 1.6GHz,n=500) ピーク性能の2.4%

レジスタの再利用性を高める最適化(レジスタブロッキング) iのループを2倍展開 →  162.8MFLOPS i, jの各ループを2倍展開 → 240.8MFLOPS iを4倍,jを2倍展開 → 324.7MFLOPS i, jの各ループを4倍展開 → 495.5MFLOPS

キャッシュの再利用性を高める最適化(キャッシュブロッキング) 行列を部分行列(1個がL×L)に分割 部分行列単位で乗算を行う。 Lは部分行列3個がキャッシュに格納できるサイズに取る。 演算量は同じだが,主メモリへのアクセス回数が約1/Lに減少する。 do I=1, n/L do J=1, n/L CIJ=0 do K=1, n/L CIJ=CIJ + AIKBKJ end do

キャッシュブロッキングの効果 Block size

これまでに説明した最適化手法の限界 レジスタブロッキングとキャッシュブロッキングの併用により,行列乗算の性能は800MFLOSまで向上できた。 しかし,ピーク性能に対しては,まだ25%に過ぎない。 その理由 実際のプロセッサでは,キャッシュが2階層になっている。 データ転送速度だけでなく,アクセス遅延時間も考慮した最適化が必要,など。 性能を最大限に引き出すには,これらの点も考慮した最適化が必要

BLAS (Basic Linear Algebra Subprograms) 行列乗算 行列とベクトルの積 ベクトルの和,内積,など。 ATLAS(Automatically Tuned Linear Algebra Subprograms) 自分で自分を最適化するBLAS インストール時に,ループ展開のサイズやキャッシュブロッキングのサイズなどの最適値を自分で探し,設定。

ATLASの性能 n=1000のとき,ピーク性能の95%以上を達成している。

その他の行列乗算の高速化手法 Strassenのアルゴリズム A,B,Cをそれぞれ2×2に分割して乗算を行う。 乗算の回数を7/8に削減可能 Strassenのアルゴリズムで現れる小行列の乗算に再帰的にStrassenのアルゴリズムを使うことにより,計算量を更に削減可能

Strassenのアルゴリズム P1 = (A11+A22) (B11+B22) P2 = (A21+A22) B11 P3 = A11 (B12 – B22) P4 = A22 (B21 – B11) P5 = (A11+A12) B22 P6 = (A21 – A11) (B11+B12) P7 = (A12 – A22) (B21+B22) C11 = P1 + P4 – P5 + P7 C12 = P3 + P5 C21 = P2 + P4 C22 = P1 + P3 – P2 + P6

ガウスの消去法を行列乗算を用いて書き直してみる。 行列乗算の応用 行列乗算は,高度な最適化が可能であり,性能も高い。 他のアルゴリズムも行列乗算を用いて計算を行うように書き直すことができれば,BLAS や ATLAS を用いて高速化が可能 ガウスの消去法を行列乗算を用いて書き直してみる。

行列乗算を用いたガウスの消去法の性能 n=1000のとき,ピークの65%以上の性能を達成

並列計算機の種類と特徴 共有メモリ型並列計算機 分散メモリ型並列計算機 SMPクラスタ 情報連携基盤センターの並列計算機 はじめに,研究の背景として,有限要素法とスパースソルバの必要性についてご説明します。

スーパーコンピュータの性能動向 性能 年 2010 2000 1990 1980 1970 1960 1PFLOPS スカラー機 ASCI-5 性能 ベクトル機 ASCI-4 地球シミュレータ ベクトル並列機 SR8000 並列機 VPP500 T3E-900 1TFLOPS CM-5 SR2201 nCUBE2 S3800 X-MP 1GFLOPS CRAY-1 S-810 スカラー/ベクトル機 → 並列機 CDC6600 (10 times faster / 20 years) 4 1MFLOPS IBM360/95 年 2010 2000 1990 1980 1970 1960

並列計算機の登場 並列計算機の普及の背景 並列計算機の特長 並列計算機の問題点 プロセッサの動作周波数向上の飽和 専用スーパーコンピュータの設計コストの増加 並列計算機の特長 プロセッサ数を増やすことでピーク性能を無制限に向上可能 分散メモリ型並列機では,プロセッサ数に比例した大きなメモリ空間が利用可能 汎用のプロセッサを使うことで設計コストを大幅に削減可能 並列計算機の問題点 多数のプロセッサを効率良く働かせるには,良い並列化アルゴリズムが必要

並列処理による高速化 複数のプロセッサで処理を分担することにより,プログラムの実行時間を短縮 プログラムの中で並列化対象部分の占める割合が大きいほど,高速化の効果が大きい 1プロセッサ 並列計算機

さまざまな並列計算機 共有メモリ型並列計算機(SMP) SMPクラスタ 分散メモリ型並列計算機 地球シミュレータ Itaniumサーバ Power Mac G5 分散メモリ型並列計算機 日立 SR11000 並列計算機の主流は,両者を融合させた形のSMPクラスタへ。 日立 SR2201 PCクラスタ Power Mac G5 クラスタ

チップレベルでの並列処理 最近では,ゲーム機の専用プロセッサが非常に高性能化 Xbox360用プロセッサ: 汎用PCの6倍の性能 PlayStation3用プロセッサ(Cell): 汎用PCの20倍の性能 これらを数値計算に活用できれば,非常に低コストで 超高速の計算が可能 Cell プロセッサ写真 Cell プロセッサブロック図 (9個のCPUを内蔵) PlayStation3

共有メモリ型並列計算機 構成 特徴 プログラミング言語 複数のプロセッサ(PU)がバスを 通してメモリを共有   通してメモリを共有 PUはそれぞれキャッシュを持つ。 特徴 メモリ空間が単一のためプログラミングが容易 PUの数が多すぎると,アクセス競合により性能が低下   → 4~8台程度の並列が多い。 プログラミング言語 OpenMP (FORTRAN/C/C++ + 指示文)を使用 キャッシュ PU0 PU1 PU2 PU3 バス メモリ

分散メモリ型並列計算機 構成 特徴 プログラミング言語 各々がメモリを持つ複数のPUを ネットワークで接続 PUはそれぞれキャッシュを持つ。   ネットワークで接続 PUはそれぞれキャッシュを持つ。 特徴 数千~数万PU規模の並列が可能 PU間へのデータ分散を意識したプログラミングが必要 プログラミング言語 FORTRAN/C/C++ + MPI を使用 キャッシュ PU0 PU1 PU2 PU3 メモリ ネットワーク

SMPクラスタ 構成 特徴 プログラミング 複数の共有メモリ型並列計算機 (SMP)をネットワークで接続 各ノードの性能を高くできるため,比較的少ないノード数で高性能を達成できる。 プログラミングは,ノード内部の計算では共有メモリ型並列機として,ノードをまたがる計算では分散メモリ型並列機として行う。 プログラミング MPI と OpenMP とを組み合わせて使用 PU0 PU1 PU2 PU3 メモリ PU0 PU1 PU2 PU3 メモリ PU0 PU1 PU2 PU3 メモリ ネットワーク

情報連携基盤センターの並列計算機 富士通 PrimePower HPC2500 (SMPクラスタ) 講義での利用 8GFLOPS/プロセッサ 64プロセッサ/ノード 全24ノード 全体で12TBの主記憶 講義での利用 ID: w49021a ~ w49040a Password: mpi2006 PU0 PU1 PU2 PU3 メモリ ネットワーク

並列アルゴリズムの例 (1) 数値積分によるπの計算 計算の並列化 π =∫0 1 4/(1+x2) dxの積分区間をn等分し,中点則により計算。 計算の並列化 n個の長方形を4個のプロセッサに割り当て,担当する長方形の面積の計算と部分和の計算を各プロセッサが行う。 各プロセッサからの寄与を合計する処理はプロセッサ0が行う。 4/(1+x2) x 1 プロセッサ0 プロセッサ1 プロセッサ2 プロセッサ3

並列アルゴリズムの例 (2) 2次元領域の温度変化の計算 計算の並列化 プロセッサ0 プロセッサ1 各格子点での温度変化を,隣接する4個の格子点との温度差から計算。 計算の並列化 格子を4個の領域に分割し,各領域に属する格子点での温度変化をその領域の担当プロセッサが計算。 プロセッサ2 プロセッサ3

分散メモリ型並列計算機での並列化 分散メモリ プロセッサ間通信 プロセッサ0 プロセッサ1 通信 各プロセッサは固有のメモリ空間を持ち,自分の担当する部分データを格納する。 共有メモリ方式に比べハードが作りやすく,超並列機に向く。 プロセッサ間通信 他プロセッサの持つデータを参照するには,通信が必要。 通信 プロセッサ2 プロセッサ3

分散メモリ型並列計算機での並列化(続き) プロセッサ0 プロセッサ1 プログラム例 通信 PROGRAM HEAT REAL*8 A(4,4) ◆ 初期設定 DO ITER=1, 100 DO I=1, 4 DO J=1, 4 ◆ 必要なら隣接プロセッサ         よりAの値を受け取る ◆ A(I,J)の値を更新 END DO ◆ 結果の出力 STOP END プロセッサ2 プロセッサ3

並列化効率の向上 並列実行時間=演算時間+通信時間+待ち時間 並列化効率= 1プロセッサでの実行時間 pプロセッサでの実行時間 × p プロセッサ0 プロセッサ1 プロセッサ2 プロセッサ3 時間 : 演算時間 : 通信時間 : 待ち時間