修士論文

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

<4D F736F F F696E74202D F A282BD94BD959C89F A4C E682528D652E707074>

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

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

tabaicho3mukunoki.pptx

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

PowerPoint プレゼンテーション

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

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

Microsoft PowerPoint - 11Web.pptx

スライド 1

スライド 1

PowerPoint プレゼンテーション

hpc141_shirahata.pdf

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

PowerPoint Presentation

Microsoft PowerPoint - sales2.ppt

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

VXPRO R1400® ご提案資料

計算機アーキテクチャ

untitled

倍々精度RgemmのnVidia C2050上への実装と応用

資料3 今後のHPC技術に関する研究開発の方向性について(日立製作所提供資料)

hirayama

memcached 方式 (No Replication) 認証情報は ログインした tomcat と設定された各 memcached サーバーに認証情報を分割し振り分けて保管する memcached の方系がダウンした場合は ログインしたことのあるサーバーへのアクセスでは tomcat に認証情報

適応フィルタのSIMD最適化

スライド 1

openmp1_Yaguchi_version_170530

コンピュータ工学Ⅰ

並列・高速化を実現するための 高速化サービスの概要と事例紹介

本文ALL.indd

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

(速報) Xeon E 系モデル 新プロセッサ性能について

コンピュータ工学Ⅰ

2.1 インテル マイクロアーキテクチャー Haswell インテル マイクロアーキテクチャー Haswell は インテル マイクロアーキテクチャー Sandy Bridge とインテル マイクロアーキテクチャー Ivy Bridge の成功を受けて開発された この新しいマイクロアーキテクチャーの

N08

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

スライド 1

ex04_2012.ppt

Microsoft PowerPoint - DNS_BoF_SCS_ pptx

211 年ハイパフォーマンスコンピューティングと計算科学シンポジウム Computing Symposium 211 HPCS /1/18 a a 1 a 2 a 3 a a GPU Graphics Processing Unit GPU CPU GPU GPGPU G

三者ミーティング

インテル(R) Visual Fortran Composer XE

Microsoft PowerPoint - GPGPU実践基礎工学(web).pptx

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

スライド 1

untitled

Microsoft Word - HOKUSAI_system_overview_ja.docx

PowerPoint Presentation

Microsoft PowerPoint SCOPE-presen

インテルの現行ラインナップは と Refresh アーキテクチャはそのままラインナップ強化 第 2 世代 Sandy Bridge 第 3 世代 Ivy Bridge 第 4 世代 Refresh アーキテクチャ刷新 AVX 対応 32nm プロセスルール 性能 電力とも大幅進化 22nm プロセス

スライド 1

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

Slides: TimeGraph: GPU Scheduling for Real-Time Multi-Tasking Environments

PowerPoint プレゼンテーション

CPU Levels in the memory hierarchy Level 1 Level 2... Increasing distance from the CPU in access time Level n Size of the memory at each level 1: 2.2

CLEFIA_ISEC発表

Microsoft PowerPoint - OpenMP入門.pptx

CCS HPCサマーセミナー 並列数値計算アルゴリズム

スライド 1

untitled

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

GPGPUクラスタの性能評価

ペタスケール計算環境に向けたFFTライブラリ

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

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

マルチコアPCクラスタ環境におけるBDD法のハイブリッド並列実装

Microsoft PowerPoint ppt

GPU GPU CPU CPU CPU GPU GPU N N CPU ( ) 1 GPU CPU GPU 2D 3D CPU GPU GPU GPGPU GPGPU 2 nvidia GPU CUDA 3 GPU 3.1 GPU Core 1

Microsoft PowerPoint - ARCICD07FukumotoSlides.pptx

ERDAS IMAGINE における処理速度の向上 株式会社ベストシステムズ PASCO CORPORATION 2015

Microsoft PowerPoint - ICD2011UenoSlides.pptx

PowerPoint プレゼンテーション

連載講座 : 高生産並列言語を使いこなす (5) 分子動力学シミュレーション 田浦健次朗 東京大学大学院情報理工学系研究科, 情報基盤センター 目次 1 問題の定義 17 2 逐次プログラム 分子 ( 粒子 ) セル 系の状態 ステップ 18

PowerPoint プレゼンテーション

untitled

Operating System 仮想記憶

Insert your Title here

NUMAの構成

GPGPU によるアクセラレーション環境について

PowerPoint プレゼンテーション

Microsoft PowerPoint - ARC-SWoPP2011OkaSlides.pptx

27_02.indd

<4D F736F F F696E74202D2091E63489F15F436F6D C982E682E992B48D8291AC92B489B F090CD2888F38DFC E B8CDD8

Pervasive PSQL v11 のベンチマーク パフォーマンスの結果

main.dvi

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

スライド 1

23 Fig. 2: hwmodulev2 3. Reconfigurable HPC 3.1 hw/sw hw/sw hw/sw FPGA PC FPGA PC FPGA HPC FPGA FPGA hw/sw hw/sw hw- Module FPGA hwmodule hw/sw FPGA h

チューニング講習会 初級編

リソース制約下における組込みソフトウェアの性能検証および最適化方法

NVIDIA Tesla K20/K20X GPU アクセラレータ アプリケーション パフォーマンス テクニカル ブリーフ

Microsoft PowerPoint - ARC2009HashiguchiSlides.pptx

BLAS の概要

Microsoft PowerPoint 知る集い(京都)最終.ppt

Microsoft PowerPoint - yamagata.ppt

GPU チュートリアル :OpenACC 篇 Himeno benchmark を例題として 高エネルギー加速器研究機構 (KEK) 松古栄夫 (Hideo Matsufuru) 1 December 2018 HPC-Phys 理化学研究所 共通コードプロジェクト

情報処理学会研究報告 IPSJ SIG Technical Report Vol.2014-HPC-144 No /5/ CRS 2 CRS Performance evaluation of exclusive version of preconditioned ite

PowerPoint プレゼンテーション

Transcription:

AVX を用いた倍々精度疎行列ベクトル積の高速化 菱沼利彰 1 藤井昭宏 1 田中輝雄 1 長谷川秀彦 2 1 工学院大学 2 筑波大学 1

目次 1. 研究背景 目的 2. 実装, 実験環境 3. 実験 - 倍々精度ベクトル演算 - 4. 実験 - 倍々精度疎行列ベクトル積 - 5. まとめ 多倍長精度計算フォーラム 2

目次 1. 研究背景 目的 2. 実装, 実験環境 3. 実験 - 倍々精度ベクトル演算 - 4. 実験 - 倍々精度疎行列ベクトル積 - 5. まとめ 多倍長精度計算フォーラム 3

研究背景 科学技術計算における高精度演算の重要性 Krylov 部分空間法は丸め誤差が収束に影響 倍々精度演算 ( 4 倍精度演算 ) による収束の改善 倍々精度演算には時間がかかる CPU の高速化技術 :SIMD 拡張命令 既存 : SSE2 (Pentium4~)(2000 年 ) New : intel AVX (Sandy Bridge~)(2011 年 ) AVXの性能は理論上 SSE2の2 倍 多倍長精度計算フォーラム 4

研究目的 AVXを用いて行列計算ライブラリを高速化する AVXを用いて倍々精度演算を高速化する ベクトル演算 (SWoPP2012) AVX 化が性能に与える効果を分析 疎行列ベクトル積 (HPCS2013) 疎行列の構造が性能に及ぼす影響を分析 倍々精度演算で AVX 化の効果を検証する Xeon PhiやHaswellアーキテクチャ SIMD 演算の必要性大 多倍長精度計算フォーラム 5

目次 1. 研究背景 目的 2. 実装, 実験環境 3. 実験 - 倍々精度ベクトル演算 - 4. 実験 - 倍々精度疎行列ベクトル積 - 5. まとめ 多倍長精度計算フォーラム 6

AVX を用いた実装 既存の SSE2 コード (Lis) から AVX コードを作成 同時演算数の増加 ( 倍精度 2 つ 倍精度 4 つ ) 分岐命令の削減 端数処理の増加 (1,2,3) y=ax+y (SSE2 C コード ) y=ax+y (AVX C コード ) for(i=0 ; i<n ; i+=2){ x = load128(vx[i]) y = load128(vy[i]) x = mult128(x,a) x = add128(x,y) vy[i] = store128(x) } for(i=0 ; i<n ; i+=4){ x = load256(vx[i]) y = load256(vy[i]) x = mult256(x,a) x = add256(x,y) vy[i] = store256(x) } 反復法ライブラリ Lis,http://www.ssisc.org/lis/ 多倍長精度計算フォーラム 7

y = a * x + y のアセンブリコード 2オペランド命令 (SSE2) 3オペランド命令 (AVX) move(x, temp) //temp x mult(a, x, temp) //temp = a * x mult(temp, a) //temp = a * temp add(temp, y, y) //y=temp + y add(y, temp) //y = y + temp y DD = a DD x DD + y DD の命令数の内訳 SSE2 AVX AVX-SSE2 Load 2 2 0 Store 1 1 0 add + sub 26 26 0 mult 9 9 0 move 13 3-10 合計 51 41-10 命令数減 多倍長精度計算フォーラム 8

実験環境 CPU : intel Core i7 2600K 4 コア 3.4GHz 16GB L3 キャッシュ : 8MB メモリ帯域 : 21.2GB/s (10.6 2) OS : Fedora16 コンパイラ : intel C/C++ Compiler 12.0.3 コンパイルオプション AVX コード : O3 xavx openmp fp-model precise SSE2 コード : O3 xsse2 openmp fp-model precise 多倍長精度計算フォーラム 9

intel Core i7 2600K の構成 (1 コア ) 演算器 FP Multiply FP Add 256bit 3 256bit 3 理論値 AVX: SIMD register 3.4G 4(SIMD) 2( 積和同時演算 ) = 27.2GFLOPS / core SSE2: 3.4G 2(SIMD) 2( 積和同時演算 ) = 13.6GFLOPS / core Scalar 3.4G 2( 積和同時演算 ) = 6.8GFLOPS / core 多倍長精度計算フォーラム 10

目次 1. 研究背景 目的 2. 実装, 実験環境 3. 実験 - 倍々精度ベクトル演算 - 4. 実験 - 倍々精度疎行列ベクトル積 - 5. まとめ 多倍長精度計算フォーラム 11

対象とするベクトル演算 名称 演算 Load Store 倍精度の演算量 axpy 2 1 35 axpyz 2 1 35 dot 2 0 35 nrm2 1 0 31 scale 1 1 24 xpay 2 1 35 x,y,z : 倍々精度のベクトル α,val : 倍々精度のスカラー値 多倍長精度計算フォーラム 12

実験内容 実験 1 : ベクトル演算の性能 ベクトルがキャッシュにおさまる場合 (4 スレッド ) 実験 2 : axpy の分析 ベクトルサイズ N を変化させた性能 (N=10 3 から 8.0 10 5 ) マルチスレッドの性能向上比 (1~8) OpenMP のスケジューリング方式は static を用いた 多倍長精度計算フォーラム 13

GFLOPS 実験 1 キャッシュに収まる場合の性能 (4 スレッド ) 70 60 x2.3 x2.1 x2.4 x2.4 x1.7 x2.1 AVX SSE2 50 40 30 20 10 0 axpy axpyz dot nrm2 scale xpay 演算の名称 ( ベクトルサイズ N = 10 5 ) 多倍長精度計算フォーラム 14

キャッシュに収まる場合の性能 SSE2 と比べ 1.7~2.4 倍の向上 scaleはsse2の性能が良く向上比が小さい (x1.7) AVXはピーク性能の51~60%,SSE2は45~60% move 命令の削減数が多いものは向上比が高い 演算名 ( 演算量 ) move 命令削減数 性能 :AVX/SSE2 axpy (35) 10 2.3 axpyz (35) 10 2.1 dot (35) 10 2.4 nrm2 (31) 13 2.4 scale (24) 2 1.7 xpay (35) 10 2.1 多倍長精度計算フォーラム 15

GFLOPS 実験 2 メモリアクセスの影響 (axpy,1 スレッド ) 18 16 14 12 10 8 6 4 2 0 x2.3 キャッシュサイズ x1.7 AVX_axpy メモリ性能の制約を受ける SSE2_axpy 0 1 2 3 4 5 6 7 8 ベクトルサイズ (x10 5 ) 多倍長精度計算フォーラム 16

ピーク性能との比較 AVXはピーク性能の63% ( キャッシュ内,N=10 5 ) SSE2はピーク性能の52% axpy 演算のカーネル演算の内訳 演算 Load Store add+sub mult 演算回数 6 2 26 9 加減算命令と乗算命令に偏りがある (26:9) 理論性能が出ることはない 加減算と乗算のバランスを考慮した理論値 AVX : 27.2 18.3GFLOPS/core (67%) SSE2 : 13.6 9.2GFLOPS/core (67%) 多倍長精度計算フォーラム 17

補正ピーク性能との比較 AVX,1 スレッド, キャッシュに収まる場合 名称 AVX の性能対ピーク性能比対補正ピーク性能比補正ピーク性能 axpy 16.8GFLOPS 62% 92% 18.3GFLOPS axpyz 16.9GFLOPS 62% 95% 18.3GFLOPS dot 18.0GFLOPS 66% 98% 18.3GFLOPS nrm2 17.2GFLOPS 63% 94% 17.6GFLOPS scale 17.5GFLOPS 64% 96% 21.8GFLOPS xpay 16.5GFLOPS 61% 90% 18.3GFLOPS AVXの性能は16.5GFLOPSから18.2GLOPS 理論ピーク性能 (27.2GFLOPS) の61% から66% 演算バランスを考慮した補正ピーク性能の90% から98% 多倍長精度計算フォーラム 18

GFLOPS 実験 2 メモリアクセスの影響 (axpy,4 スレッド ) 70 60 50 40 30 20 10 x2.3 キャッシュサイズ AVX_axpy SSE2_axpy メモリの制約を受ける 0 0 1 2 3 4 5 6 7 8 ベクトルサイズ (x10 5 ) 多倍長精度計算フォーラム 19

GFLOPS AVX の性能 (axpy,1~8 スレッド ) 70 60 50 40 30 20 10 キャッシュサイズ 1Thread 2Threads 3Threads 4Threads 8Threads 0 0 1 2 3 4 5 6 7 8 ベクトルサイズ (x10 5 ) 多倍長精度計算フォーラム 20

キャッシュに収まる場合の結果 ( 実験 2) 1 スレッドにおいて AVXは16.8GFLOPS(62%),SSE2は7.4GFLOPS(54%) AVXはSSE2の2.3 倍の性能 4 スレッドにおいて () 内は対ピーク性能 AVXは61.2GFLOPS(56%),SSE2は27.4GFLOPS(51%) AVXはSSE2の2.3 倍の性能 1スレッドと比較したAVX,SSE2の性能は3.7 倍 加減算, 乗算のバランスが悪くマシン理論値は出ない 演算バランスを考慮するとピーク性能は27.2 18.3GFLOPS 加減算, 乗算のバランスを考慮すると90% 以上 多倍長精度計算フォーラム 21

キャッシュに収まらない場合の結果 ( 実験 2) 1 スレッドにおいて AVXは11.8GFLOPS(43%),SSE2は7.4GFLOPS(54%) AVXはSSE2の1.7 倍の性能 4 スレッドにおいて () 内は対ピーク性能 メモリ性能を上限とした性能に制約される AVX,SSE2ともに性能は13GFLOPS(AVXで12%) マルチスレッドにおいてAVXとSSE2は同等の性能 メモリ性能の制約を受け性能は約 13GFLOPS になる 多倍長精度計算フォーラム 22

目次 1. 研究背景 目的 2. 実装, 実験環境 3. 実験 - 倍々精度ベクトル演算 - 4. 実験 - 倍々精度疎行列ベクトル積 - 5. まとめ 多倍長精度計算フォーラム 23

倍精度疎行列 A D と倍々精度ベクトル x DD の積 :Ax 倍精度疎行列 A D は CRS 形式で格納 実問題では, 入力は倍精度 倍々精度演算はメモリネックとなる 演算の内訳 加減算 25 回, 乗算 8 回から成る ( 演算量 33) 加減算と乗算のバランスを考慮した理論値 AVX : 27.2 18GFLOPS/core (66%) SSE2 : 13.6 9GFLOPS/core (66%) 多倍長精度計算フォーラム 24

y DD =A D * x DD for(i=0 ; i<n ; i++) for(j=a D_row_ptr [ i ] ; j < A D_row_ptr [ i+1 ] ; j++) y DD [ i ] = y DD [ i ] + A D_value [ j ] * x DD [ A D_index [ j ] ] AVX では j のループを 4 つずつ同時演算 端数 (1,2,3) の処理が必要 パディング 生成時 実行時 SSE2+Scalar Scalar 多倍長精度計算フォーラム 25

端数処理方式 生成時パディング 実行時パディング SSE2+Scalar AVXとSSE2のレジスタは論理的には別 AVXとSSE2のレジスタは物理的には共通 命令の切替時, レジスタ内容がメモリに退避される AVX,SSE2 命令を同一コードで使うと性能が低下 Scalar 多倍長精度計算フォーラム 26

端数処理の比較 (CRS 形式,N=10 5 ) 帯幅 63の性能 ( 実行時間 ) 帯幅 1023の性能 ( 実行時間 ) 生成時パディング 44.3GFLOPS (47ミリ秒) 47.4GFLOPS (71ミリ秒) 実行時パディング 42.2GFLOPS (49ミリ秒) 47.4GFLOPS (71ミリ秒) SSE2+Scalar 39.0GFLOPS (53ミリ秒) 41.1GFLOPS (81ミリ秒) Scalar 41.1GFLOPS (48ミリ秒) 47.1GFLOPS (71ミリ秒) CRS 生成時パディングの性能が最も高い SSE2+Scalar は性能が低い AVX と SSE2 の切り替えコストが大きい 実行時パディングと Scalar の性能差は小さい 多倍長精度計算フォーラム 27

実験内容 実験 1 : メモリアクセスの影響実験 2 :AVX 化の効果実験 3 : 非零要素の数による性能の影響 端数の数による影響 OpenMP のスケジューリング方式は guided を用いた 多倍長精度計算フォーラム 28

実験に用いる疎行列 B. テスト用帯行列 if( 0 j - i m ) ai j=value else ai j = 0 を満たす疎行列 F. The Univ of Florida Matrix Collection ( フロリダコレクション ) の疎行列 15 種 多倍長精度計算フォーラム 29

GFLOPS メモリアクセスの影響 ( テスト用帯行列, 帯幅 32,) 50 45 40 35 30 25 20 15 10 5 x1.9 x1.9 キャッシュサイズ AVX_4Threads SSE2_4Threads AVX_1Thread SSE2_1Thread x1.8 x1.8 0 0.125 0.25 0.5 1 2 4 行列サイズ (10 5 ) 多倍長精度計算フォーラム 30

GFLOPS 不規則な構造を持つ疎行列の性能 (1 スレッド ) 14 12 10 8 6 4 2 0 実行時パディング AVX+Scalar SSE2 x1.6 x1.1 x1.3 x1.4 x1.4 x1.5 x1.6 x1.6 x1.7 x1.8 x1.8 x1.8 x1.9 x1.9 x1.9 疎行列の名称 ( 平均非零要素数 ) 多倍長精度計算フォーラム 31

GFLOPS 不規則な構造を持つ疎行列の性能 (4 スレッド ) 50 45 40 35 30 25 20 15 10 5 0 実行時パディング AVX+Scalar SSE2 x1.8 x1.1 x1.3 x2.0 x2.0 x1.5 x1.6 x2.1 x1.9 x1.8 x1.7 x2.1 x1.8 x1.8 x1.8 疎行列の名称 ( 平均非零要素数 ) 多倍長精度計算フォーラム 32

不規則な構造を持つ疎行列の性能 実行時パディングの性能 ( 対ピーク ) Scalarの性能 ( 対ピーク ) F,1スレッド 5.1 ~ 12.4GFLOPS (19% ~ 46%) 3.4 ~ 12.2GFLOPS(12% ~ 45%) F,4スレッド 18.4 ~ 45.0GFLOPS (17% ~ 41%) 13.3 ~ 43.7GFLOPS(12% ~ 40%) 端数処理は実行時パディングが有効 Scalar との比は 4 スレッドで 1.03 倍から 1.37 倍 1スレッドと4スレッドの性能比はAVXで3.3 倍から3.7 倍 平均非零要素数が多いものは性能が高い 多倍長精度計算フォーラム 33

GFLOPS 端数の影響 ( テスト用帯行列, サイズ 10 5 ) 14 12 10 8 6 4 2 0 実行時パディング AVX+Scalar SSE2 1 20 40 60 80 100 帯幅 多倍長精度計算フォーラム 34

GFLOPS 帯幅と平均非零要素数の関係 ( 実行時パディング ) 14 12 10 x1.9 8 6 4 2 0 AVX SSE2 Florida_AVX Florida_SSE2 1 20 40 60 80 100 平均非零要素数 多倍長精度計算フォーラム 35

非零要素数による影響 Scalar は端数の数による影響が大きい 実行時パディングは 11.4GFLOPS( 帯幅 63) から 12.1GFLOPS( 帯幅 64) Scalar は 10.3GFLOPS( 帯幅 63) から 12.3GFLOPS( 帯幅 64) 帯幅が広いほど性能が高い 帯幅 64 のとき AVX は 12.1GFLOPS(44%),SSE2 は 6.8GFLOPS(50%) フロリダコレクションの性能は平均非零要素数に関係 対応する帯行列の 1.07 倍から 0.97 倍 () 内は対ピーク性能多倍長精度計算フォーラム 36

Ax と A T x の比較 y DD =A T D * x DD のコード Ax for(i=0 ; i<n ; i++) for(j=a D_row_ptr [ i ] ; j < A D_row_ptr [ i+1 ] ; j++) y DD [ i ] = y DD [ i ] + A D_value [ j ] * x DD [ A D_index [ j ] ] A T x for(i=0 ; i<n ; i++) for(j=a D_row_ptr [ i ] ; j<a D_row_ptr [ i+1 ] ; j++) y DD [ A D_index [ j ] ] = y DD [ A D_index [ j ] ] + A D_value [ j ] * x DD [ i ] Ax と A T x の違いは x DD と y DD へのアクセス Ax は x DD へのアクセスが A index に従う A T x は y DD へのアクセスが A index に従う 多倍長精度計算フォーラム 37

GFLOPS A T x と Ax の性能 ( 実行時パディング,1 スレッド,N=10 5 ) 14 12 x1.2 10 8 x0.7 6 4 2 0 Ax_AVX ATx_AVX A T Ax_SSE2 ATx_SSE2 A T 1 20 40 60 80 100 帯幅 多倍長精度計算フォーラム 38

目次 1. 研究背景 目的 2. 実装, 実験環境 3. 実験 - 倍々精度ベクトル演算 - 4. 実験 - 倍々精度疎行列ベクトル積 - 5. まとめ 多倍長精度計算フォーラム 39

まとめ ( ベクトル演算 ) 4 スレッドにおいて キャッシュに収まるとき AVX は 61.2GFLOPS( ピーク性能の 56%), SSE2 は 27.4GFLOPS( ピーク性能の 51%) AVX と SSE2 の性能比は 2.3 倍 move 命令の削減効果 キャッシュに収まらないとき メモリ性能の制約を受け性能は約 13GFLOPS に低下 多倍長精度計算フォーラム 40

まとめ ( 端数処理 ) Scalar 10.3GFLOPS から 12.3GFLOPS( 帯幅 61~64, 1 スレッド ) 実行時パディング 11.4GFLOPSから12.1GFLOPS( 帯幅 61~64, 1スレッド ) 実行時パディングは端数の数による影響を受けにくい 実行時パディングは端数計算が多い問題では有効 フロリダコレクション (4スレッド) において Scalarの1.03 倍から1.37 倍 (5.1GFLOPS~12.4GFLOPS) 多倍長精度計算フォーラム 41

まとめ ( 倍精度疎行列と倍々精度ベクトルの積 ) A D を倍精度化 : 性能はメモリネックになりにくい キャッシュに収まる場合と収まらない場合の性能比は 0.9 倍 性能は平均非零要素数に関係する 対応する帯幅の帯行列と比べ 1.07 倍から 0.97 倍 A T x と Ax の性能差は小さい 平均非零要素数が少ないとき,AxはA T xの性能の0.7 倍 平均非零要素数が多いとき,AxはA T xの性能の1.2 倍 多倍長精度計算フォーラム 42

今後の課題 倍々精度演算の演算バランスの改善 乗算と比べ加減算が多く, 演算器が並列に動かない 加減算を他の演算で置き換える 端数処理手法の切り替え サイズ, 繰り返し回数から最適な端数処理手法を切り替え 多倍長精度計算フォーラム 43

参考文献 1. Bailey, D,H.: High-Precision Floating-Point Arithmetic in Scientific Computation, Computing in Science and Engineering, pp. 54 61 (2005). 2. 反復解法ライブラリ Lis, http://www.ssisc.org/lis/ 3. The University of Florida Sparse Matrix Collection, http://www.cise.ufl.edu/research/sparse/matrices/ 4. Barrett, R., et al.: Templates for the Solution of Linear Systems: Building Blocks for Iterative Methods, SIAM pp. 57 65 (1994) 多倍長精度計算フォーラム 44