平成 24 年度 9 月 25 日

仮想 GPU による動的負荷分散ツールの開発
電気通信大学

情報工学科

0911096 増澤

1.

成見研究室

沙紀

研究背景
近年、高度な並列計算を得意とする GPU を、グラフィックス描画という本来の目的ではなく、より一般的な計算用途に使用しようという GPGPU の利用が広がりを見せている。
また、ネットワークにより接続された PC の GPU をあたかもローカルに装着されているかのように利用することができる仮想 GPU という技術により、数十台の GPU を１台

図 1 分子シミュレーションの PC で使用することができるようになった。このため、
GPGPU と GPU の仮想化を利用することで、短い時間の中列計算を行うことが可能であるが、自動で負荷分散を行うで膨大な計算を行わなければならないようなシミュレーシことは不可能である。本研究では仮想 GPU での自動的負荷ョンにおいてもリアルタイムで結果を表示させることが可分散を行うツールを開発する。このツールにより、簡単に効能となった。

率の良い並列計算が今後可能となると考えられる。

しかし、複数の GPU で計算を行う場合、各 GPU での計3.

算量が均等ではないことにより、時間がそれほど短くならな

本研究では分子シミュレーションを活用した動的負荷分いことがある。

散ツールの開発を行う。

また、仮想 GPU では１つの GPU に複数ユーザーからのアクセスが可能であため、１つの GPU で複数の計算プロセ

研究概要

目標とする仕様は以下の通りである。
i.

仮想 GPU の利用

スが実行されることにより負荷が均一にならない場合も考GPU を仮想化することで複数台の GPU の利用を可能えられる。とする。

そこで本研究では、使用するユーザーが意識をすることなii.

分子シミュレーションの空間分割

く、システムが各 GPU での負荷を計測し、その負荷に合わ各 GPU の負荷を変えるため、使用する GPU の台数にせて自動的に計算を分散するようなツールの開発を目的と合わせて空間分割を行い、それぞれの区画に別々のする。

GPU を割り当て計算させる。

2.

既存研究

iii.

各 GPU における負荷の計測
使用している全 GPU に簡単な計算をさせ、その計算時既存研究として、MPI による動的負荷分散システムの開間により、各 GPU の負荷を測定する。

発がある[1]。ハードウェアのリソースを仮想化し、複数のOS を動作させることが可能な仮想計算機 Xen を使用して開iv.

負荷の分散発をされている。この研究では動的負荷分散を行うことがで

各 GPU の負荷に応じて、負荷の高い GPU での計算のきるが、マッピングの際に、仮想マシン全体を他の PC に移一部を負荷の低い GPU に移動をさせる。

動を行うため、通信量が多くなってしまう。また、MPI プ
ログラムを用いて複数ノードの計算を行う必要があり、プログラムの手間がかかる。
仮想 GPU を用いた計算では、シリアルなプログラムで並4.

使用するソフトウェア
本研究では、GPU仮想化ソフトウェアとして、K&F

Computing Researchの川井らが作成したDS-CUDAを用る[2]。

計算速度 (Gflops)

粒子分割をしたときの計算速度
500450400350300250200150100500

GPU1 台GPU2 台648

図 22165121728409658328196
100027445192
7000

粒子数 ( 個 )DS-CUDAの構造

DS-CUDA とは、ネットワークを介することで、他の PC

図 4 粒子分割をしたときの計算速度の GPU をあたかもローカルに接続された GPU かのように空間分割を行ったときの計算速度

計算速度 (Gflops)みせることができる。DS-CUDA の構造は図 2 のようになる。
DS-CUDA 用のサンプルプログラムである銀河衝突シミュ
レーションを用いて、GPU の数による計算速度の変化を調べると図 3 のようになる。ネットワークで接続されているた

500450400350300250200150100500

空間分割
粒子分割
GPU1 台648512216

め、通信にやや時間がかかるが、8 台の GPU を使用すると172840965832
8196
100027445192
7000

粒子数 ( 個 )計算時間も 8 倍となることがわかる。

図 5 空間分割を行ったときの計算速度

5.

えられる。

進捗状況

6.

今後の課題

i.

空間分割プログラムの改善

現在の進捗状況は以下の通りである。
i.

DS-CUDA のテスト。

ii.

2 台の GPU を用いたプログラムの作成。

本研究では、より大規模な計算を行うことが前提となって

粒子分割いるので、空間分割の処理時間を高速化する必要がある。ま

x 軸で空間分割

た、現在は x 軸での分割となっているが、最低でも x,y の 2

5. 1

2 台の GPU を用いたときの計算速度の変化

GPU を 2 台使用したときの分子シミュレーションの計算次元での分割を目指す。
ii.

速度を測定した。粒子分割は図 4、空間分割は図 5 である。
粒子分割では、複数台 GPU を使用するとホストからデバMake ファイルを書き換えるだけで対応できる。
iii.

各 GPU の負荷の測定
各 GPU に簡単な計算を流して、実行時間を調べることでイスへのデータの転送をするため、その分の時間が少しかかる。そのため、少ない粒子数の計算では 1 台の GPU での計算の方が速いが、粒子数が多くなるにつれ複数台の GPU でDS-CUDA の対応各 GPU の負荷を測定しようと考えている。
iv.

動的分散を行う
ⅲ．で測定した負荷によって、負荷の高い GPU での計算計算を行った方が速くなる。
一方、空間分割では、粒子分割に比べ各 GPU の計算量がを負荷の低い GPU に自動的に移動させる。

均等ではないため若干の速度低下が考えられる。しかし、図7.

5 では 5500 粒子数あたりから速度が急激に低下してしまっ[1] 立薗真樹ている。原因はまだはっきりとはしていないが、おそらく空分散を行う MPI 実行環境』

間の分割に時間がかかってしまっているのではないかと考[2] Atsushi Kawai, Kenji Yasuoka, Kazuyuki Yoshikawa,

参考文献
中田秀基

松岡聡『仮想計算機を用いて負荷and Tetsu Narumi,

サンプルプログラムでの実行時間

Distributed-Shared CUDA : Virtualization of Large-Scale

6000

計算速度 (Gflops)

5000
4000
4k
256k

3000
2000
1000

Programmability

andReliability,

TheFourthInternational Conference on

012345GPU の台数 ( 台 )図 3GPU Systems for

DS-CUDA の構造

678

Future Computational Technologies and Applications,
Nice, France, 2012.