• 検索結果がありません。

GPGPUを用いた水平走査型ホログラフィの物体波計算アプリケーションにおける高速化手法

N/A
N/A
Protected

Academic year: 2021

シェア "GPGPUを用いた水平走査型ホログラフィの物体波計算アプリケーションにおける高速化手法"

Copied!
9
0
0

読み込み中.... (全文を見る)

全文

(1)Vol.2018-HPC-163 No.20 2018/3/2. 情報処理学会研究報告 IPSJ SIG Technical Report. GPGPU を用いた水平走査型ホログラフィの 物体波計算アプリケーションにおける高速化手法 本田 舜†1. 高木 康博†2. 並木 美太郎†1. 概要:近年,アプリケーションの高性能化に伴い,GPU などのアクセラレータを用いて高速演算を行う事 例が増えている.高速化を必要とする研究の例として立体表示技術である 3D ホログラフィがある.その 中でも水平走査型ホログラフィと呼ばれる手法は大画面化,広角度の視野といった点で従来手法よりも優 れているが,計算量が多くホログラム生成に時間がかかることが課題である.そこで,本研究では GPU を 用いて水平走査型ホログラフィにおける物体波計算を並列化し,さらに細粒度な並列性や GPU アーキテ クチャを活用した高速化,一般的な高速化手法の適用,マルチ GPU や計算と転送のオーバラップといっ た手法を適用することで,ホログラムを連続投影してリアルタイムにアニメーションを行える高速な計算 時間を目指す.現在までに CPU での非高速化時と比較して約 460 倍の実行速度を実現している.. 1. はじめに. である GPU を用いて水平走査型ホログラフィにおける物 体波計算を並列化することで高速化を目指す.その際に,. 近年,アプリケーションの高性能化に伴い,アクセラ. 単純に高速化するだけでなく様々な高速化手法を検討する. レータと呼ばれる演算装置を用いて高速演算を行う事例が. ことにより高速な計算時間を実現し,ホログラムを連続投. 増えている.CPU による演算においては,扱うデータの巨. 影することでリアルタイムにアニメーションを行える生成. 大化や計算回数の増加に伴い,逐次的な実行による演算量. 速度を目標とする.. が増えることで処理速度の向上が難しい.また,CPU 自 体の性能向上にも物理的な限界があるため,複数の演算コ アを搭載したアクセラレータを用いて並列計算を行うこと. 2. 課題と関連研究 2.1 課題. でアプリケーションの高速化を行う方針が主流となってい. 水平走査型ホログラフィは表示部分においては他の手法. る.アクセラレータには演算の特性や特殊な用途に対応す. における問題を解決できる方式であるが,その物体波計算. るために様々な種類が開発されており,240 コアを搭載し. アプリケーションにおいては計算量の多さが課題となる.. た Intel Xeon Phi やグラフィックス処理に特化した GPU. ホログラムの画像 1 枚の生成のためにデータの正規化,物. などが広く用いられている.特に,GPU についてはグラ. 体波の式計算,畳み込みおよび二値化といった計算を行う. フィックス処理以外の演算に用いることがあり,その手法. 必要があり,さらに視域に対応する差分のために 1 フレー. は GPGPU と呼ばれている.. ムあたり 388 枚の画像生成が必要となる.差分ごとに物体. 計算回数が多く,高速化を必要とする研究の例として電. 波の式計算以降の処理を視差画像の枚数分行わなければな. 気電子工学の分野における 3D ホログラフィの研究がある.. らず,全体としての計算量が多いことで 1 スキャン分のホ. 3D ホログラフィとは,光の干渉や回折を用いて物体像を再. ログラムを生成する計算時間が長くなる.. 生する技術である.この 3D ホログラフィはゴーグルが不. このことにより発生する問題として,ホログラムを連. 要な立体表示装置であるため,自然科学などのシミュレー. 続投影してアニメーションを行うことを考える際に,実. ションの可視化やエンターテイメントとして有望視されて. 用的なアニメーション速度を実現することが難しくなっ. いる.特に水平走査型ホログラフィと呼ばれる手法は,従. てしまう.従来のアプリケーションを 1.2 GHz のシング. 来手法の課題となっていた大画面化,広角度の視野といっ. ルコア CPU 上で逐次実行した際には 1 スキャンのホログ. た問題を解決できる方式として研究が進められている [1].. ラム生成 (約 569MB) に約 2 分ほどかかってしまっている. 本研究では,グラフィックス演算向けのアクセラレータ. (0.008FPS).参考として,日本のテレビジョンシステムは. †1 †2. 東京農工大学大学院 工学府 情報工学専攻 東京農工大学 工学府 電気電子工学専攻. c 2018 Information Processing Society of Japan ⃝. 1 秒間に 30 枚の画像を切り替える 30FPS で映像を表現し ている.また,コンピュータゲームや映像作品においては. 1.

(2) Vol.2018-HPC-163 No.20 2018/3/2. 情報処理学会研究報告 IPSJ SIG Technical Report. 60FPS やそれ以上の速度で画像を切り替えることでより滑. る計算機ホログラフィを扱う.計算機ホログラフィにおい. らかな映像を実現しており,これらの媒体と比較すると現. て,干渉縞を表示するディスプレイを空間光変調器 (Spatial. 状の実行時間は非常に遅く,十分な生成速度であるとは言. Light Modulator, SLM) と呼ぶ.SLM 上に人工的に再現. い難い.. した干渉縞に対して再生波を照射することで物体像が再生 される.. 2.2 関連研究 水平走査型とは異なる方式によるホログラム計算の高速. 4.1 水平走査型ホログラフィ. 化を行っている関連研究は多く,GPU を用いた高速化に. 本研究では,計算機ホログラフィの中でも水平走査型ホ. ついても幅広く行われている.本節では,それらの研究の. ログラフィに焦点を当てて検討を行う.水平走査型ホログ. 一例を挙げる.. ラフィも,さらにスクリーン走査型と視域走査型に分類で. T. Shimobaba らは,AMD 社の GPU である HD5000. きるが,本研究では視域走査型を対象とする.視域走査型. 上への従来の方式によるホログラフィ計算を実現してい. の水平走査型ホログラフィにおける表示システムを図 1 に. る [2].OpenCL を用いて実装を行い,1,024 点の頂点で構. 示す.. 成されるホログラムをおよそ 30 ms で生成することに成功. ‫؝‬ٜ‫ػٔ؞تؿف‬. し,NVIDIA 社の GPU である GeForce GTX260 と比較し て約 2 倍の実行速度を実現している.また,本研究に関連 して,Intel Xeon Phi 上においてもホログラム生成アプリ ケーションを実装し,Xeon Phi に対応した高速化手法の 適用や CPU,GPU との実行性能比較を実施したとのこと である [3].. SSB‫ؔن‬ٜ‫ذ‬ ٝ٤‫ث‬. ムでホログラムを計算し投影する研究を発表している [4]. マルチ GPGPU を用いた CGH 計算の並列化,物体点のタ イリング,メモリ管理手法の検討,ホログラムの 4x4 タイ リング,ブロックサイズ毎の CGMA 比率の検討し,およ そ 6,000 点から構成される 1,920x1,080 のサイズのホログ ラムを 1 秒間に約 37 枚生成することに成功している.. 3. 目標 本研究では,GPGPU を用いて水平走査型ホログラフィ の物体波計算アプリケーションに対して様々なアプローチ から高速化を行い,CPU 上で逐次実行する実装よりも高 速な処理を目指す.具体的には,ホログラム画像を連続生 成したものを投影することで 60FPS にてリアルタイムに アニメーションを行える実行時間を目標とする.そのため に,物体波計算アプリケーションの実行特性解析や詳細な プロファイリングを行うことで高速化に対する指針を得る.. 4. 水平走査型ホログラフィの構成 ホログラフィは,光の波としての性質を利用することで, 空間上に立体画像を表示する技術である [5].投影する物 体から反射された波面である物体波と,物体はとは別に用 意した参照波を干渉させた干渉縞を記録する.この干渉縞 に再生波を照射することで,回折現象により物体像が再生 される. 本研究では,ホログラフィの中でも干渉縞をプログラム 上で生成することでディスプレイとして扱うことのでき. c 2018 Information Processing Society of Japan ⃝. +. 㒌潲䬺俆㊭ 寊䌐鱁吉. +. +. Y. Lee らは,マルチ GPGPU を用いた計算により深度 情報を計測可能なカメラで撮影した情報からリアルタイ. 䬺㝕氺⦐. ٝ٤‫ث‬. MEMS SLM. 㒘. 拡⼤表⽰領域. 镄㔔. 図 1: 水 平 走 査 型 ホ ロ グ ラ フ ィ の 表 示 シ ス テ ム (Y.. Takaki(2016) を基に作成) 表示システムは水平スキャナ,2 枚のレンズおよびフィル タから構成される拡大結像系および SLM から構成される. 本システムにおいては水平スキャナとしてガルバノミラー を用いる.また,本システムでは SLM として高フレーム レートに対応する MEMS(Micro Electro Mechanical Sys-. tem) 型 SLM である DMD(Digital Micro-mirror Device) を用いる. 本手法の特長は水平方向に視域走査して物体波を計算す る点である.本手法を用いることで,従来手法と比較して スクリーンサイズ,視域角,フレームレートといった項目 でより性能の高いホログラム表示が可能となる.. 4.2 物体波計算アプリケーション 上記で示した水平走査型ホログラフィにて投影に使用す る物体波計算アプリケーションについて述べる.ここで, 既存のアプリケーションは言語 C にて実装されており,. CPU 上で逐次実行により計算を行う.物体波を計算する 一連の処理の流れを図 2 に示す. 計算の流れとしては,データの読み込み,正規化,物体 波の式計算,畳み込み,二値化,画像出力という順で処理 を行う.入力されたオブジェクトデータに対して,まずは 視域に対して適切な大きさとなるように正規化を行う.次. 2.

(3) Vol.2018-HPC-163 No.20 2018/3/2. 情報処理学会研究報告 IPSJ SIG Technical Report. ⼊⼒データ. ンを単純に GPU 上に実装した場合には処理が高速となら ない可能性が高い.アプリケーションごとにデータ形式や. Ώ婞锺ⵊ. 処理内容が異なるため,実行特性に合った高速化手法を選. ΐ朮✄峒‫ס‬ 䑑阛砯. 㵅ꌃ. 卶‫ס‬氺⦐⮔ 繪‫׽‬ꂉ‫׌‬ 378. 輁ꌃ. Α沑‫ײ‬ꁎ‫ ײ‬Γْٓٛ⮴劻ⵊ. 出⼒画像. Β◝⡑ⵊ 図 2: 物体波計算アプリケーションの処理の流れ に,正規化された物体点から物体波の式計算を行い,結果. 択する必要がある.そのため,まずは本アプリケーション の GPU 上での実行特性を解析することで高速化の方針を 決定する.. 5. 高速化手法の設計 本章では,GPU 上で動作する水平走査型ホログラフィ の物体波計算アプリケーションに対して検討する高速化手 法の設計について示す.なお,本研究では I/O の高速化に は着手せず,まずは計算機能に焦点を当てて高速化を行う.. 5.1 高速化手法検討のための実行特性解析. を実部と虚部に分けて取り出す.続けてそれらの計算結果. 上記で示したように,GPU 上でのアプリケーションの. に対して共役像除去のための畳み込みを行い,最終的に結. 実行特性を解析しボトルネックとなっている部分を解消す. 果を二値化して画像出力できる形とする.物体波の式計算. ることで高速化を目指す.そのために,各関数やその中の. の処理に関しては視域の水平走査に対応して 378 回繰り返. 細かい処理ごとに実行時間を計測するなどの実行特性の解. し計算する.その際,繰り返しごとに計算結果を格納する. 析を行った.. メモリ領域に対してメモリ初期化を行う必要がある.画像. 4.2 節で示した処理の流れのうち,正規化から最後の視. 出力の際には,大画面化のための 2 チャンネル化に対応し. 差画像の二値化が完了した時点までの処理を対象とし,5. て,1 回分の計算結果からタイリングに用いる左右の画像. 回計測した結果の平均を算出する.また,GPU 版は最も. 2 枚を生成する.. 単純な方法で実装し,高速化手法を適用していない状態の アプリケーションを使用する.表 1 に CPU 版アプリケー. 4.3 物体波計算アプリケーションの GPU 上への実装. ションの実行時間計測,および表 2 に GPU 版非高速化ア. 本研究では,水平走査型ホログラフィの物体波計算アプ. プリケーションの実行時間計測から導出した解析結果を示. リケーションを GPU 上で実現した上で高速化する.GPU. す.ここで,CPU 上での計測に利用した gprof の計測精度. 上で動作させる際のコントロールフローを図 3 に示す.. においては正規化関数の実行時間を得られなかったため,. ファイル⼊⼒. GPU. で並列化. ‫סذ٭ظ‬婞锺ⵊ. ⪢氺⦐‫מ‬㸐‫י׊‬繪ꂉ‫׌‬ GPU で並列化. 朮✄峒‫ס‬䑑阛砯 沑‫ײ‬ꁎ‫ײ‬ ◝⡑ⵊ ファイル出⼒. 図 3: GPU 上における物体波計算アプリケーションのコン トロールフロー 処理全体のうち,正規化・物体波の式計算・畳み込み・ 二値化・メモリ初期化の処理を GPU 上で並列実行する.. 以下では 0.01 s 未満として扱う. 表 1: CPU 上における実行時間計測結果 実行時間 [s] 計算全体. 割合. 11.1. 100%. <0.01. 0.00%. 物体波の式計算. 0.67. 6.02%. 畳み込み. 2.60. 23.4%. 二値化. 1.78. 16.0%. メモリ初期化. 3.55. 31.9%. その他. 2.52. 22.7%. 正規化. 表 2: GPU 上における実行時間計測結果 実行時間 [ms]. 割合. 計算全体. 1004. 100%. 正規化. 18.8. 1.87%. 物体波の式計算. 46.3. 4.61%. 110. 11.0%. 畳み込み. 入出力するデータは CPU と GPU 間で PCI-Express を介. 二値化. 64.9. 6.46%. して転送する.. メモリ初期化. 124. 12.4%. 転送. 644. 64.1%. GPGPU を用いて高速化するにあたり,アプリケーショ. c 2018 Information Processing Society of Japan ⃝. 3.

(4) Vol.2018-HPC-163 No.20 2018/3/2. 情報処理学会研究報告 IPSJ SIG Technical Report. 結果より,CPU においては,実行時間における関数ご との割合としてはメモリ初期化が最も高く,次いで畳み込 み,二値化,物体波の式計算,正規化となっていた.各関 数の処理を見ると,後述するように正規化と物体波の式計 算関数は主に各物体点に対する処理であり,対して畳み込 み,二値化関数およびメモリ初期化についてはピクセル画 像配列に対する処理が主である.本計測においては,物体. ションでは特に以下の部分に付随するオーバヘッドが大き いことが確認された.. ( 1 ) 各関数内におけるグローバルメモリへのアクセス ( 2 ) 畳み込み関数の計算処理 ( 3 ) メモリ初期化処理 ( 4 ) 出力データの転送. 点数 4,486 に対してピクセル画像配列のサイズは 1,536 x. 本研究においては,これらの部分を中心に高速化するこ. 1,024 と大きく,逐次実行により処理を行う際にピクセル. とで 3 章で掲げた目標の達成を目指す.上記のうち,グ. 画像配列を対象とする関数のほうが時間がかかる傾向にあ. ローバルメモリへのアクセスについては入力データ形式. るということが言える.. を考慮した並列化および GPU のアーキテクチャを活用す. GPU においては,実行時間を占める各関数の割合の順は. る高速化,メモリの初期化部分や転送については一般的な. CPU 版と変わらないものの,計算時間の合計よりも転送. 高速化手法の適用によって解決を目指す.また,それに加. 時間のほうが多いという結果となった.各関数で見ると,. えてマルチ GPU など他のアプローチからの高速化も検討. 正規化,物体波の式計算関数と畳み込み,二値化,メモリ. する.. 初期化という 2 種類の関数間の割合の差は CPU 版と比べ て小さくなっており,並列化により逐次実行版の問題がわ. 5.3 GPU 上における入力データ形式を考慮した並列化. ずかに緩和されたことが分かる.しかし,単純に並列化し. 物体波計算アプリケーションにおける各関数を GPU 上. ただけでは目標の実行時間には到達しておらず,60FPS の. で実現する際に,処理を並列化することで高速化を行う.. アニメーションを実現するためには 980 ms 以上の実行時. 本節では,その並列化する際の処理の分割方式およびデー. 間削減が必要となる.. タ分割方式について示す.. 上記の結果のようになった原因として,GPU 上のグロー. 各関数を並列化する際に,入力データの形式によりその. バルメモリへのアクセスの遅さが考えられる.特に,各関. 分割方式も異なる.具体的には,正規化,物体波の式計算. 数内で最後に値をライトする処理が低速となっており,ア. 関数についてはオブジェクトデータの各点の座標位置が入. プリケーション全体の実行時間において大きな割合を占め. 力データとなる.また,メモリ初期化,畳み込み,二値化. ていると仮定した.以下の表 3 にこの仮説の根拠となる,. の各関数については入力データとしてピクセル画像の配列. 物体波の式計算関数,畳み込み,二値化の 3 関数において. を使用する.. 最後のメモリライト処理を除いた時間を計測した結果を. GPU 上で実行するスレッドはにオブジェクトの頂点や 出力画像のピクセルごとに 1 つずつ割り当てる細粒度を基. 示す.. 準として並列実行する.入力するデータの形式に合わせた 表 3: 関数内最後のメモリライト処理を除いた時間の計測. 分割方式により連続領域へのメモリアクセスを保証し,並. 結果 [ms]. 列実行される各点の値の式変換やメモリへの格納処理を高. 物体波の式計算 畳み込み 二値化. 実行時間. メモリライトを 除いた時間. メモリライト時間. 46.3. 4.15. 42.2. 110. 87.2. 22.8. まず正規化,物体波の式計算関数に用いるデータ分割方. 64.9. 3.85. 61.0. 式を図 4(a) に示す.本データ方式では,入力データである. 速化する.そのため,上記の 2 通りのデータ分割方式を検 討する必要がある.. オブジェクトデータの各点の座標位置を順不同で 1,024 点 この結果のように,物体波の式計算関数と二値化につい. ずつ取り出し,この単位を 1 ブロックとして纏めて扱う.. ては最後のメモリライトにかかる時間が関数全体の 90%以. そして,各点すべてに論理スレッドを割り当てる.最後に,. 上を占めていることが確認された.そのため,計算の高速. 各ブロックを物理コアに割り当て,実プロセッサ内で処理. 化よりもグローバルメモリへのアクセスを高速化する方法. を行う.その際,プロセッサ内でスケジューリングが行わ. を検討する必要がある.また,畳み込みについては計算量. れるが,本研究においては使用するライブラリの機能を用. やメモリリード量も多いことからメモリライト時間占める. いて自動で行うものとする.. 割合は比較的少ないため,メモリライトだけでなく他の方 法による高速化についても検討する必要がある.. 続いてメモリ初期化,畳み込み,二値化の各関数に用い るデータ分割方式を図 4(b) に示す.ピクセル画像を 1 行 ずつそれぞれブロックに分配し,1 行中の各ピクセルにそ. 5.2 本研究における高速化の方針 これらの結果より,GPU 上での物体波計算アプリケー. c 2018 Information Processing Society of Japan ⃝. れぞれ論理スレッドを割り当てる.その後,頂点のデータ 分割時と同様に物理コアを用いて処理を行う.. 4.

(5) Vol.2018-HPC-163 No.20 2018/3/2. 情報処理学会研究報告 IPSJ SIG Technical Report. (a) 正規化,物体波の式計算関数. (b) 視差画像分担バージョンの処理の流れ. 図 4: メモリ初期化,畳み込み,二値化の各関数. 5.4 各関数の並列化方針. よる並列化は難しく,また特に物体点の数が多い場合には. 一般的に,処理を並列処理する際には逐次実行版で繰り. 逐次的な実行が低速になる.そこで,GPU に搭載されて. 返し処理となっているような箇所に対して適用する.本研. いるシェアードメモリを用いることによりこれらの処理を. 究においてもループ処理の並列化をベースとして各関数の. 並列化し,高速化を目指す.. 並列化の方針を決定する.. また,GPU 上ではいくつかのメモリ構造を用途に応じて. ホログラム計算においては,オブジェクトデータの各頂. 利用することができる.その中で,GPU 上においてリー. 点に対して処理を行う箇所および出力画像の各ピクセルに. ドは高速に行えるがライトは不可であるという特性を持つ. 対して処理を行う箇所が分割可能なループとなっている.. メモリであるコンスタントメモリ,およびサイズは小さい. そのため,これらの繰り返しを分割してそれぞれに論理ス. が同一ブロック内のスレッドで共有できてかつリードライ. レッドを割り当てて並列実行する.具体的には,正規化お. ト共に高速なシェアードメモリを利用してデータの一部を. よび物体派の式計算関数はポイントベースな処理となって. 管理することで高速化を目指す.具体的には,アプリケー. おり,ループも各物体点を順に処理する構造となっている. ション上で利用する定数値をコンスタントメモリ上で管理. ため,1 点ごとの処理に分割して各スレッドに分配する.. することによるメモリアクセスの高速化を目指す.また,. また,畳み込みと二値化の関数はピクセル画像配列に対す. シェアードメモリを用いて計算途中の中間値管理を行うこ. る処理となっているため,座標 1 点ごと,すなわち配列 1. とで高速化する.. 要素ごとの処理に分割して各スレッドに分配する.. 分岐命令削減による Warp Divergence 回数の削減も実施. データ転送のタイミングについては,視差画像 1 枚分の. する.Warp Divergency とは GPU アーキテクチャに依存. 計算が完了する度に逐次転送する方針とする理由として,. する,並列実行中において分岐命令時に最も時間のかかる. 高速化を進めることにより各機能の実行時間が大きく変動. スレッドが終了するまで他スレッドも停止する特性であり,. する事が考えられるため,実行時間が収束した段階で時間. このオーバヘッドを発生させないために分岐命令自体を削. 比などを比較して考える必要があるためである.また,上. 減する手法である.分岐命令には条件文だけでなくループ. 述の通りまずは I/O については着手しないため,実際に. 処理も含まれる.. DMD へ転送してリアルタイムに表示することを考える際 に再度検討を行う.. 5.6 一般的な高速化手法の適用 これまでは GPU のアーキテクチャを活用する高速化手. 5.5 GPU アーキテクチャを活用した高速化手法. 法を主に設計してきたが,本アプリケーションに限らず,. GPU 上において,シェアードメモリやコンスタントメ. 様々なアプリケーションで一般的に適用されている高速化. モリといった様々に搭載されているメモリを活用したり,. 手法についても適用することで高速化を目指す.本研究に. 各コアの稼働率を上げるといったチューニングを行うこと. おいて検討する一般的な高速化手法を表 4 に示す.. で高速化を目指す.. これらの高速化手法は必ずしも GPU 上での動作に適し. 正規化関数内において,正規化を行うためにオブジェク. ているとは限らないため,適用する手法によっては GPU. トデータの座標軸ごとの最大値,最小値を求める必要が. アーキテクチャや本アプリケーションの性能を発揮できず. ある.最大値や最小値を求めるには,通常はループ処理に. に処理が高速とならない場合もあり得る.そのため,次章. よってすべての値を比較して求める.しかし,このループ. にてそれぞれの高速化手法を実装した後で予備評価を行い,. は繰り返しごとの結果が依存関係にあるため単純な分割に. その結果を基に実際に適用する高速化手法を決定する.. c 2018 Information Processing Society of Japan ⃝. 5.

(6) Vol.2018-HPC-163 No.20 2018/3/2. 情報処理学会研究報告 IPSJ SIG Technical Report. 表 4: 本研究で検討する一般的な高速化手法 テーブル化. 三角関数のテーブル化. 組み込み関数の利用. の削減を目指す. 本アプリケーションにおいては,視域ごとのループ一回. Sinc 関数のテーブル化. 分を一通り計算してから画像全体を転送するため,計算量. 倍精度浮動小数点数型組み込み関数の利用. が多く転送は一度だけである.そのため,単純に視差一枚. 単精度浮動小数点数型組み込み関数の利用. 毎の計算全体とその転送を同時に実行させる.. 出力画像の転送サイズ. 小サイズの型の使用. の削減. 転送データのビットコンパクション. オーバラップする際には,生成画像領域のダブルバッ. メモリ初期化の最適化. 代入以外の方法によるメモリ初期化. ファ方式を用いる.図 6 に示すとおり,計算を行う領域と. 書き換えた箇所のみ初期化を行う方式の利用. 転送を行う領域をずらすことにより,計算が完了した領域. その他. 座標情報の Z 軸方向でのソートによる高速化. 5.7 マルチ GPU を用いた並列化 上記の手法により高速化を行ったアプリケーションを, さらに複数の GPU を用いるマルチ GPU にて並列実行す. を適切に転送することが可能となる.その際,それぞれの 計算処理と転送処理は 1 回ごとに同期をとることで,処理 時間の差により発生する誤差を解消し適切な領域を選択で きるようにする.. ることでさらなる高速化を行う.その際,視差画像をマル チ GPU で並列生成する方式を取る.. Stream1. 像 378 枚を複数 GPU で並列に生成する.図 5 に示すとお. 書込領域 転送領域. り,入力データとなる各座標情報を各 GPU へ分配し,378. Stream2. 本方式では,1 スキャンのホログラムを構成する視差画. 枚を GPU 枚数で等分してそれぞれ分担した上で正規化,. 計算処理. 計算処理. A. BABABABA…AB ABABABAB…BA. 転送処理. B. 転送処理. 図 6: ダブルバッファを用いた計算と転送のタイミング. 物体波の式計算,畳み込み,二値化と順に処理を行いそれ ぞれ画像を出力する.それぞれの視差画像は互いに独立し ており計算の順序により結果が変わらないため,この方式 による並列化が可能となっている.ここで,正規化は最初. 6. 実装と評価 6.1 実装. の画像を生成する前に 1 回実行するのみであるが,5.1 節. 本研究では,物体波計算アプリケーションを NVIDIA. で示した通り正規化関数の実行時間は高速化前から全体の. 社製の GPU 上へ CUDA を用いて実装する.CUDA では. 1.87 % 程度と小さいため,予め正規化した値を転送するの. NVIDIA 社製の GPU に最適化されたコンパイラやライブ. ではなく各 GPU 上で個別に実行する方針とする.. ラリが提供されており,実装の際もサードパーティ製品よ. 䍴埉䝠㖥 (俙⡑) ⻄(16┪‫ך‬㸐䗎‫׾׌‬镄䈼‫ס‬ 氺⦐؅气䧯. りも詳細に記述できることが特長である.CUDA はいくつ かのプログラミング言語に対応しているが,本研究におい ては言語 C の CUDA 実装である CUDA C を用いて実装 する.本研究における開発環境の詳細を表 5 に示す. 表 5: 開発環境. 婞锺ⵊ 朮✄峒‫ס‬ 䑑阛砯 沑‫ײ‬ꁎ‫ײ‬ ◝⡑ⵊ. OS CPU メモリサイズ. GPU GPU プロセッサ. 128GB NVIDIA GeForce GTX1080 Ti 3584 cores @ 1.58GHz. GPU メモリサイズ. 12GB. GPGPU ライブラリ. CUDA Version 8.0. コンパイラ. 出⼒画像. CentOS 6.7 Intel(R) Xeon(R) CPU E5-2650 v4 2.20GHz. nvcc release 8.0, V8.0.61. 出⼒画像. 出⼒画像 出⼒画像 図 5: 視差画像分担バージョンの処理の流れ. 6.2 一般的な高速化手法の予備評価 本評価を実施する前に,一般的な高速化手法について予 備評価を行い,効果がある手法を選択して適用する. シングル GPU の環境において,他の高速化は計算と転 送のオーバラップ手法以外はすべて適用した状態で計測す. 5.8 計算と転送のオーバラップ GPU 上での実行時に,計算処理と転送処理を並行して. る.一般的な高速化手法はすべて適用していない状態のア プリケーションを用いて実行時間を計測し,それぞれの手. 実行することで片側の処理時間を隠蔽することで実行時間. c 2018 Information Processing Society of Japan ⃝. 6.

(7) Vol.2018-HPC-163 No.20 2018/3/2. 情報処理学会研究報告 IPSJ SIG Technical Report. 法を適用した場合の結果と比較することで実行速度向上率 を求める. 表 6 に示す結果より,高速化が見られたのが転送サイズ 削減の両方式のみとなり,特にビットコンパクションを行 う場合が 411%の速度向上が見られた.他の手法において は実行時間がほとんど変わらないか,反対に低速となる処 理も存在した.そのため,本アプリケーションにおいては このビットコンパクション手法のみを適用する方針とする.. 6.3 高速化手法の適用結果 物体波計算アルゴリズムを GPU 上に実装し,高速化手 法を適用したアプリケーションを用いて実行時間を計測す る.また,CPU 上の実装および GPU 上の高速化手法未適. 表 8: 高速化手法の適用結果 アプリケーション. CPU#0. CPU#1. GPU#0. 実行時間全体 [ms]. 11124. 6253. 1004. 計算時間 [ms]. 11124. 6253. 360. 1.00. 1.78. 13.1. 転送時間 [ms]. 644. CPU#0 との実行速度比 GPU#0 との実行速度比 アプリケーション. 1.00 GPU#1. GPU#2. GPUs. 実行時間全体 [ms]. 109. 92.5. 24.4. 計算時間 [ms]. 90.9. 92.5. 24.4. 転送時間 [ms]. 18.4. CPU#0 との実行速度比. 102. 120. 457. GPU#0 との実行速度比. 9.19. 10.9. 41.2. 用のアプリケーションと実行時間を比較する.評価に用い るアプリケーションを表 7 に示す. 表 7: 高速化手法の適用結果比較に用いるアプリケーショ. 4096. ン. 1024. 実行場所. CPU#0. 並列化. 高速化. オーバラップ. 無し. CPU. 有り. CPU#1. CPU. GPU#0. GPU. 有り. 無し. 無し. GPU#1. GPU. 有り. 有り. 無し. GPU#2. GPU. 有り. 有り. 有り. マルチ GPU(4 台). 有り. 有り. 有り. GPUs. 512. 16384. て,高速化手法のうち CPU 上でも実現可能なものについ. 128. ]s [m 256. 64. 64. 16. 間 時 ⾏ 実. 32. 8. 16. ⽐ 度 速 ⾏ 実. 4. 4 1. 比較のために,CPU で動作するアプリケーションに対し. 256. 2 CPU#0. CPU#1. GPU#0. 阛砯免ꪨ[ms] CPU#0との実⾏速度⽐. GPU#1. GPU#2. GPUs. 1. 黨ꃻ免ꪨ[ms] GPU#0との実⾏速度⽐. て適用した.具体的には,一般的な高速化手法のうち関数. 図 7: 高速化手法の適用結果. のテーブル化とメモリ初期化方法の変更,および CPU 特. 比較して約 457 倍,GPU 上での非高速化時と比較しても約. 有の高速化として配列の静的確保によるメモリアクセス速. 41.2 倍の実行速度となり,本研究においてマルチ GPU を. 度の向上を行った.また,GPU 上の非高速化アプリケー. 用いることによる効果が得られていることが確認できた.. ションについては,各関数を高速化せずに GPU カーネル上. マルチ GPU に関するより詳細な評価は後述する 6.5 節に. へ移植し,最も単純な方法で並列化したものとする.計測. て実施する.. する箇所は正規化から最後の転送が完了するまでの I/O を. オーバラップ手法に関しては,本手法を用いることによ. 除いた計算処理で,時間計測には言語 C の clock gettime(). り転送時間が隠蔽され,その分の実行時間が削減されてい. 関数を用いる.それぞれの実行時間は 5 回計測した平均値. ることが確認できた.シングル GPU の結果から,オーバ. を求め,その結果を基に考察を行う.. ラップ手法を適用したことにより計算処理に付加される. 上記の方法により実行時間を計測した結果を表 8,図 7. オーバヘッドが 1.5 ms 程度と小さく,ほとんど計算時間か. に示す.ここで,それぞれのアプリケーション名は表 7 に. ら転送時間を単純に引いた結果に近い実行時間となってい. 準拠する.. た.このことにより,ホログラム計算における計算と転送. 結果より,シングル GPU での実行においては高速化手 法を適用することにより CPU 上での非高速化アプリケー ションと比較して約 120 倍の実行速度となった.また,. のオーバラップ手法は有効であったと言える. この実装により,現状で最も高速な実行時間が約 24.4 ms となり,約 41.1FPS で画像生成を行えていることになる.. GPU 上での非高速化時と比較しても約 10.9 倍の実行速度 を得られたため,本研究において提案した高速化手法が有 効であったと言える. マルチ GPU アプリケーションにおいてはシングル GPU よりさらに実行時間が削減され CPU 上での非高速化時と. c 2018 Information Processing Society of Japan ⃝. 6.4 各高速化手法の実行時間削減への寄与率 本研究にて実装した高速化手法について,各手法の実行 時間削減への寄与率を算出することで最も有効やであった 手法や,反対に効果の得られなかった手法を特定する.. 7.

(8) Vol.2018-HPC-163 No.20 2018/3/2. 情報処理学会研究報告 IPSJ SIG Technical Report. 表 6: 一般的な高速化手法に対する予備評価結果 実行時間 [ms] 一般的な高速化手法適用前. 実行速度比率. 909.0. テーブル化 組み込み関数の利用 出力画像の転送サイズの削減 メモリ初期化の最適化. その他. 三角関数のテーブル化. 581.9. -1.97%. Sinc 関数のテーブル化. 577.7. -1.25%. 倍精度浮動小数点数型組み込み関数の利用. 569.9. 0.09%. 単精度浮動小数点数型組み込み関数の利用. 574.9. -0.76%. 小サイズの型の使用. 212.7. 168%. 転送データのビットコンパクション. 111.7. 411%. cudaMemcpy によるメモリ初期化. 593.4. -3.87%. cudaMemset によるメモリ初期化. 613.1. -6.95%. 書き換えた箇所のみ初期化を行う方式の利用. 579.9. -1.63%. 座標情報の Z 軸方向でのソートによる高速化. 573.1. -0.46%. シングル GPU 上で動作する物体波計算アプリケーショ. 1.2. ンにおいて,本研究にて適用した高速化手法を下記に示す. 4 通りに分類し,すべての高速化手法を適用した状態での 各項目の実行時間削減率を計測する. 分類 (1)GPU 上における入力データ形式を考慮した並 列化に関する高速化手法 分類 (2)GPU のアーキテクチャを活用する高速化手法. 1. ]s [m. ꪨ免 庿⯸. 0.8. ⮔꿔 ⮔꿔 ⮔꿔 ⮔꿔. (1). 0.6. (2) (3). 0.4. (4). 分類 (3)一般的な高速化手法 分類 (4)計算と転送のオーバラップ. 0.2. 実行時間削減率は,節における GPU#0 と GPU#2 の. 0. 実行時間の差である約 912 ms を 100%とし,各分類の高速 化手法を用いることによる実行時間の削減幅から割合を求 める.ここで,分類 (2) については GPU アーキテクチャ に適用するためのアルゴリズムに係る高速化も含まれてお り,厳密に除いた実行時間を求めることが不可能であるた め,912 ms と他の高速化手法の削減時間との差から算出し たものとする. 上記の方法により計測した上記条件により正規化から最 後の転送が完了するまでの I/O を除いた実行時間を表 9, 図 8 に示す.. ⻄䩘岺‫⯸׾׻מ‬庿免ꪨ‫⻉ס‬阛. 図 8: 各高速化手法による実行時間削減時間 が確認できる.これに関連して,分類 (4) の計算と転送の オーバラップは寄与率は最も低いが,これは転送が高速化 したことにより隠蔽可能な実行時間が縮小されたことが理 由である.. 6.5 マルチ GPU における台数効果の検証 本研究におけるマルチ GPU 環境では,最大で 4 台の. GPU マシンを用いて並列実行することが可能である.そ. 表 9: 各高速化手法による実行時間削減時間および寄与率 分類 (1). 分類 (2). 分類 (3). 分類 (4). 147. 270. 478. 16.8. 16.1%. 29.6%. 52.4%. 1.84%. 削減時間 [ms] 割合. 結果について,表 9 は各分類の高速化手法の実行時間削 減時間及び削減時間全体に対する割合を示したものであ る.図 8 は削減時間全体に対する分類ごとの削減時間を表 したものである。 結果より,分類 (3) の高速化手法が最も寄与率が高く, 次いで分類 (2),分類 (1),分類 (4) という順となった.分 類 (3) について,一般的な高速化手法の中で効果を確認で きたのは転送データのビットコンパクションのみであった ため,割合として転送処理の高速化が最も大きかったこと. c 2018 Information Processing Society of Japan ⃝. こで,GPU の台数を変えて実行時間を計測することによ り,台数を増やすことによる台数効果の検証を行うととも に,それに付随するオーバヘッドを調査する. マルチ GPU アプリケーションについては,視差画像 378 枚を分割する方式を用いる.他の高速化手法についても適 用した状態で,使用する GPU 台数を 1 台,2 台,3 台,4 台と変えてそれぞれ実行時間の計測を行う.ここで,複数 枚用いる GPU はいずれも表 5 で示した NVIDIA GeForce. GTX1080 Ti とする. 上記の方法により実行時間を計測した結果を表 10,図 9 に示す. 結果について,表 10,図 9 ともに使用する GPU 台数ご との実行時間とともに GPU を 1 台のみ用いた場合との実. 8.

(9) Vol.2018-HPC-163 No.20 2018/3/2. 情報処理学会研究報告 IPSJ SIG Technical Report. ハードウェアとの連携機能の検討を行い,実際にリアルタ. 表 10: GPU 台数を変えて実行した実行時間 1台. 2台. 3台. 4台. 実行時間 [ms]. 92.5. 47.1. 31.8. 24.4. 1 台の場合との速度比. 1.00. 1.96. 2.91. 3.80. 100.0. イムにホログラムを生成することによるアニメーションの 投影の実現が挙げられる.. 謝辞 本研究は,セコム財団の支援を受けたものである.. 4.00. 90.0. 3.50. 80.0. 参考文献. 3.00. ]s [m. 70.0 2.50. 間時 ⾏実. 60.0 50.0. 2.00. 40.0. 1.50. ⽐度 速. [1]. 30.0 1.00 20.0. [2]. 0.50. 10.0 0.0 1. ⺫. 2. ⺫. 実⾏時間 [ms]. ⺫ ⺫ 1台の場合との速度⽐ 3. 0.00. 4. 図 9: GPU 台数を変えて実行した実行時間. [3]. 行速度比と掲載している. 結果より,台数に伴って実行速度が向上していることが 確認でき,GPU 台数についても並列性を高めることによ. [4]. る有効性が確認できる.また,台数効果は使用する GPU 台数によりそれぞれ 2 倍,3 倍,4 倍となるのが理論値で あるのに対して,実測値として約 1.96 倍,約 2.91 倍,約. 3.80 倍という結果が得られたため,GPU 台数増加に伴う. [5]. Yasuhiro Takaki and Mitsuki Nakaoka. Scalable screensize enlargement by multi-channel viewing-zone scanning holography. Opt. Express, Vol. 24, No. 16, pp. 18772– 18781, Aug 2016. Tomoyoshi Shimobaba, Tomoyoshi Ito, Nobuyuki Masuda, Yasuyuki Ichihashi, and Naoki Takada. Fast calculation of computer-generated-hologram on amd hd5000 series gpu and opencl. Opt. Express, Vol. 18, No. 10, pp. 9955–9960, May 2010. Koki Murano, Tomoyoshi Shimobaba, Atsushi Sugiyama, Naoki Takada, Takashi Kakue, Minoru Oikawa, and Tomoyoshi Ito. Fast computation of computer-generated hologram using xeon phi coprocessor. Computer Physics Communications, Vol. 185, No. 10, pp. 2742–2757, 2014. Yoon-Hyuk Lee, Young-Ho Seo, Ji-Sang Yoo, and DongWook Kim. High-performance computer-generated hologram by optimized implementation of parallel gpgpus. J. Opt. Soc. Korea, Vol. 18, No. 6, pp. 698–705, Dec 2014. D´enes G´abor. A new microscopic principle. Nature, Vol. 161, No. 4098, pp. 777–778, 1948.. 極端な性能低下は見られなかった.このことにより,本手 法によるマルチ GPU 化に際して付加されるオーバヘッド が少ないことが確認できた.そのため,ホログラム計算に おいては視差画像を各 GPU へ分配して並列化する手法が 有効であると結論付けることができる.. 7. まとめと今後の課題 本研究では,水平走査型ホログラフィにおける物体波計 算アプリケーションにおいて GPU 上における入力データ 形式を考慮した並列化に関する高速化,GPU のアーキテク チャを活用する高速化,一般的な高速化手法の適用,マル チ GPU および計算と転送のオーバラップという方針で高 速化手法の設計を行った.物体波計算アプリケーションお よびこれらの高速化手法を GPU 上へ実装し,CPU 上での 非高速化アプリケーションと実行速度の比較を行ったとこ ろ,シングル GPU での実行時に約 120 倍,マルチ GPU で の実行時に約 460 倍の高速化を実現した.シングル GPU での非高速化時と比較してもマルチ GPU の場合で約 41.2 倍の高速化を達成し,現状では転送も含めて約 41.1FPS で リアルタイムにホログラム生成を実現した.また,高速化 手法ごとの実行時間削減への寄与率やマルチ GPU での台 数効果の検証により,GPU 上における物体波計算アプリ ケーションの実行特性を明らかにした. 今後の課題として,さらなる高速化や I/O 処理を含めた. c 2018 Information Processing Society of Japan ⃝. 9.

(10)

表 4: 本研究で検討する一般的な高速化手法 テーブル化 三角関数のテーブル化 Sinc 関数のテーブル化 組み込み関数の利用 倍精度浮動小数点数型組み込み関数の利用 単精度浮動小数点数型組み込み関数の利用 出力画像の転送サイズ 小サイズの型の使用 の削減 転送データのビットコンパクション メモリ初期化の最適化 代入以外の方法によるメモリ初期化 書き換えた箇所のみ初期化を行う方式の利用 その他 座標情報の Z 軸方向でのソートによる高速化 5.7 マルチ GPU を用いた並列化 上記の手法により高速化を行っ
表 6: 一般的な高速化手法に対する予備評価結果 実行時間 [ms] 実行速度比率 一般的な高速化手法適用前 909.0 テーブル化 三角関数のテーブル化 581.9 -1.97% Sinc 関数のテーブル化 577.7 -1.25% 組み込み関数の利用 倍精度浮動小数点数型組み込み関数の利用 569.9 0.09% 単精度浮動小数点数型組み込み関数の利用 574.9 -0.76% 出力画像の転送サイズの削減 小サイズの型の使用 212.7 168% 転送データのビットコンパクション 111.7 411%
表 10: GPU 台数を変えて実行した実行時間 1 台 2 台 3 台 4 台 実行時間 [ms] 92.5 47.1 31.8 24.4 1 台の場合との速度比 1.00 1.96 2.91 3.80 0.000.501.001.502.002.503.003.504.000.010.020.030.040.050.060.070.080.090.0100.0 1⺫ 2⺫ 3⺫ 4⺫ 速度⽐実⾏時間[ms] 実⾏時間 [ms] 1 台の場合との速度⽐ 図 9: GPU 台数を変えて実行した実行時間 行速

参照

関連したドキュメント

また、2020 年度第 3 次補正予算に係るものの一部が 2022 年度に出来高として実現すると想定したほ

たRCTにおいても,コントロールと比較してク

タップします。 6通知設定が「ON」になっ ているのを確認して「た めしに実行する」ボタン をタップします。.

本稿で取り上げる関西社会経済研究所の自治 体評価では、 以上のような観点を踏まえて評価 を試みている。 関西社会経済研究所は、 年

この設備によって、常時監視を 1~3 号機の全てに対して実施する計画である。連続監

ヘッジ手段のキャッシュ・フロー変動の累計を半期

5 ケースの実験結果を比較すると,落下高さの低い段

高層ビルにおいて、ビルの屋上に生活用水 のためのタンクを設置し、タンクに水を貯