Intel AVX命令を用いた並列FFTの実現と評価

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

大規模な三角 Toeplitz 線形方 程式の高速解法とその応用 ○ 安村 修一(法政大学 4 年) 李 磊(法政大学) 日本応用数理学会「行列・固有値の解法とその応用」研究部会 第6回研究会.
Level-3 BLASに基づく特異値分解 アルゴリズムのSMP上での性能
ディジタル信号処理 Digital Signal Processing
CPUとGPUの 性能比較 -行列計算およびN体問題を用いて-
計算理工学基礎 「ハイパフォーマンスコンピューティングの基礎」
キャッシュ付PRAM上の 並列クィックソートと 並列マージソート
キャッシュヒント自動付加を用いたソフトウェア高速化
CPUについて HN:セシル.
Chapter11-4(前半) 加藤健.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
計算科学が拓く世界 スーパーコンピュータは 何故スーパーか
Fill-in LevelつきIC分解による 前処理について
三重対角化アルゴリズムの性能評価 早戸拓也・廣田悠輔.
全体ミーティング (4/25) 村田雅之.
CPU実験 第1回中間発表 4班 瀬沼、高橋、津田、富山、張本.
研究集会 「超大規模行列の数理的諸問題とその高速解法」 2007 年 3 月 7 日 完全パイプライン化シフト QR 法による 実対称三重対角行列の 固有値並列計算 宮田 考史  山本 有作  張 紹良   名古屋大学 大学院工学研究科 計算理工学専攻.
Finger patternのブロック化による 陰的wavelet近似逆行列前処理の 高速化
高性能コンピューティング論2 第12回 アクセラレータ
AllReduce アルゴリズムによる QR 分解の精度について
仮想マシンの並列処理性能に対するCPU割り当ての影響の評価
全体ミーティング (6/13) 村田雅之.
P,Q比が変更可能なScaLAPACKの コスト見積もり関数の開発
ファイルシステムキャッシュを 考慮した仮想マシン監視機構
侵入検知システム(IDS) 停止 IDS サーバへの不正アクセスが増加している
首都大学東京 都市教養学部数理科学コース 関谷博之
応用数理工学特論 線形計算と ハイパフォーマンスコンピューティング
演算/メモリ性能バランスを考慮した マルチコア向けオンチップメモリ貸与法
組み込み向けCPU 小型デバイスに搭載されるCPU 特徴 携帯電話,デジタルカメラ,PDA,センサデバイスなど 小型 低消費電力 多機能
アスペクト指向プログラミングを用いたIDSオフロード
正方行列向け特異値分解の CUDAによる高速化
応用数理工学特論 線形計算と ハイパフォーマンスコンピューティング
MPIによる行列積計算 情報論理工学研究室 渡邉伊織 情報論理工学研究室 渡邉伊織です。
文献名 “Performance Tuning of a CFD Code on the Earth Simulator”
型付きアセンブリ言語を用いた安全なカーネル拡張
OpenMPハードウェア動作合成システムの検証(Ⅰ)
計算理工学基礎 「ハイパフォーマンスコンピューティングの基礎」
高速剰余算アルゴリズムとそのハードウェア実装についての研究
応用数理工学特論 第9回 高速フーリエ変換の高性能化手法
応用数理工学特論 第9回 高速フーリエ変換とその並列化
PGIコンパイラーによる ディレクティブベースのGPGPU
AMR法フレームワークの様々なアーキテクチャへ向けた発展 研究背景と研究目的 Xeon Phi対応に向けた拡張
定兼邦彦 今井浩 東京大学理学系研究科 情報科学専攻
最適化の方法 中田育男著 コンパイラの構成と最適化 朝倉書店, 1999年 第11章.
MPIとOpenMPを用いた Nクイーン問題の並列化
リモートホストの異常を検知するための GPUとの直接通信機構
Jh NAHI 横田 理央 (東京工業大学) Hierarchical low-rank approximation methods on distributed memory and GPUs 背景  H行列、H2行列、HSS行列などの階層的低ランク近似法はO(N2)の要素を持つ密行列をO(N)の要素を持つ行列に圧縮することができる。圧縮された行列を用いることで、行列積、LU分解、固有値計算をO(NlogN)で行うことができるため、従来密行列の解法が用いられてきた分野では階層的低ランク近似法
実行時情報に基づく OSカーネルのコンフィグ最小化
仮想メモリを用いた VMマイグレーションの高速化
仮想計算機を用いたサーバ統合に おける高速なリブートリカバリ
デザイン情報学科 メディア情報設計 河原英紀
クラウドにおけるIntel SGXを用いた VMの安全な監視機構
通信機構合わせた最適化をおこなう並列化ンパイラ
導電性高分子材料の電子状態計算に現れる連立一次方程式に対する 並列直接解法の高性能化
航空エンジンの翼列周り流れ解析のメニーコアシステム向け最適化
階層的境界ボリュームを用いた 陰関数曲面の高速なレイトレーシング法
GPUを用いた疎行列の格納形式による行列ベクトル積の評価
GW space-timeコードの大規模な有機-金属界面への適用に向けた高効率化
目的:高速QR分解ルーチンのGPUクラスタ実装
ARM、IoT、AI 株式会社アプライド・マーケティング 大越 章司
ARM.
第5回 メモリ管理(2) オーバレイ方式 論理アドレスとプログラムの再配置 静的再配置と動的再配置 仮想記憶とメモリ階層 セグメンテーション
「マイグレーションを支援する分散集合オブジェクト」
Jh NAHI 横田 理央 (東京工業大学) Hierarchical low-rank approximation methods on distributed memory and GPUs 背景  H行列、H2行列、HSS行列などの階層的低ランク近似法はO(N2)の要素を持つ密行列をO(N)の要素を持つ行列に圧縮することができる。圧縮された行列を用いることで、行列積、LU分解、固有値計算をO(Nlog2N)で行うことができるため、従来密行列の解法が用いられてきた分野では階層的低ランク近似
MPIを用いた並列処理計算 情報論理工学研究室 金久 英之
長方行列向け特異値分解の 浮動小数点コプロセッサによる 高速化
分散メモリ型並列計算機上での行列演算の並列化
Ibaraki Univ. Dept of Electrical & Electronic Eng.
6.2 高速フーリエ変換 (1)FFT(fast Fourier transform)とは
2008年 7月17日 応用数理工学特論 期末発表 鈴木綾華,程飛
Presentation transcript:

Intel AVX命令を用いた並列FFTの実現と評価 高橋大介 筑波大学システム情報系 2012/3/17 「コンピューティクスによる物質デザイン:複合相関と非平衡ダイナミクス」研究会

「コンピューティクスによる物質デザイン:複合相関と非平衡ダイナミクス」研究会 発表手順 背景 目的 Six-Step FFTアルゴリズム In-Cache FFTアルゴリズム Intel AVX命令 FFTカーネルのベクトル化 性能評価 まとめ 2012/3/17 「コンピューティクスによる物質デザイン:複合相関と非平衡ダイナミクス」研究会

「コンピューティクスによる物質デザイン:複合相関と非平衡ダイナミクス」研究会 背景(1/2) 高速Fourier変換(FFT)は,科学技術計算において今日広く用いられているアルゴリズム. 浮動小数点演算をより高速に処理するために,最近のプロセッサではShort Vector SIMD命令を搭載しているものが多い. Intel: SSE, SSE2, SSE3, SSSE3, SSE4およびAVX Motorola: AltiVec Fujitsu: SPARC64 ViiifxにおけるHPC-ACE しかし,これらのShort Vector SIMD命令を用いたとしても,最近のプロセッサのデータ供給能力はキャッシュに頼っているのが現状. 2012/3/17 「コンピューティクスによる物質デザイン:複合相関と非平衡ダイナミクス」研究会

「コンピューティクスによる物質デザイン:複合相関と非平衡ダイナミクス」研究会 背景(2/2) Short Vector SIMD命令を搭載したプロセッサでFFTを計算する際には,以下の2点が性能を引き出す上で大きな鍵となる. Short Vector SIMD命令を有効に活用する. かつキャッシュミスの回数を減らす. これまでに,Short Vector SIMD命令を用いたFFTの実装がいくつか行われているが,これらのFFTは,データがキャッシュに収まるような場合を想定しているものが多い. キャッシュに収まりきらないような大規模なデータを扱う場合には必ずしも性能が発揮できていない. 2012/3/17 「コンピューティクスによる物質デザイン:複合相関と非平衡ダイナミクス」研究会

「コンピューティクスによる物質デザイン:複合相関と非平衡ダイナミクス」研究会 関連研究 FFTW 3.3 [Frigo and Johnson] AVX命令をサポートしている(version 3.3より). 自動チューニングの手法をFFTに適用. FFTを再帰的に二分木状に分割することにより,最終的に小さな点数のDFTに帰着している. http://www.fftw.org/ SPIRAL [Pueschel et al.] AVX命令をサポートしている. 自動チューニングによりFFTプログラムを自動生成する. http://www.spiral.net/ 2012/3/17 「コンピューティクスによる物質デザイン:複合相関と非平衡ダイナミクス」研究会

「コンピューティクスによる物質デザイン:複合相関と非平衡ダイナミクス」研究会 目的 AVX命令を用いてFFTカーネル部分の性能を向上させる. ブロックSix-Step FFTアルゴリズム[Takahashi01]を用いることで,データがキャッシュに収まらない場合にも高い性能を維持する. AVX命令を搭載したマルチコアプロセッサ上でブロックSix-Step FFTに基づいた並列FFTを実現し,性能評価を行う. 2012/3/17 「コンピューティクスによる物質デザイン:複合相関と非平衡ダイナミクス」研究会

「コンピューティクスによる物質デザイン:複合相関と非平衡ダイナミクス」研究会 離散Fourier変換(DFT) 離散Fourier変換の定義 2012/3/17 「コンピューティクスによる物質デザイン:複合相関と非平衡ダイナミクス」研究会

「コンピューティクスによる物質デザイン:複合相関と非平衡ダイナミクス」研究会 2次元表現 もし, が と に分解できるとすると, 上記の式を用いると,DFTの定義式は以下のように書き換えることができる. 点FFTが 点FFTと 点FFTに分解できることを示している. 「コンピューティクスによる物質デザイン:複合相関と非平衡ダイナミクス」研究会 2012/3/17

「コンピューティクスによる物質デザイン:複合相関と非平衡ダイナミクス」研究会 Six-Step FFTアルゴリズム 2次元表現を用いて,以下のようなSix-Step FFTアルゴリズム[Bailey90, VanLoan92]が導かれる. Step 1: 行列の転置 Step 2: 組の 点multicolumn FFT Step 3: ひねり係数( )の乗算 Step 4: 行列の転置 Step 5: 組の 点multicolumn FFT Step 6: 行列の転置 2012/3/17 「コンピューティクスによる物質デザイン:複合相関と非平衡ダイナミクス」研究会

ブロックSix-Step FFTアルゴリズム オリジナルのSix-Step FFTアルゴリズム[VanLoan92] multicolumn FFTと行列の転置が分離されている. 行列の転置は,キャッシュブロッキングを行うことでキャッシュミスを削減することができる. さらに,multicolumn FFTと行列の転置を統合することで,キャッシュに載っているデータを再利用することができる. この手法はブロックSix-Step FFTアルゴリズムと呼ばれている[Takahashi01]. 2012/3/17 「コンピューティクスによる物質デザイン:複合相関と非平衡ダイナミクス」研究会

ブロックSix-Step FFTに基づく 並列1次元FFTアルゴリズム 部分的な 行列の転置 最外側ループを複数のプロセッサに分配 部分的な 行列の転置 行列の転置 2012/3/17 「コンピューティクスによる物質デザイン:複合相関と非平衡ダイナミクス」研究会

「コンピューティクスによる物質デザイン:複合相関と非平衡ダイナミクス」研究会 In-Cache FFTアルゴリズム 問題サイズがキャッシュに収まっている場合には,Stockham autosort FFTアルゴリズムを用い,問題サイズがキャッシュサイズを超えた場合にブロックSix-Step FFTアルゴリズムを用いる. Byte/Flop値の観点からは,基数8のFFTが基数2,4のFFTよりも有利になる. 高い基数のFFTでは中間結果を保持するために多くの浮動小数点レジスタを必要とする. Sandy Bridgeプロセッサでは16個の256ビットレジスタを搭載しているので,基数8のFFTが最も高速. 2012/3/17 「コンピューティクスによる物質デザイン:複合相関と非平衡ダイナミクス」研究会

「コンピューティクスによる物質デザイン:複合相関と非平衡ダイナミクス」研究会 Intel AVX命令 Intel Advanced Vector Extensions(AVX)とは,Sandy Bridgeプロセッサから導入された,SSE系命令の流れを汲むSIMD命令. 256ビット長のデータに対して,SIMD処理を行うことができる. AVX命令を用いるためには,アセンブラで直接記述する方法もあるが,コーディングが複雑になる. Intel C/C++およびFortranコンパイラの最新版(ver. 12.1)ではAVX命令を用いた自動ベクトル化を行うことができる. 複素数演算も自動ベクトル化が可能. 2012/3/17 「コンピューティクスによる物質デザイン:複合相関と非平衡ダイナミクス」研究会

ベクトル化可能な基数2の FFTカーネルの例 SUBROUTINE FFT2(A,B,W,M,L) COMPLEX*16 A(M,L,*),B(M,2,*),W(*) COMPLEX*16 C0,C1 DO J=1,L !DIR$ VECTOR ALIGNED DO I=1,M C0=A(I,J,1) C1=A(I,J,2) B(I,1,J)=C0+C1 B(I,2,J)=W(J)*(C0-C1) END DO RETURN END ディレクティブ“!DIR$ VECTOR ALIGNED”は,ループ内のメモリ参照が既に最適化(AVXの場合,32バイト境界にalign)されていることをコンパイラに伝える. 2012/3/17 「コンピューティクスによる物質デザイン:複合相関と非平衡ダイナミクス」研究会

ベクトル化された基数2のFFT カーネルのアセンブリコード(抜粋) vmovupd (%edx,%ecx), %ymm3 vmovupd (%edx,%ebx), %ymm4 vsubpd %ymm4, %ymm3, %ymm5 vaddpd %ymm4, %ymm3, %ymm2 vmulpd %ymm5, %ymm1, %ymm7 vmovupd %ymm2, (%edx,%edi) vshufpd $5, %ymm5, %ymm5, %ymm6 vmulpd %ymm6, %ymm0, %ymm2 vmovupd 32(%edx,%ecx), %ymm5 vmovupd 32(%edx,%ebx), %ymm6 vaddsubpd %ymm2, %ymm7, %ymm3 vsubpd %ymm6, %ymm5, %ymm7 vaddpd %ymm6, %ymm5, %ymm4 vmovupd %ymm3, (%edx,%eax) vmulpd %ymm7, %ymm1, %ymm2 vmovupd %ymm4, 32(%edx,%edi) vshufpd $5, %ymm7, %ymm7, %ymm7 vmulpd %ymm7, %ymm0, %ymm3 vaddsubpd %ymm3, %ymm2, %ymm4 vmovupd %ymm4, 32(%edx,%eax) 2012/3/17 「コンピューティクスによる物質デザイン:複合相関と非平衡ダイナミクス」研究会

「コンピューティクスによる物質デザイン:複合相関と非平衡ダイナミクス」研究会 性能評価 実現した並列1次元FFTの性能評価にあたっては,以下のFFTライブラリの性能を比較した. 実現した並列1次元FFT(FFTE 5.0,AVX命令およびOpenMPを使用) FFTW 3.3(AVX命令およびOpenMPを使用) 評価環境 Intel Xeon E3-1230 PC(Sandy Bridge 3.2 GHz, 8 MB L3 cache, 1 CPU, 4コア, 4 GB DDR3-SDRAM) Intel Core i5-2520M PC(Sandy Bridge 2.5 GHz, 3 MB L3 cache, 1 CPU, 2コア, 4 GB DDR3-SDRAM) Intel CおよびFortranコンパイラ(ver. 12.1)を使用. コンパイルオプション:”-O3 –xHOST –openmp” 2012/3/17 「コンピューティクスによる物質デザイン:複合相関と非平衡ダイナミクス」研究会

「コンピューティクスによる物質デザイン:複合相関と非平衡ダイナミクス」研究会 2012/3/17 「コンピューティクスによる物質デザイン:複合相関と非平衡ダイナミクス」研究会

「コンピューティクスによる物質デザイン:複合相関と非平衡ダイナミクス」研究会 2012/3/17 「コンピューティクスによる物質デザイン:複合相関と非平衡ダイナミクス」研究会

「コンピューティクスによる物質デザイン:複合相関と非平衡ダイナミクス」研究会 考察 Intel Xeon E3-1230(1 CPU,4コア)では,FFTEは以下のケースを除いてFFTWよりも高速. n <= 256K,n = 8M(1 CPU,1コア) n <= 256K(1 CPU,2コア) n <= 512K,n = 16M(1 CPU,4コア) Intel Core i5-2520M(1 CPU,2コア)では,FFTEは n <= 256Kを除いてFFTWよりも高速. FFTWでは,自動チューニングの手法を用いて高速化を図っており,データがキャッシュに収まるような場合については高い性能を発揮できていると考えられる. FFTEではキャッシュブロッキングを行っており,全てのデータがキャッシュに収まりきれない場合についても,ある程度高い性能が維持できている. 2012/3/17 「コンピューティクスによる物質デザイン:複合相関と非平衡ダイナミクス」研究会

「コンピューティクスによる物質デザイン:複合相関と非平衡ダイナミクス」研究会 まとめ AVX命令を用いた並列FFTの実現および評価を行った. FFTカーネルをAVX命令を用いてベクトル化すると共に,キャッシュメモリを効果的に利用できるブロックSix-Step FFTをOpenMPを用いて並列化した. その結果,FFTWに比べて,特にデータがキャッシュに収まらないような場合に対して性能が改善されることを示した. 同様の手法は,多次元FFTにおいても有効であると考えられる. 2012/3/17 「コンピューティクスによる物質デザイン:複合相関と非平衡ダイナミクス」研究会