24
GPUおよびCPUを併用する 高効率のFFTライブラリ 東京工業大学 理学部情報科学科 03-0537-2 尾形泰彦 指導教員 松岡聡 2007/2/16

03-0537-2 尾形泰彦 指導教員 松岡聡matsu-...GPUおよびCPUを併用する 高効率のFFTライブラリ 東京工業大学 理学部情報科学科 03-0537-2 尾形泰彦

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 03-0537-2 尾形泰彦 指導教員 松岡聡matsu-...GPUおよびCPUを併用する 高効率のFFTライブラリ 東京工業大学 理学部情報科学科 03-0537-2 尾形泰彦

GPUおよびCPUを併用する高効率のFFTライブラリ

東京工業大学 理学部情報科学科

03-0537-2 尾形泰彦

指導教員 松岡聡

2007/2/16

Page 2: 03-0537-2 尾形泰彦 指導教員 松岡聡matsu-...GPUおよびCPUを併用する 高効率のFFTライブラリ 東京工業大学 理学部情報科学科 03-0537-2 尾形泰彦

背景GPUを用いた汎用計算

GPUはCPUに対して性能比が良い

500GFLOPSが8万円

CPUは25GFlopsが2万円

GPU単体でいかに効率よく計算するかが中心

→CPUとGPUを併用することでより効率よく計算

→GPUとCPUの性能特性を知る必要がある

}理論性能比20倍価格性能比5倍

Page 3: 03-0537-2 尾形泰彦 指導教員 松岡聡matsu-...GPUおよびCPUを併用する 高効率のFFTライブラリ 東京工業大学 理学部情報科学科 03-0537-2 尾形泰彦

背景: CPU/GPU性能特性の違いGPUは計算時間以外のオーバヘッドが存在

→小さなサイズの場合、CPUで計算する方が速い

GPUではメモリサイズが限られている

→大きなサイズの場合、GPUメモリにデータが入りきらない

0

0.1

0.2

0.3

0.4

0.5

0.6

0 1000 2000 3000 4000 5000

問題サイズ

実行

時間

(秒)

CPU

GPU

注:1024列計算した実行時間

Page 4: 03-0537-2 尾形泰彦 指導教員 松岡聡matsu-...GPUおよびCPUを併用する 高効率のFFTライブラリ 東京工業大学 理学部情報科学科 03-0537-2 尾形泰彦

関連研究GPUFFTW[Nagaら,’06]

GPUを用いたFFTライブラリ

CPUを用いることは無考慮

cg-gemm[大島ら ’06]

CPUとGPUを併用したGEMMライブラリ

cg-gemmでは、CPUの処理とGPUの操作に関する処理をCPU上で並列する必要はない

→FFTの計算はGEMMより複雑GEMM→GPU内で計算が完結

FFT→CPU側からの制御が必要

そのままアルゴリズムをFFTには適用できない

Page 5: 03-0537-2 尾形泰彦 指導教員 松岡聡matsu-...GPUおよびCPUを併用する 高効率のFFTライブラリ 東京工業大学 理学部情報科学科 03-0537-2 尾形泰彦

目的と提案

目的CPUとGPUの併用の有効性を検証

CPUとGPU並列FFTの最適分割率決定

提案

性能向上のために、CPU、GPUに対して計算量を配分

→性能モデルを行って最適分割率を予測

→予測した最適性能で問題を実行

Page 6: 03-0537-2 尾形泰彦 指導教員 松岡聡matsu-...GPUおよびCPUを併用する 高効率のFFTライブラリ 東京工業大学 理学部情報科学科 03-0537-2 尾形泰彦

成果

成果GPUとCPUを併用する2D FFTライブラリの

アルゴリズムの提案とプロトタイプ実装

ライブラリの実行時間に対する性能モデルの構築性能モデルと実測値を比較し有効性を確認

性能モデルから他の問題サイズの最適値を推測

既存のFFTと比較して2倍の性能

Page 7: 03-0537-2 尾形泰彦 指導教員 松岡聡matsu-...GPUおよびCPUを併用する 高効率のFFTライブラリ 東京工業大学 理学部情報科学科 03-0537-2 尾形泰彦

0 n

2D FFTアルゴリズム高速離散フーリエ変換

スペクトル解析、流体シミュレーションetc2D FFT = 1D FFTを各軸に実行

0

m

n

m

縦方向に1D FFT

横方向に1D FFT

Page 8: 03-0537-2 尾形泰彦 指導教員 松岡聡matsu-...GPUおよびCPUを併用する 高効率のFFTライブラリ 東京工業大学 理学部情報科学科 03-0537-2 尾形泰彦

0 n

2D FFTの分割法2D FFTを分解することで得られる、1D FFTをCPU/GPUに分割率に応じて割り当て

0

m

n

m

GPU:65%

CPU1:25%

CPU2:10%

例:GPU:CPU1:CPU2=65:25:10

Page 9: 03-0537-2 尾形泰彦 指導教員 松岡聡matsu-...GPUおよびCPUを併用する 高効率のFFTライブラリ 東京工業大学 理学部情報科学科 03-0537-2 尾形泰彦

最適分割率の決定法

FFTの計算に対する性能モデルを構築

実行前:

プレ実行から性能モデルのパラメータの決定

実行開始時:

求めたパラメータと問題サイズを性能モデルに代入し、最適割り当て率を推定

ex) 5%刻みでGPU割り当て率に応じた実行時間を予測

→その中で最短時間となる割り当て率を最適とする

Page 10: 03-0537-2 尾形泰彦 指導教員 松岡聡matsu-...GPUおよびCPUを併用する 高効率のFFTライブラリ 東京工業大学 理学部情報科学科 03-0537-2 尾形泰彦

実行時間の性能モデル(1)

GPU側行方向FFTCPU側行方向FFT

CPU側転置

GPU側

転置&データ変換

CPU側転置

GPU側列方向FFT

CPU側列方向FFT

中間転置終了待ちの同期

GPU側 CPU側

GPU側

転置&データ変換

GPU側

データ変換

性能モデルによる予測時間

行計算部分のCPU側とGPU側の時間

の予測最大値

列計算部分のCPU側とGPU側の時間

の予測最大値

実行の流れ

Page 11: 03-0537-2 尾形泰彦 指導教員 松岡聡matsu-...GPUおよびCPUを併用する 高効率のFFTライブラリ 東京工業大学 理学部情報科学科 03-0537-2 尾形泰彦

実行時間の性能モデル(2)メモリコピー・転置時間

行列サイズ2×全体に対する転置・コピーを行う割合×定数

GPU側FFT計算時間

行列サイズ/1回の最大計算FFT数×(GPUの最低時間+

定数×行列サイズ×1回のFFT数)

CPU側

FFT計算時間

行列サイズ2×log(行列サイズ)×計算本数×定数

性能モデルによる予測時間

CPU側転置+

行方向実行時間

GPU側転置+

行方向実行時間

CPU側

列方向実行時間

GPU側転置+

列方向実行時間

両者の最大値 両者の最大値

Page 12: 03-0537-2 尾形泰彦 指導教員 松岡聡matsu-...GPUおよびCPUを併用する 高効率のFFTライブラリ 東京工業大学 理学部情報科学科 03-0537-2 尾形泰彦

実装

汎用のFFTライブラリを使用

CPUライブラリとしてFFTW[Frigoら]、GPUライブラリとしてGPUFFTW[Nagaら]を使用

行列の転置をブロック化により高速化

行列の転置の順序を調整することでメモリアクセス量の低減

Page 13: 03-0537-2 尾形泰彦 指導教員 松岡聡matsu-...GPUおよびCPUを併用する 高効率のFFTライブラリ 東京工業大学 理学部情報科学科 03-0537-2 尾形泰彦

評価

評価項目ライブラリの実行性能の評価

性能モデルの検証

評価環境CPU:Core 2 duo [email protected]:4GBGPU:Geforce8800GTXGraphic memory:768MBBus type:PCI Express 16XLinux 2.6.18,GNU GCC4.1.2NVIDIA Linux Display Driver version 7946

Page 14: 03-0537-2 尾形泰彦 指導教員 松岡聡matsu-...GPUおよびCPUを併用する 高効率のFFTライブラリ 東京工業大学 理学部情報科学科 03-0537-2 尾形泰彦

評価:本ライブラリの実行性能問題数81922、CPUが1スレッドと2スレッド(等分割)の場合

問題サイズ8192(実測値)

0

2

4

6

8

10

12

0 20 40 60 80 100

GPU分割率(%)

実行時間(秒

)

実測値(2スレッド)

実測値(1スレッド)

Page 15: 03-0537-2 尾形泰彦 指導教員 松岡聡matsu-...GPUおよびCPUを併用する 高効率のFFTライブラリ 東京工業大学 理学部情報科学科 03-0537-2 尾形泰彦

評価:本ライブラリの実行性能問題数81922、CPUが1スレッドと2スレッド(等分割)の場合

問題サイズ8192(実測値)

0

2

4

6

8

10

12

0 20 40 60 80 100

GPU分割率(%)

実行時間(秒

)

実測値(2スレッド)

実測値(1スレッド)

•1スレッドの場合はCPU単体と比べて1.45倍の高速化

•2スレッドの場合は同1.09倍の高速化

Page 16: 03-0537-2 尾形泰彦 指導教員 松岡聡matsu-...GPUおよびCPUを併用する 高効率のFFTライブラリ 東京工業大学 理学部情報科学科 03-0537-2 尾形泰彦

評価:性能モデルの検証(1)問題数81922、CPUは1スレッドと2スレッド(等分割)の場合

性能モデルによる予測値は問題数81922のデータから作成

問題サイズ8192(実測値、予測値)

0

2

4

6

8

10

12

0 20 40 60 80 100

GPU分割率(%)

実行時間(秒

)

実測値(2スレッド)

予測値(スレッド)

実測値(1スレッド)

予測値(1スレッド)•ほぼ実測値と予測値が一致•最適値部分ではCPUとGPUの処理の

相互作用によるずれ

Page 17: 03-0537-2 尾形泰彦 指導教員 松岡聡matsu-...GPUおよびCPUを併用する 高効率のFFTライブラリ 東京工業大学 理学部情報科学科 03-0537-2 尾形泰彦

評価:性能モデルの検証(2)先ほどの要素数81922の場合のデータから、

要素数40962の傾向を予測

問題サイズ4096(実測値、予測値)

0

0.5

1

1.5

2

2.5

3

0 20 40 60 80 100

GPU割り当て率

実行

時間

(秒)

実測値(1スレッド)

予測値(1スレッド)

実測値(2スレッド)

予測値(2スレッド)

Page 18: 03-0537-2 尾形泰彦 指導教員 松岡聡matsu-...GPUおよびCPUを併用する 高効率のFFTライブラリ 東京工業大学 理学部情報科学科 03-0537-2 尾形泰彦

評価:性能モデルの検証(2)先ほどの要素数81922の場合のデータから、

要素数40962の傾向を予測

問題サイズ4096(実測値、予測値)

0

0.5

1

1.5

2

2.5

3

0 20 40 60 80 100

GPU割り当て率

実行

時間

(秒)

実測値(1スレッド)

予測値(1スレッド)

実測値(2スレッド)

予測値(2スレッド)

最適値自体は5%以内の精度で当てているが、CPU側の割り当てに偏ると誤差が大きくなる

異なるサイズのデータを跨ぐ実行時間の予測では、改善が必要

Page 19: 03-0537-2 尾形泰彦 指導教員 松岡聡matsu-...GPUおよびCPUを併用する 高効率のFFTライブラリ 東京工業大学 理学部情報科学科 03-0537-2 尾形泰彦

GPUとの通信コストGPUとの通信に掛かるコストが非常に大きい

性能モデルからGPUへの転送コストの部分のみ抜き出し

0

2

4

6

8

10

12

0 20 40 60 80 100

実測値(1スレッド)

GPUへの転送コスト

Page 20: 03-0537-2 尾形泰彦 指導教員 松岡聡matsu-...GPUおよびCPUを併用する 高効率のFFTライブラリ 東京工業大学 理学部情報科学科 03-0537-2 尾形泰彦

GPUとの通信コストGPUとの通信に掛かるコストが非常に大きい

性能モデルからGPUへの転送コストの部分のみ抜き出し

0

2

4

6

8

10

12

0 20 40 60 80 100

実測値(1スレッド)

GPUへの転送コスト全実行時間の7割が通信コスト

Page 21: 03-0537-2 尾形泰彦 指導教員 松岡聡matsu-...GPUおよびCPUを併用する 高効率のFFTライブラリ 東京工業大学 理学部情報科学科 03-0537-2 尾形泰彦

GPUとの通信コストGPUとの通信に掛かるコストが非常に大きい

性能モデルからGPUへの転送コストの部分のみ抜き出し

0

2

4

6

8

10

12

0 20 40 60 80 100

実測値(1スレッド)

GPUへの転送コスト

最適値付近でも6割が通信コスト

Page 22: 03-0537-2 尾形泰彦 指導教員 松岡聡matsu-...GPUおよびCPUを併用する 高効率のFFTライブラリ 東京工業大学 理学部情報科学科 03-0537-2 尾形泰彦

GPUの通信コストの大きさ

現状のGPUとの通信コストは大きすぎる

→GPUをライブラリとして扱うことには限界

ライブラリベースのGPGPUではなく言語統合型のGPGPU(Peak stream, CUDA, Accelerator)これらはGPU内でデータの再活用が可能

Page 23: 03-0537-2 尾形泰彦 指導教員 松岡聡matsu-...GPUおよびCPUを併用する 高効率のFFTライブラリ 東京工業大学 理学部情報科学科 03-0537-2 尾形泰彦

まとめ

CPU/GPUの並列での計算の有効性

CPUとGPUを並列する2D FFTライブラリ

実行時間の性能モデル

予測の際にデータを取得した問題サイズと同サイズの実行時間を予測

予測の際にデータを取得した問題サイズと異なるサイズの実行時間を予測

GPUの転送コストは非常に大きい

Page 24: 03-0537-2 尾形泰彦 指導教員 松岡聡matsu-...GPUおよびCPUを併用する 高効率のFFTライブラリ 東京工業大学 理学部情報科学科 03-0537-2 尾形泰彦

今後の課題

性能モデルの正確性の向上CPU・GPUによるお互いの負荷は未検証

問題サイズを跨ぐ予測の精度の向上

言語統合型のGPGPUを採用し、通信コストの

削減