Optics & Photonics Japan 2011 講演予稿集, 30pD2 (吹田, 2011.11.30)

GPU 支援ライブラリを用いた準リアルタイム
波動光学シミュレーション
Near-Real time Wave-Optical Simulation
by GPU-Assisted Library○

寺口功，松島 恭治○Isao Teraguchi and Matsushima Kyoji

関西大学 システム理工学部 電気電子情報工学科
Department of Electrical and Electronic Engineering, Kansai University
E-mail: teraguchi@laser.ee.kansai-u.ac.jp
A GPU-assisted C++ programming library for wave-optical simulation, named CudaWaveField library(CWFL) is presented. The CWFL is designed for close cooperation with WaveField library (WFL)
used for the same purpose but designed for simulation using multi-core CPUs. The CWFL make itpossible to execute numerical propagation even faster than that executed only by the WFL. Moreover,
we developed WaveField graphics library (WFGL) that allows us to view the temporal development ofsimulated wave-fields in real-time. These libraries make it easy to produce Windows application
software in wave-optics.

DIrectX
OpenGL

１．はじめにGPU を汎用計算に応用し，計算時間の短縮を図るアプローチは現在広く用いられている．これは波動光学においても例外ではなく，我々も昨年発表した Wave Field Tools1)を拡張し，波動光学的計算を GPU 支援するライブラリ CudaWaveField を開発し，報告している 2)．CudaWaveField は WaveField が持つ様々な関数の中でも，計算負荷が高く時間がかかる処理を高速に処理する事に特化しており，計算機合成ホログラム(CGH)の合成やディジタルホログラフィ(DH)の再生計算等のシミュレーションに不可欠な，FFT やシフテッド角スペクトル伝搬法，シフテッドフレネル伝搬法，回転変換等の様々な波動光学的計算を高速に行う事を可能にする．しかし，このバージョンの CudaWaveField は旧バージョンの CUDA に対応しており，複数の GPU による並列処理が出来ない等の幾つかの問題を抱えていた．そこで本研究では，CudaWaveFieldを改良してマルチ GPU に対応し，より高い性能を発揮する事を目指した．また，計算は高速に行えても，その結果を画像ファイルとして出力しなければ見る事が出来ず，パラメータを変化しながらリアルタイムに 光 波 の 変 化 を 見 る 事 は 難 し い と い う 問 題 が あ っ た ． そ こ で 本 研 究 で は 更 に ， WaveField お よ びCudaWaveField に対応し，光波複素振幅分布を可視化して計算結果を簡単かつリアルタイムに表示する事を 可 能 と す る 拡 張 ラ イ ブ ラ リ WaveField Graphics
Library を開発した．これらのライブラリの特徴は，User application,Simulation,etc… This work
 光波シミュレーションに関する広汎な関数を実装
WaveFieldGraphicsLib
した WaveFIeld ライブラリとのシームレスな連携
 煩雑な GPU 処理をカプセル化し、GPU の利用を簡PolygonSourceLib
Cuda
単化
WaveField
 シミュレーションの計算時間の大半を占める伝搬
WaveFieldLib
Lib
計算等が CPU 処理の WaveField に比べて高速 マルチ GPU 対応
OpenMP Intel MKL
CUDA4.0
 DirectX/OpenGL を用いているため，GUI アプリケーションとの親和性が高い
CPU(64/32bit,Multi-core)
GPU(CC2.0)
等がある．以下， CudaWaveField ラ イブラリおよびWaveField Graphics Library の構成，機能および性能につFig.2 The architecture of WaveField Tools.
いて報告する．
２．ライブラリの構成
波動光学的計算に用いるツール群を WaveField Toolsと呼んでいる．WaveField Tools の構成を Fig.1 に示す．
破線の範囲が本研究で付加した部分である．今回，改良 さ れ た CudaWaveFIeld Lib. は WaveField Lib. とCompute Capability 2.0 以上の GPU および，CUDA4.0 にTable 1 Specifications of the computer used tomeasure performance of the library.
OS
Windows7 x64 professional
CPU
Core i7 970 @3.2GHz
Memory24GB DDR3
GPU 0GeForce GTX580
GPU 1
Tesla C2070

よって構成される．ここで，WaveField Graphics Lib.は WaveField や CudaWaveField が処理している複素振幅分布オブジェクトを可視化し，DirectX や OpenGL を通して画面に直接表示する機能を提供している．

84.37 ←GPU 1

55.67 ←GPU 0CPU

42.12

106.8

2.10

0

[sec]
68.31

80( C )FFT × 100
7060

15.88

300.49

0.68

6.90

0.24

3.09

0.36

10

5.69

40

4.20

32.33

CPU←GPU 0←GPU 0 + 1

5020

文献
1) 松島: OPJ2010 予稿集, 9aC2(2010).
2) 寺口: 第 5 回新画像システム・情報フォトニクス研究討論会講演予稿集,
34-35(2011).
3) K. Matsushima, et al.: Opt. Express 17,19662-19673(2009).

CPU0←GPU
165.33212.4 ←GPU 1

347.9325.3

20.28163.5

12.5

77.06

200

10.73

４．おわりにGPU 支 援 波 動 光 学 計 算 ラ イ ブ ラ リ
CudaWaveField の改良を行った．また，計算結果をリアルタイムで表示し，グラフィカルなアプリケーションの作成を容易にする WaveField Graphics Library を開発した．本ライブラリや，ベースとなった
WaveField ライブラリ，また CGH のための Polygon Source Library 等は下記サイトにて配布している．
http://www.laser.ee.kansai-u.ac.jp/WaveField
Tools/

748.26

Computation Time1511.12

27.81

82.11
2.81

19.39

49.89
0.97

155.01

13.22

39.68
1.34

9.82

6.75

68.92

4.84

31.17

3.59

320.63678.37３．改良型 CudaWaveField の性能
FFT の計算時間と，代表的な伝搬計算法として帯域制限角スペクトル法 3)の計算時間を測定した結果をFig.2 に示す．また，使用した計算機の仕様を Table 1 に示す．ここで，WaveField は CPU の論理 8 コアを全て並列に使用した．また，CudaWaveField は 2 種類の GPU において測定を行った．なお，サンプリング数の単位は 1K = 1024 点である．
(A)から，8K × 8K サイズの FFT で[msec]
800
WaveField が 678ms, CudaWaveField でGTX580 を用いた場合が 56ms，C2070 を( A )FFT700用いた場合が 84ms となっており，CPU の論理 8 コアをフルに使用しても，GPU は600
約 10 倍高速であることがわかる．(B)の帯500域制限角スペクトル法でもほぼ同じ結果となっている．
400(C)は 100 回の FFT を WaveField (8 コア300並列)で行った場合，CudaWaveField を用いて GPU 0 のみで処理した場合，GPU 0200と GPU 1 の両方を用いて並列的に処理し100た場合について測定を行った結果である．
この結果から，8K × 8K では CPU が 680秒であるのに対し，GTX580 のみを使用し[msec]た場合が 5.69 秒となり，GTX580 と C20701600を両方稼働させた場合は 4.20 秒となった．
( B )BL-ASM
1400
これより GPU を複数備えたマシンでは，GPU を並列駆動すると性能が向上できる
1200
事がわかる．しかし，規模が大きくなる1000程その効果が小さくなっている．これは異なる GPU を用いた事が原因であると考800えられる．すなわち， C2070 のほう がGTX580 より処理能力が低いため，C2070600がボトルネックとなって効率が落ちてい400るものと推測される．

02K x 2K

4K x 2K

4K x 4K

8K x 4K

8K x 8KNumber of Samplings
Fig.2 Measured computation time of several
implemented in the CudaWaveField library.

methods