<4D F736F F F696E74202D F A282BD94BD959C89F A4C E682528D652E707074>

Similar documents
tabaicho3mukunoki.pptx

修士論文

を用いて実装している.. 対象となる演算. による実装と高速化 本研究では反復法ライブラリをベースとしたため, 表 に示す演算のみを実装した. ただしこの実装は一般的な用 途にも適用可能なものである. 演算の名称 Name of calculation 表 演算の一覧 Table list of c

る連続なアクセスができるなどの利点がある. 倍々精度浮動小数は, 符号部 1 bit, 指数部 11 bit, 仮数部 14 (52 2) bit からなる. これは符号部 1bit, 指数部 15 bit, 仮数部 112 bit からなる IEEE754 準拠の 4 倍精度と比 べて指数部が 4

4 倍精度基本線形代数ルーチン群 QPBLAS の紹介 [index] 1. Introduction 2. Double-double algorithm 3. QPBLAS 4. QPBLAS-GPU 5. Summary 佐々成正 1, 山田進 1, 町田昌彦 1, 今村俊幸 2, 奥田洋司

FIT2018( 第 17 回情報科学技術フォーラム ) CB-005 並列処理を用いた対話的多倍長演算環境 MuPAT の高速化 Acceleration of interactive multi-precision arithmetic toolbox MuPAT using parallel

図 2 AVX の SIMD レジスタの構造 Figure 2 Architecture of AVX SIMD register 図 1 倍々精度のビット数 Figure 1 Bit pattern of Double-Double precision number る Double-Double

hirayama

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

スライド 1

スライド 1

Microsoft Word ●IntelクアッドコアCPUでのベンチマーク_吉岡_ _更新__ doc

PowerPoint プレゼンテーション

OpenFOAM(R) ソースコード入門 pt1 熱伝導方程式の解法から有限体積法の実装について考える 前編 : 有限体積法の基礎確認 2013/11/17 オープンCAE 富山富山県立大学中川慎二

プログラミング実習I

Microsoft PowerPoint - sales2.ppt

スライド 1

行列、ベクトル

SIP「次世代農林水産業創造技術」研究開発計画

Microsoft PowerPoint - 11Web.pptx

char int float double の変数型はそれぞれ 文字あるいは小さな整数 整数 実数 より精度の高い ( 数値のより大きい より小さい ) 実数 を扱う時に用いる 備考 : 基本型の説明に示した 浮動小数点 とは数値を指数表現で表す方法である 例えば は指数表現で 3 書く

スライド 1

gengo1-2

反復解法ライブラリーLisの紹介

Microsoft PowerPoint - qcomp.ppt [互換モード]

スライド 1

数値計算

ソフトウェア基礎技術研修

演習1

数学 t t t t t 加法定理 t t t 倍角公式加法定理で α=β と置く. 三角関数

スライド 1

Microsoft PowerPoint - GPUシンポジウム _d公開版.ppt [互換モード]

Microsoft PowerPoint - mp11-06.pptx

インテル アーキテクチャプラットフォーム リーダーシップ 2000 年 12 月 21 日 第 14 回数値流体力学シンポジウム インテル株式会社 ia 技術本部本部長坂野勝美

Microsoft PowerPoint - CSA_B3_EX2.pptx

Microsoft Word - NumericalComputation.docx

vecrot

Microsoft Word - 倫理 第40,43,45,46講 テキスト.docx

Microsoft Word - ニュース200907xabclib-rev1.docx

スライド 1

Microsoft PowerPoint - H22制御工学I-2回.ppt

航空機の運動方程式

PowerPoint プレゼンテーション

スライド 1

連立方程式の解法

情報1(化学科)NO.1 コンピュータシステムの基礎と データの表現方法

この方法では, 複数のアドレスが同じインデックスに対応づけられる可能性があるため, キャッシュラインのコピーと書き戻しが交互に起きる性のミスが発生する可能性がある. これを回避するために考案されたのが, 連想メモリアクセスができる形キャッシュである. この方式は, キャッシュに余裕がある限り主記憶の

スライド 1

計算機アーキテクチャ

情報1(化学科)NO.1 コンピュータシステムの基礎と データの表現方法

Microsoft PowerPoint - 10.pptx

PowerPoint プレゼンテーション

(Microsoft PowerPoint - \221\34613\211\361)

Microsoft PowerPoint - SWoPP06HayashiSlides.ppt

航空機の運動方程式

PowerPoint プレゼンテーション

適応フィルタのSIMD最適化

テンソル ( その ) テンソル ( その ) スカラー ( 階のテンソル ) スカラー ( 階のテンソル ) 階数 ベクトル ( 階のテンソル ) ベクトル ( 階のテンソル ) 行列表現 シンボリック表現 [ ]

09.pptx

memo

Autodesk Inventor Skill Builders Autodesk Inventor 2010 構造解析の精度改良 メッシュリファインメントによる収束計算 予想作業時間:15 分 対象のバージョン:Inventor 2010 もしくはそれ以降のバージョン シミュレーションを設定する際

差分スキーム 物理 化学 生物現象には微分方程式でモデル化される例が多い モデルを使って現実の現象をコンピュータ上で再現することをシミュレーション ( 数値シミュレーション コンピュータシミュレーション ) と呼ぶ そのためには 微分方程式をコンピュータ上で計算できる数値スキームで近似することが必要

GeoFEM開発の経験から

コンピュータ工学Ⅰ

コンピュータ工学Ⅰ

C 言語第 7 回 掛け算 (multiply number) ìz1 = x1 + iy1 í îz = x + iy 割り算 (devide number) ( )( ) ( ) Þ z z = x + iy x + iy = x x - y y + i y x + x y

<4D F736F F F696E74202D2091E63489F15F436F6D C982E682E992B48D8291AC92B489B F090CD2888F38DFC E B8CDD8

復習 プログラミング 1 ( 第 4 回 ) 関数の利用 2 ループ処理 (while 文 ) 1. Chapter の補足 2 1. 関数とローカル変数 2. Chapter 3.1 の補足 1. Iteration, looping ( 反復処理 ) 2. ループ処理の例 実行例 3

九州大学学術情報リポジトリ Kyushu University Institutional Repository マッスル サーバー ( 汎用 PC クラスタ + 特定計算向けハードウェア ) の開発 : 分子軌道法を例にして 村上, 和彰九州大学大学院システム情報科学研究院 九州大学情報基盤センタ

3次多項式パラメタ推定計算の CUDAを用いた実装 (CUDAプログラミングの練習として) Implementation of the Estimation of the parameters of 3rd-order-Polynomial with CUDA

Microsoft PowerPoint - H22制御工学I-10回.ppt

HPCマシンの変遷と 今後の情報基盤センターの役割

VOLTA TENSOR コアで 高速かつ高精度に DL モデルをトレーニングする方法 成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12

Microsoft Word - HOKUSAI_system_overview_ja.docx

Agenda GRAPE-MPの紹介と性能評価 GRAPE-MPの概要 OpenCLによる四倍精度演算 (preliminary) 4倍精度演算用SIM 加速ボード 6 processor elem with 128 bit logic Peak: 1.2Gflops

PowerPoint プレゼンテーション

PowerPoint Presentation

memo

Microsoft Word - no02.doc

スライド 1

FEM原理講座 (サンプルテキスト)

解析力学B - 第11回: 正準変換

Microsoft Word - thesis.doc

平成 22 年度 革新的な三次元映像技術による超臨場感コミュニケーション技術研究開発 の開発成果について 1. 施策の目標 人体を収容できる大きさの 3 次元音響空間についてリアルタイムに音響レンダリングできるシステム ( シリコンコンサートホール ) を 2013 年までに開発する 具体的には,

Microsoft Word ●書式付IO性能_杉崎_ _更新__ doc

Microsoft PowerPoint - Lecture ppt [互換モード]

Microsoft PowerPoint - 2.ppt [互換モード]

パソコンシミュレータの現状

高性能計算研究室の紹介 High Performance Computing Lab.

Microsoft Word - 漸化式の解法NEW.DOCX

cp-7. 配列

VXPRO R1400® ご提案資料

最新の並列計算事情とCAE

線積分.indd

計算機シミュレーション

アルゴリズムとデータ構造

…好きです 解説

Transcription:

発表の流れ SSE を用いた反復解法ライブラリ Lis 4 倍精度版の高速化 小武守恒 (JST 東京大学 ) 藤井昭宏 ( 工学院大学 ) 長谷川秀彦 ( 筑波大学 ) 西田晃 ( 中央大学 JST) はじめに 4 倍精度演算について Lisへの実装 SSEによる高速化 性能評価 スピード 収束 まとめ はじめに クリロフ部分空間法たとえば CG 法は, 理論的には高々 n 回 (n は係数行列の次元数 ) の反復で収束 丸め誤差の影響 収束までに多くの反復が必要 停滞 収束の改善には高精度演算, 例えば 4 倍精度演算が有効であるが計算コスト大 反復解法ライブラリ Lis へ 4 倍精度演算を実装 4 倍精度演算に SSE を活用して高速化 double-double 精度演算 FRTRAN は 4 倍精度浮動小数をサポート 5 ビット Bailey 倍精度浮動小数を 個用いて 4 倍精度を実現 double-double 精度 a = a.hi + a.lo, a.hi > a.lo ビット IEEE754 準拠の 4 倍精度の表現形式 double-double 精度の表現形式 仮数部 5 ビット 仮数部 ビット ビット 仮数部 5 ビット 基本演算 ( 表記 ) fl(a+ b) :a + bの倍精度浮動小数加算 err(a + b): a + b = fl(a + b) + err(a + b) 乗算 a bについても同様 4 倍精度四則演算のための倍精度基本演算 s=fl(a+b), e=err(a+b) を計算. a >= b FAST_TW_SUM(a,b,s,e) { s = a + b e = b - (s - a) s=fl(a+b), e=err(a+b) を計算. TW_SUM(a,b,s,e) { s = a + b v = s - a e = (a - (s - v)) + (b - v) a を a=h+l に分割 ( 仮数部を 6bit ずつに ) SPLIT(a,h,l) { t = 34779. * a h = t - (t - a) l = a - h p=fl(a b),e=err(a b) を計算 TW_PRD(a,b) { p = a * b SPLIT(a,ah,al) SPLIT(b,bh,bl) e = ((ah*bh-p)+ah*bl+al*bh)+al*bl

4 倍精度加算 乗算 Lis への実装 加算 a = b + c. a=(a.hi,a.lo), b=(b.hi,b.lo), c=(c.hi,c.lo) ADD(a,b,c) { TW_SUM(b.hi,c.hi,sh,eh) TW_SUM(b.lo,c.lo,sl,el) FAST_TW_SUM(sh,eh,sh,eh) FAST_TW_SUM(sh,eh,a.hi,a.lo) 乗算 a = b c MUL(a,b,c) { TW_PRD(b.hi,c.hi,p,p) p = p + (b.hi * c.lo) p = p + (b.lo * c.hi) FAST_TW_SUM(p,p,a.hi,a.lo) Lis 反復解法ライブラリ さまざまな反復法 前処理が組合わせて使える 反復解法を 4 倍精度演算に置き換え 行列ベクトル積 (matvec) ベクトルの内積 (dot) ベクトルおよびその実数倍の加減 (axpy) Lis への実装の条件 ユーザーインタフェイスに影響を与えることなく 4 倍精度演算が利用できるよう以下のようにする 係数行列 A, 右辺ベクトル b は倍精度 解ベクトル x の入出力は倍精度, 反復解法中では 4 倍精度 反復解法中のベクトル, スカラーは 4 倍精度 混合精度演算関数が必要 matvec, dot, axpy 主な処理は積和演算. (Floating Multiply-Add) 4 倍精度の積和演算関数 dot と axpy で利用. D 混合精度 (4 倍精度と倍精度 ) の積和演算関数 matvec で利用 D の実装 4 倍精度 vs 倍精度 a = a + b c (a,b,c) { TW_PRD(b.hi,c.hi,p,p) p = p + (b.hi * c.lo) p = p + (b.lo * c.hi) FAST_TW_SUM(p,p,p,p) TW_SUM(a.hi,p,sh,eh) TW_SUM(a.lo,p,sl,el) FAST_TW_SUM(sh,eh,sh,eh) FAST_TW_SUM(sh,eh,a.hi,a.lo) D a = a + b c D(a,b,c) { TW_PRD(b,c.hi,p,p) p = p + (b * c.lo) FAST_TW_SUM(p,p,p,p) TW_SUM(a.hi,p,sh,eh) TW_SUM(a.lo,p,sl,el) FAST_TW_SUM(sh,eh,sh,eh) FAST_TW_SUM(sh,eh,a.hi,a.lo) ポアソン方程式を 5 点中心差分で離散化した行列 ( 次数,,) 行列格納形式は CRS 前処理なし BiCG 法を 5 回反復 FRTRAN4 倍精度 matvecでを利用 matvec で D を利用 倍精度 実行時間 ( 比 ) 3.6 8.6 8.7.

SSE(Streaming SIMD Extension) SSE は Intel Pentium4 に搭載された x87 命令に代わる高速化命令 8bit のデータに対して SIMD 処理 64bit 倍精度浮動小数なら同時に つの演算 SSE の組込み関数を利用 SSE 化の つのアプローチ A: 四則演算関数の SSE 化 演算の依存関係が存在 関数 _SSE, D_SSE を用意 B: dot, axpy, matvec を含めた SSE 化 段のループアンローリングを行うと が 回 個同時に積和演算をする関数 _SSE, D_SSE を用意 A: 四則演算関数の SSE 化 依存関係のため約 5% 程度しか SSE の pd 命令で処理できない _SSEのADD:pdで処理できる部分 xb = _mm_loadu_pd((double*)b); xc = _mm_loadu_pd((double*)c); xs = _mm_add_pd(xb,xc); xe = _mm_sub_pd(xs,xb); xt = _mm_sub_pd(xs,xe); xc = _mm_sub_pd(xc,xe); xb = _mm_sub_pd(xb,xt); xb = _mm_add_pd(xb,xc); xe = _mm_unpackhi_pd(xb,xb); xc = _mm_unpackhi_pd(xs,xs); _SSEのADD :pdで処理できない部分 xt = xs; xb = _mm_add_sd(xb,xc); xt = _mm_add_sd(xt,xb); xs = _mm_sub_sd(xt,xs); xb = _mm_sub_sd(xb,xs); xb = _mm_add_sd(xb,xe); xc = _mm_add_sd(xt,xb); _mm_store_sd(&a->hi,xc); xc = _mm_sub_sd(xc,xt); xb = _mm_sub_sd(xb,xc); _mm_store_sd(&a->lo,xb); B:dot,axpy,matvec を含めた SSE 化 %SSE の pd 命令で処理できる bh = _mm_loadu_pd(&y[i]); bl = _mm_loadu_pd(&yl[i]); sh = _mm_add_pd(bh,ch); th = _mm_sub_pd(sh,bh); t = _mm_sub_pd(sh,th); ch = _mm_sub_pd(ch,th); bh = _mm_sub_pd(bh,t); bh = _mm_add_pd(bh,ch); sl = _mm_add_pd(bl,p); th = _mm_sub_pd(sl,bl); t = _mm_sub_pd(sl,th); p = _mm_sub_pd(p,th); _SSE の ADD の部分 bl = _mm_sub_pd(bl,t); bl = _mm_add_pd(bl,p); bh = _mm_add_pd(bh,sl); th = sh; th = _mm_add_pd(th,bh); sh = _mm_sub_pd(th,sh); bh = _mm_sub_pd(bh,sh); bh = _mm_add_pd(bh,bl); sh = _mm_add_pd(th,bh); _mm_storeu_pd(&y[i],sh); sh = _mm_sub_pd(sh,th); bh = _mm_sub_pd(bh,sh); _mm_storeu_pd(&yl[i],bh); 性能評価 テスト行列 疎行列反復解法において 前処理なしの BiCG 法を用いて比較 Lis の倍精度 FRTRAN で作成した 4 倍精度 Lis の 4 倍精度 ( を利用 ) Lis の 4 倍精度 (_SSE を利用 A) Lis の 4 倍精度 (_SSE を利用 B) 行列 A ポアソン方程式を5 点中心差分で離散化 行列 A Toeplitz 行列 γ 右辺ベクトルbはすべてを 初期ベクトルx はすべてを 収束判定基準は相対残差ノルム - γ γ 3

CPU Clock LD Cache L Cache Memory S Compiler 計算環境 Linux.4.smp.8GHz 8KB 5KB GB Intel C++ 9. Intel Fortran 9. pteron Linux.6.4smp.GHz 64KB MB GB 最適化オプションは -3 が記述されている C ファイルは浮動小数の最適化を抑制 (-mp) スピードテスト テスト行列 A で 5 回反復した結果 次数 倍精度 FRTRAN _SSE _SSE.34.4.646.49.3.79.786.6356.488.33.577.79.66783.585.3364.8734.985 6.8664 5.987 3.466 8.44 99.388 68.9387 53.4777 34.9778 算術平均.86557 44.3665 5.9864.85944 7.74985 pteron 次数 倍精度 FRTRAN _SSE _SSE.37.86.669.457.36.357.837.6687.456.37.44.7888.68794.4766.337.67599 7.95484 7.3384 4.8489 3.4769 7.955 79.85377 7.953 48.4959 34.934 算術平均.58384 7.737 5.59738.767 7.749 スピードテストのまとめ _SSEの性能 比較対象 pteon.9.46 _SSEの性能 比較対象 pteon..7 FRTRAN 6.4.4 倍精度.7.5 スピードテスト (N= 6 ) pteron FRTRAN 99. (4) 79.8 () 68.9 (8.) 7. (9.9) _SSE 53.4 (6.4) 48.4 (6.8) _SSE 34.9 (4.) 34.9 (4.9) 倍精度 8.4 () 7. () スピードテストのまとめ ( 続 ) 4. 3.5 3..5..5..5...4 倍精度倍精度 ( 比例 ) _SSE _SSE( 比例 ).3.93 4 6 8 次数 倍精度演算は, から徐々に大きく増加, で LD 8KB, で L 5KB から外れる 4 倍精度演算は次数にほぼ比例して増加 4 倍精度演算はデータのロードとストアよりも演算の割合が大きい 収束テスト 上でテスト行列 A( 次数,) の結果 (, 反復回数, 残差ノルム ) 倍精度 FRTRAN _SSE γ 実行時間反復回数 残差 実行時間 反復回数 残差 実行時間反復回数残差.7866 58.84E- 8.69 58.84E- 3.78737 58.84E-..9436 7.3E-.7676 7.3E- 4.583 7.3E-..744 86 3.3E- 7.9793 86 3.3E- 5.6647 86 3.3E-.3 36.534 3.47E- 7.445 3.47E-.4 7.887 55.85E-.3 55.85E- γ =. までは両方ともに収束している γ =.3 以上では倍精度は停滞.4 倍精度は収束 完全な 4 倍精度と _SSE は同等の収束性 4

新演算精度を変えたリスタート 倍精度で解いた解 ( あるいは途中の値 ) を初期値として 4 倍精度で解く for(k=;k< 最大反復回数 ;k++) { 倍精度演算の反復解法 if( nrm<restart_tol ) break; for(k=k+;k< 最大反復回数 ;k++) { 4 倍精度演算の反復解法 nrmは相対残差ノルム restart_tolはリスタートするための判定基準 精度を変えたリスタートの結果 上でテスト行列 A( 次数,) γ=.3, restart_tol を -6 とした場合 4 倍精度 リスタート 7.4 4.43 ( 倍 :.45,4 倍 :3.98) 反復回数 3 4 ( 倍 :35,4 倍 :69) 4 倍精度で解いた場合と比べて.67 倍速い 倍精度で解いた場合と比べて 倍 まとめ SSE を用いた 4 倍精度演算を実装 Lis へ double-double 精度演算を実装 係数行列 A, 右辺ベクトル b は倍精度 解ベクトル x の入出力は倍精度, 反復解法中では 4 倍精度 反復解法中のベクトル, スカラーは 4 倍精度 四則演算関数の SSE 化 dot, axpy, matvec を含めた SSE 化 まとめ ( 続き ) スピードテストより 完全な 4 倍精度と比較して平均 4.33 倍 段のアンローリングにより約 倍の高速化 倍精度の約 4.5 倍程度 収束テストより 完全な 4 倍精度とほぼ同等の収束特性 収束の改善を図る新たな手法が可能となった 倍精度と 4 倍精度の混合精度の反復解法 まとめ ( 続き ) 高精度演算の展望 ILU 前処理などの逐次的な前処理を利用しなくとも少ない反復回数で収束する可能性 データアクセスよりも演算の割合が大きく並列化には適している 並列化によって倍精度との性能差は縮まりより現実的になる 今後の課題 4 倍精度をうまく活用して収束性を向上, 安定して解けるロバストなライブラリの開発 5