GPU クラスタにおける 並列三次元 FFT の実現と評価

18
2014/3/11 ココココココココココココココココココ コココココココココ コココココココ 25 コココ 2 ココココ GPU コココココココココココココ FFT ココココココ ココココ コココココココココココ

description

GPU クラスタにおける 並列三次元 FFT の実現と評価. 高橋大介 筑波大学システム情報系. 発表内容. 背景 目的 三次元 FFT アルゴリズム GPU クラスタにおける並列三次元 FFT 性能評価 まとめ. 背景. 近年, GPU ( Graphics Processing Unit )の高い演算性能とメモリバンド幅に着目し,これを様々な HPC アプリケーションに適用する試みが行われている. - PowerPoint PPT Presentation

Transcript of GPU クラスタにおける 並列三次元 FFT の実現と評価

Page 1: GPU クラスタにおける 並列三次元 FFT の実現と評価

2014/3/11

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

ス」平成 25年度第 2回研究会

GPU クラスタにおける並列三次元FFT の実現と評価

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

Page 2: GPU クラスタにおける 並列三次元 FFT の実現と評価

2014/3/11

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

ス」平成 25年度第 2回研究会

発表内容

• 背景• 目的• 三次元 FFT アルゴリズム• GPU クラスタにおける並列三次元 FFT• 性能評価• まとめ

2

Page 3: GPU クラスタにおける 並列三次元 FFT の実現と評価

2014/3/11

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

ス」平成 25年度第 2回研究会

背景• 近年, GPU ( Graphics Processing Unit )の高い

演算性能とメモリバンド幅に着目し,これを様々なHPC アプリケーションに適用する試みが行われている.

• また, GPU を搭載した計算ノードを多数接続したGPU クラスタも普及が進んでおり, 2013 年 11 月の TOP500 リストでは NVIDIA Tesla K20X GPU を搭載した Titan が第 2 位にランクされている.

• これまでに GPU クラスタにおける並列三次元 FFTの実現は行われている [Chen et al. 2010, Nukada et al. 2012] が,一次元分割のみサポートされており,二次元分割はサポートされていない.

3

Page 4: GPU クラスタにおける 並列三次元 FFT の実現と評価

2014/3/11

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

ス」平成 25年度第 2回研究会

目的• GPU クラスタにおける並列三次元 FFT の実現を行

う.• CPU 版と同じインターフェースで GPU 版を使用

することができるようにする.• 筑波大学計算科学研究センターに設置された GPU

クラスタである HA-PACS ベースクラスタにおいて性能評価を行う.

4

Page 5: GPU クラスタにおける 並列三次元 FFT の実現と評価

2014/3/11

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

ス」平成 25年度第 2回研究会

方針• CPU 版と GPU 版を同一インターフェースとするた

め,入力データおよび出力データはホストメモリに格納する.– FFT ライブラリが呼び出された際に,ホストメモリからデ

バイスメモリに転送し, FFT ライブラリの終了時にデバイスメモリからホストメモリに転送する.

• FFT ライブラリを置き換えるだけで性能可搬性を実現する.

• 計算可能な問題サイズは GPU のデバイスメモリの容量が限度になる.– ホストメモリのデータを分割してデバイスメモリに転送し

ながら FFT 計算を行うことも可能であるが,今回の実装ではそこまで行わないこととする.

5

Page 6: GPU クラスタにおける 並列三次元 FFT の実現と評価

2014/3/11

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

ス」平成 25年度第 2回研究会

6

三次元 FFT

• 三次元離散フーリエ変換( DFT )の定義

𝑦 (𝑘1 ,𝑘2 ,𝑘3 )=∑𝑗 1=0

𝑛1−1

∑𝑗2=0

𝑛2−1

∑𝑗 3=0

𝑛3− 1

𝑥 ¿¿¿¿

𝜔𝑛𝑟=𝑒−2 𝜋 𝑖 /𝑛𝑟∧𝑖=√−1

,

Page 7: GPU クラスタにおける 並列三次元 FFT の実現と評価

2014/3/11

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

ス」平成 25年度第 2回研究会

7

三次元 FFT アルゴリズム• Step 1: 組の点 multicolumn FFT• Step 2: 行列の転置• Step 3: 組の点 multicolumn FFT• Step 4: 行列の転置• Step 5: 組の点 multicolumn FFT• Step 6: 行列の転置

Page 8: GPU クラスタにおける 並列三次元 FFT の実現と評価

並列三次元 FFT アルゴリズム全対全通信

𝑛1𝑃0 𝑃1 𝑃2 𝑃3

𝑛1

8

𝑛3

全対全通信

転置

𝑛2𝑃0 𝑃1 𝑃2 𝑃3𝑛2

𝑛3

𝑃0 𝑃1 𝑃2 𝑃3

転置2014/3/11

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

ス」平成 25年度第 2回研究会

8

Page 9: GPU クラスタにおける 並列三次元 FFT の実現と評価

2014/3/11

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

ス」平成 25年度第 2回研究会

GPU クラスタにおける並列三次元 FFT ( 1/2 )• GPU クラスタにおいて並列三次元 FFT を行う際には,

全対全通信が 2 回行われる.• 計算時間の大部分が全対全通信によって占められるこ

とになる.• CPU と GPU 間を接続するインターフェースである

PCI Express バスの理論ピークバンド幅は PCI Express Gen 2 x 16 レーンの場合には一方向あたり 8GB/sec .

• CPU と GPU 間のデータ転送量をできるだけ削減することが重要になる.– CPU と GPU 間のデータ転送は FFT の開始前と終了後にそれ

ぞれ 1 回のみ行う.– 行列の転置は GPU 内で行う.

9

Page 10: GPU クラスタにおける 並列三次元 FFT の実現と評価

2014/3/11

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

ス」平成 25年度第 2回研究会

GPU クラスタにおける並列三次元 FFT ( 2/2 )• GPU 上のメモリを MPI により転送する場合,以下の手

順で行う必要がある.1. GPU 上のデバイスメモリから CPU 上のホストメモリへ

データをコピーする.2. MPI の通信関数を用いて転送する.3. CPU 上のホストメモリから GPU 上のデバイスメモリにコ

ピーする.• この場合, CPU と GPU のデータ転送を行っている間

は MPI の通信が行われないという問題がある.• そこで, CPU と GPU 間のデータ転送とノード間の

MPI 通信をパイプライン化してオーバーラップさせることができる MPI ライブラリである MVAPICH2 を用いた.

10

Page 11: GPU クラスタにおける 並列三次元 FFT の実現と評価

2014/3/11

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

ス」平成 25年度第 2回研究会

MPI + CUDA での通信• 通常の MPI を用いた GPU 間の通信 At Sender:

cudaMemcpy(sbuf, s_device, …);

MPI_Send(sbuf, size, …);

At Receiver:

MPI_Recv(rbuf, size, …);

cudaMemcpy(r_device, rbuf, …);

• MVAPICH2-GPU を用いた GPU 間の通信 At Sender:

MPI_Send(s_device, size, …);

At Receiver:

MPI_Recv(r_device, size, …);

11

・デバイスメモリのアドレスを 直接 MPI 関数に渡すことが可能.・ CUDA と MPI の転送のオーバー ラップを MPI ライブラリ内で行う.

・ cudaMemcpy を行っている間 は MPI の通信が行われない.・メモリをブロックで分割し,  CUDA と MPI の転送をオーバ ーラップさせることも可能. →プログラムが複雑になる.

Page 12: GPU クラスタにおける 並列三次元 FFT の実現と評価

2014/3/11

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

ス」平成 25年度第 2回研究会

性能評価• 性能評価にあたっては,以下の FFT ライブラリについて性能比較を

行った.– FFTE 6.0 ( http://www.ffte.jp/, GPU を使用)– FFTE 6.0 ( http://www.ffte.jp/, CPU を使用)– FFTW 3.3.3 ( http://www.fftw.org/, CPU を使用)

• 順方向 FFT を 1 ~ 256MPI プロセス( 1 ノードあたり 4MPI プロセス)で連続 10 回実行し,その平均の経過時間を測定した.

• HA-PACS ベースクラスタ( 268 ノード, 4288 コア, 1072GPU )のうち, 1 ~ 64 ノードを使用した.– 各ノードに Intel Xeon E5-2670 ( Sandy Bridge-EP 2.6GHz )が 2 ソケッ

ト, NVIDIA Tesla M2090 が 4 基– ノード間は InfiniBand QDR ( 2 レール)で接続– MPI ライブラリ: MVAPICH2 2.0b– PGI CUDA Fortran Compiler 14.2 + CUDA 5.5 + CUFFT– コンパイラオプション:“ pgf90 -fast -Mcuda=cc2x,cuda5.5” ( FFTE

6.0 , GPU ),“ pgf90 –fast -mp” ( FFTE 6.0 , CPU ),” pgcc -fast” ( FFTW 3.3.3 )

12

Page 13: GPU クラスタにおける 並列三次元 FFT の実現と評価

2014/3/11

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

ス」平成 25年度第 2回研究会

HA-PACS ベースクラスタのノード構成

13

1GPU あたり1MPI プロセスを立ち上げる

Page 14: GPU クラスタにおける 並列三次元 FFT の実現と評価

2014/3/11

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

ス」平成 25年度第 2回研究会

FFT並列三次元 の性能HA-PACS N=256× 256× 512× MPI( , プロセス数)

1

10

100

1000

1 2 4 8 16 32 64 128

256

Number of MPI processes

GFlo

ps

FFTE 6.0(GPU)

FFTE 6.0(CPU)

FFTW3.3.3(CPU)

14

Page 15: GPU クラスタにおける 並列三次元 FFT の実現と評価

2014/3/11

FFTE 6.0 GPU FFT( 版)の並列三次元 の実行時間の内訳HA-PACS N=256× 256× 512× MPI( , プロセス数)

0

0.5

1

1.5

2

2.5

3

Number of MPI processes

Tim

e (s

ec)

通信時間

PCIe転送時間演算時間

15

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

ス」平成 25年度第 2回研究会

Page 16: GPU クラスタにおける 並列三次元 FFT の実現と評価

2014/3/11

FFTE 6.0 CPU FFT( 版)の並列三次元 の実行時間の内訳HA-PACS N=256× 256× 512× MPI( , プロセス数)

0

0.5

1

1.5

2

2.5

3

Number of MPI processes

Tim

e (s

ec)

通信時間

演算時間

16

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

ス」平成 25年度第 2回研究会

Page 17: GPU クラスタにおける 並列三次元 FFT の実現と評価

全対全通信の性能HA-PACS 64 , 256MPI )( ノード プロセス

0

100

200

300400

500

600

700

800

Message Size (bytes)

Ban

dwid

th (M

B/s

ec) GPU-GPU

(withMVAPICH2-GPU)GPU-GPU(withoutMVAPICH2-GPU)CPU-CPU

2014/3/11 17

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

ス」平成 25年度第 2回研究会

Page 18: GPU クラスタにおける 並列三次元 FFT の実現と評価

2014/3/11

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

ス」平成 25年度第 2回研究会

まとめ• GPU クラスタにおいて並列三次元 FFT を実現し評価した

結果について述べた.• GPU を用いた場合には CPU に比べて演算時間が短縮され

る一方で,全実行時間における通信時間の割合が増大する.– HA-PACS ベースクラスタの 64 ノード, 256MPI プロセスを用

いた場合,点 FFT において実行時間の約 70% が全対全通信で占められている.

• MPI ライブラリである MVAPICH2 の新機能( MVAPICH2-GPU )を用いることで, PCIe 転送とノード間通信をオーバーラップさせた際のプログラミングが容易になるとともに通信性能も向上した.

• GPU クラスタ向けの並列 FFT ライブラリを FFTE 6.0 として http://www.ffte.jp/にて公開中.

18