20
2012/3/17 ココココココココココココココココココ コココココココココ コココココ コココ 1 Intel AVX ココココココココ FFT コココ コココ ココココ コココココココココココ

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

  • Upload
    annick

  • View
    79

  • Download
    0

Embed Size (px)

DESCRIPTION

Intel AVX 命令を用いた並列 FFT の実現と評価. 高橋大介 筑波大学システム情報系. 発表手順. 背景 目的 Six-Step FFT アルゴリズム In-Cache FFT アルゴリズム Intel AVX 命令 FFT カーネルのベクトル化 性能評価 まとめ. 背景( 1/2 ). 高速 Fourier 変換( FFT )は,科学技術計算において今日広く用いられているアルゴリズム. 浮動小数点演算をより高速に処理するために,最近のプロセッサでは Short Vector SIMD 命令を搭載しているものが多い. - PowerPoint PPT Presentation

Citation preview

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

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

ス」研究会

1

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

高橋大介筑波大学システム情報系

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

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

ス」研究会

2

発表手順

• 背景• 目的• Six-Step FFT アルゴリズム• In-Cache FFT アルゴリズム• Intel AVX 命令• FFT カーネルのベクトル化• 性能評価• まとめ

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

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

ス」研究会

3

背景( 1/2 )• 高速 Fourier 変換( FFT )は,科学技術計算におい

て今日広く用いられているアルゴリズム.• 浮動小数点演算をより高速に処理するために,最近

のプロセッサでは Short Vector SIMD 命令を搭載しているものが多い.– Intel: SSE, SSE2, SSE3, SSSE3, SSE4 および AVX– Motorola: AltiVec– Fujitsu: SPARC64 Viiifx における HPC-ACE

• しかし,これらの Short Vector SIMD 命令を用いたとしても,最近のプロセッサのデータ供給能力はキャッシュに頼っているのが現状.

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

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

ス」研究会

4

背景( 2/2 )• Short Vector SIMD 命令を搭載したプロセッサで FFT

を計算する際には,以下の 2 点が性能を引き出す上で大きな鍵となる.– Short Vector SIMD 命令を有効に活用する.– かつキャッシュミスの回数を減らす.

• これまでに, Short Vector SIMD 命令を用いた FFTの実装がいくつか行われているが,これらの FFT は,データがキャッシュに収まるような場合を想定しているものが多い.

• キャッシュに収まりきらないような大規模なデータを扱う場合には必ずしも性能が発揮できていない.

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

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

ス」研究会

5

関連研究

• 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/

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

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

ス」研究会

6

目的

• AVX 命令を用いて FFT カーネル部分の性能を向上させる.

• ブロック Six-Step FFT アルゴリズム[Takahashi01] を用いることで,データがキャッシュに収まらない場合にも高い性能を維持する.

• AVX 命令を搭載したマルチコアプロセッサ上でブロック Six-Step FFT に基づいた並列 FFT を実現し,性能評価を行う.

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

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

ス」研究会

7

離散 Fourier 変換( DFT )

• 離散 Fourier 変換の定義

)/2exp(,10

)()(1

0

nink

jxky

n

n

j

jkn

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

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

ス」研究会

8

2 次元表現• もし, が と に分解できるとすると

,1n

1,,1,01,,1,0

1,,1,01,,1,0

2211212

2211121

nknknkkk

njnjnjjj

• 上記の式を用いると, DFT の定義式は以下のように書き換えることができる.

n 2n

• 点 FFT が 点 FFT と 点 FFT に分解できることを示している.n 1n 2n

11

1

1

1

2

2

21

21

22

2

1

0

1

02112 ),(),( kj

n

n

j

n

j

kjnn

kjnjjxkky

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

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

ス」研究会

9

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: 行列の転置

1n 2n

2n 1n

21

21

kjnn

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

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

ス」研究会

10

ブロック Six-Step FFT アルゴリズム

• オリジナルの Six-Step FFT アルゴリズム[VanLoan92] multicolumn FFT と行列の転置が分離されている.

• 行列の転置は,キャッシュブロッキングを行うことでキャッシュミスを削減することができる.

• さらに, multicolumn FFT と行列の転置を統合することで,キャッシュに載っているデータを再利用することができる.

• この手法はブロック Six-Step FFT アルゴリズムと呼ばれている [Takahashi01] .

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

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

ス」研究会

11

ブロック Six-Step FFT に基づく並列 1 次元 FFT アルゴリズム

0P

部分的な行列の転置

3P

Bn Bn Bn Bn

0P 1P 2P 3P

2n

2n

1n

1n 2n

1n

行列の転置部分的な行列の転置

1P 2P

最外側ループを複数のプロセッサに分配

Bn Bn Bn Bn

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

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

ス」研究会

12

In-Cache FFT アルゴリズム• 問題サイズがキャッシュに収まっている場合に

は, Stockham autosort FFT アルゴリズムを用い,問題サイズがキャッシュサイズを超えた場合にブロック Six-Step FFT アルゴリズムを用いる.

• Byte/Flop 値の観点からは,基数 8 の FFT が基数2 , 4 の FFT よりも有利になる.

• 高い基数の FFT では中間結果を保持するために多くの浮動小数点レジスタを必要とする.

• Sandy Bridge プロセッサでは 16 個の 256 ビットレジスタを搭載しているので,基数 8 の FFT が最も高速.

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

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

ス」研究会

13

Intel AVX 命令• Intel Advanced Vector Extensions ( AVX )と

は, Sandy Bridge プロセッサから導入された, SSE 系命令の流れを汲む SIMD 命令.– 256 ビット長のデータに対して, SIMD 処理を行うこ

とができる.

• AVX 命令を用いるためには,アセンブラで直接記述する方法もあるが,コーディングが複雑になる.

• Intel C/C++ および Fortran コンパイラの最新版( ver. 12.1 )では AVX 命令を用いた自動ベクトル化を行うことができる.– 複素数演算も自動ベクトル化が可能.

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

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

ス」研究会

14

ベクトル化可能な基数 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

END DO

RETURN

END

ディレクティブ“ !DIR$ VECTOR ALIGNED” は,ループ内のメモリ参照が既に最適化( AVX の場合, 32バイト境界に align )されていることをコンパイラに伝える.

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

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

ス」研究会

15

ベクトル化された基数 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)

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

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

ス」研究会

16

性能評価• 実現した並列 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”

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

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

ス」研究会

17

Intel Xeon E3-1230 Sandy Bridge 3.2 GHz( )に1 FFTおける 次元 の性能

05

10152025303540

64K12

8K25

6K51

2K 1M 2M 4M 8M16M

Length of Transform

GFlo

ps

FFTE 5.0(1 core)FFTE 5.0(2 cores)FFTE 5.0(4 cores)FFTW 3.3(1 core)FFTW 3.3(2 cores)FFTW 3.3(4 cores)

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

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

クス」研究会

18

Intel Core i5-2520M Sandy Bridge 2.5 GHz( )に1 FFTおける 次元 の性能

02468

101214

64K12

8K25

6K51

2K 1M 2M 4M 8M16M

Length of Transform

GFlo

ps

FFTE 5.0(1 core)FFTE 5.0(2 cores)FFTW 3.3(1 core)FFTW 3.3(2 cores)

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

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

ス」研究会

19

考察• 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 ではキャッシュブロッキングを行っており,全てのデータがキャッシュに収まりきれない場合についても,ある程度高い性能が維持できている.

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

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

ス」研究会

20

まとめ• AVX 命令を用いた並列 FFT の実現および評価を

行った.• FFT カーネルを AVX 命令を用いてベクトル化

すると共に,キャッシュメモリを効果的に利用できるブロック Six-Step FFT を OpenMP を用いて並列化した.

• その結果, FFTW に比べて,特にデータがキャッシュに収まらないような場合に対して性能が改善されることを示した.

• 同様の手法は,多次元 FFT においても有効であると考えられる.