GPU サーバのベンチマークと外乱によって自己組織化するセルオートマトンの実装
岩瀬 雄祐 1) , 山田 一成 1) , 大島 聡史 2) , 片桐 孝洋 2)1) 名古屋大学 情報連携統括本部 情報推進部 情報基盤課
2) 名古屋大学 情報基盤センター 大規模計算支援環境研究部門
iwase@nagoya-u.jp, {a49984a, ohshima, katagiri}@cc.nagoya-u.ac.jp

A Benchmark of GPU Server and The Implementation of
Cellular Automata that Exhibit Self-Organizing Properties
Induced by Disturbance
Yusuke Iwase1) , Kazunari Yamada1) , Satoshi Ohshima2) , Takahiro Katagiri2)
1) Information and Communications Technology Services Infrastructure Division, Nagoya University
2) High Performance Computing Division, Information Technology Center, Nagoya University

概要
名古屋大学情報基盤センターで 2018 年度に導入された GPU サーバのベンチマークを行った．NVIDA 社のCUDA Toolkit に付属する N 体シミュレーションプログラムを用いて GPU サーバの演算性能を測定し，GPU を用いることで CPU 単体よりも大幅な高速化が見込めることが分かった．また，汎用計算に特化した GPU の処理性能と広大なメモリ空間を生かし，非同期セルオートマトンの 1 つである，外乱によって自己組織化するセルオートマトンの実装を紹介する．

行い，GPU サーバの利用例として，外乱によって自1 はじめに己組織化するセルオートマトンの実装を紹介する．

名 古 屋 大 学 情 報 基 盤 セ ン タ ー で は ，2018 年 度に GPU サーバ「Hewlett Packard Enterprise(HPE)

2 GPU サーバについて

Apollo sx40」(以下 SX40) を導入 し，2019 年度にGPU サーバ「SX40」のスペックを表 1 に示す [7]．

GPU(Graphics Processing Unit) を利用した計算処

CPU として Intel Xeon Gold 5122（3.6GHz）を 2 ユ

理 で あ る GPGPU(General-purpose computing on

ニット，ベースメモリを 384GB 搭載している．さらgraphics processing units) サービスの試験運用を開に GPU として NVIDIA Tesla V100 SXM2 を 4 ユ始した [1]．GPGPU[2] は GPU の演算資源を汎用のニット搭載している．各 GPU は NVLINK[8] で相互計算に応用する技術のことで，GPU の高い演算性能接続することで高速な通信が可能で，マルチ GPU 動がさまざまな分野で活用されている．

作時のオーバーヘッドを低減している．

GPGPU の一例としてセルオートマトンの実装が挙げられる．セルオートマトンは空間を格子点で分割し，各点に有限オートマトンであるセルを置くことで3 GPU サーバのベンチマーク
3.1

概要構成される抽象システムである [3]．局所演算が中心

GPU サ ー バ の ベ ン チ マ ー ク に は NVIDA 社 のとなるセルオートマトンと GPU の親和性が高いこと

CUDA Toolkit[9] に付属する N 体シミュレーショ

から，セルオートマトンの 1 つであるライフゲーム [4]ン (nbody) プログラム [10] を用いる．このプログラにおいて，OpenGL のピクセルシェーダによる実装

ムは N 個の粒子からなる重力多体系の運動方程式を解[5] や CUDA による実装 [6] 等，GPU を用いた実装がくもので，マルチ GPU でスケールアウトすることが幅広く行われている．

容易なように作成されている．GPU サーバには 4 ユ

本稿では，GPU サーバ「SX40」のベンチマークを392

ニットの GPU が搭載されているため，CPU の場合，

表 1 GPU サーバ「SX40」のスペック

プロセッサ

2x Intel Xeon Gold 5122（3.6GHz，4 コア，105W TDP）

メモリ

384GB（12x 2Rx4 DDR4-2666 32GB）

ディスク

2x 2.5” 6G SATA 480GB SSD（RAID1）

ネットワーク

Dual 10GBase-T LAN ports via Intel X550

HW

GPU

4x NVIDIA Tesla V100 SXM2（16GB，NVLink 対応，300W TDP）

OS

Red Hat Enterprise Linux 7.5 (nbody プログラム検証時)，
Red Hat Enterprise Linux 7.7 (セルオートマトン検証時)

NVIDA ドライバ

SW

NVIDA CUDA Toolkit

396.26 (nbody プログラム検証時)，418.87 (セルオートマトン検証時)
CUDA 9.2 (nbody プログラム検証時)，
CUDA 10.1 (セルオートマトン検証時)

シングル GPU の場合，ならびにマルチ GPU の場合についてベンチマークを行って GPU サーバの性能を測定した．

nbody プログラムのパラメータとして表 2 を用いた．数値精度として単精度と倍精度の 2 種類を設
定し，粒子数を 512 個から 2 倍ずつ増やしていき16,777,216 個まで増やした．GPU 数を 1∼4 ユニットに変えて測定を行った．また，比較対象として 1 コアの CPU による測定を行った．CPU による測定は粒子数が 131,072 個で実行時間が 1 時間を超えるように

図 1 CPU によるベンチマーク (実行時間)なったため，それより多い粒子数の検証を行っていな
い．各パラメータについて 10 回の試行を行った．
表2

パラメータ

GPU 数
精度
粒子数

ベンチマークに用いたパラメータ

設定値

1，2，3，432bit(単精度)，64bit(倍精度)
512，1024，2048，4096，8192，16384，32768，65536，131072，262144，524288，1048576，
図 2 CPU によるベンチマーク (演算性能)

2097152，4194304，8388608，16777216

かった．今回用いた GPU サーバは 4 コアの CPU が2 ユニット搭載されているため，GPU サーバにおけ3.2 CPU によるベンチマークシングルコアにおける CPU によるベンチマークにる CPU の演算性能の合計は単精度で (0.93 × 8 ≈) 約おける実行時間を図 1，演算性能を図 2 に示す．各測定

7.4GFLOPS，倍精度で (1.4 × 8 ≈) 約 11GFLOPS と値は nbody プログラムの実行結果から取得し，10 回の見積もられる．

試行の平均として求めている．CPU の実行時間は単3.3

GPU によるベンチマーク精度と倍精度で違いはなく，粒子数に応じて単調に増GPU によるベンチマークの実行時間を図 3 (単精度加し，粒子数が 131,072 個の時に 1 時間程度となった．の場合)，図 5 (倍精度の場合) に示す．CPU と比較しCPU の演算性能は単精度で約 0.93GFLOPS，倍精度て，GPU の実行時間は単精度よりも倍精度の方が長くで約 1.4GFLOPS となり，倍精度の方が演算性能が高なり，GPU が 1 ユニットの場合，粒子数が 16,777,216393

図 3 GPU によるベンチマーク (単精度，実行時間)

図 5 GPU によるベンチマーク (倍精度，実行時間)

図 4 GPU によるベンチマーク (単精度，演算性能)

図 6 GPU によるベンチマーク (倍精度，演算性能)個の時に，単精度で約 1 時間半，倍精度で約 4 時間程なった．

度となった．使用する GPU を増やすと実行時間は短

3.4

まとめくなるが，GPU が増えるにつれて時短の度合いは緩GPU サ ー バ の CPU 性 能 は 単 精 度 で 約くなった．粒子数が 16,777,216 個において，単精度の7.4GFLOPS，倍 精 度 で 約 11GFLOPS と 見 積 も ら

場合は 4 ユニットで約 30 分程度，1 ユニットと比較しれ る ．そ れ に 対 し て ，GPU 性 能 は 単 精 度 で 約て約 3.8 倍高速となった．また，倍精度の場合，4 ユ

43TFLOPS，倍精度で約 15TFLOPS に達し，CPUニットで約 1 時間半程度，1 ユニットと比較して約 2.6と比べて GPU を使用することで大幅な高速化が見込倍高速となった．

めると考えられる．

同試行における演算性能を図 4 (単精度の場合)，図6 (倍精度の場合) に示す．GPU の演算性能も CPU

4 外乱によって自己組織化するセルオートマトンの実装と比較して単精度の方が演算性能が高かった．粒子数が 16,777,216 個において，GPU が 1 ユニットの場

4.1

概要

合，演算性能は単精度で約 11TFLOPS，倍精度で約外乱によって自己組織化するセルオートマトンは，5.7TFLOPS となった．演算性能は粒子数が多くなる外乱というセルの局所的な状態の改変をきっかけに，ほど GPU 数に応じて単調に増加するようになった．

系の大域的な状態変化を生じるセルオートマトンであ粒子数が最大の場合において，単精度の場合，4 ユニッる [11]．外乱をきっかけに大域的な状態を切り替える

トで約 43TFLOPS となり，1 ユニットと比較して約問題を設定し，その遷移規則を遺伝的アルゴリズムに3.9 倍となった．また，倍精度の場合，4 ユニットで約よって探索した．その結果，外乱の蓄積が一定量を超15TFLOPS となり，1 ユニットと比較して約 2.6 倍とえるとその影響が系全体に広まる自己組織的な性質に

394

4.2

実装方法

外乱によって自己組織化するセルオートマトンは 2次元 3 状態 9 近傍の非同期セルオートマトンである．
遷移規則は自身の状態とその周囲 8 近傍の状態密度によって遷移後のセルの状態を定める等方則 (outer-totalistic rule) をベースとし，セルの状態構成について正順方向の推移性 (状態 0 → 状態 1 → 状態 2) を制約として加えた対称則を用いる．この遷移規則は特定のセルの状態に依存せず，状態 0 の規則に推移性を加えることで他の状態 1 と状態 2 の規則を定めるもの
で，遷移規則の圧縮とサイクリックなセルオートマトンの大域的な状態遷移に寄与する．外乱はセルの状態を正順方向にインクリメントする摂動を用いる．
セルオートマトンは NVIDA 社の CUDA を用いて実装する．メモリ転送，カーネル処理の並列実行は
図7

外界と相互作用するセルオートマトンと人間

cudaSetDevice 命令で実行する GPU を指定することとのインタラクションの創発で可能になる．また，各 GPU から別ユニットへのメモリアクセスは cudaDeviceEnablePeerAccess 命令で

よって，セルの状態数以上の大域的な安定状態を周期宣言後，メモリ転送コマンド (cudaMemcpy 等) にて的に推移する系が得られた．

2 ユニットのメモリを指定することで，NVLink を介セルオートマトンの遷移規則を遺伝的アルゴリズムして GPU 間で直接通信が可能となる．

で探索するためには，セルオートマトンにおいて自己組織的な構造と振舞いを評価・実現するために十分なセル数と状態遷移のステップ数が必要となり，遺伝的アルゴリズムの探索のために十分な個体数，世代数，さらには試行数が必要となり，多くの計算資源が求められる．文献 [11] では，CPU ベースのクラスタ型計算機を用いて，何週間もかけてタスクの設定，パラメータの調整を行って，遷移規則の探索を行っていた．
外乱を人間が加えることによって，セルオートマトンと人間とのインタラクションが創発する [12]．このアートの一例を図 7 に示す．図中のスクリーンにセ

図8

マルチ GPU を用いる時のメモリ構成

ルオートマトンの大域的な状態が表示されている．また，スクリーンの直下に Kinect センサーを置き，鑑セルオートマトンの大域的な状態 (様相) は N × N

賞者等を含めた距離画像を取得し，その距離に応じてのセルで構成する．GPU 上には，セルオートマトンセルオートマトン上で外乱を発生させている．このセの大域的な状態をダブルバッファリング方式で更新す

ルオートマトンは GPU を用いることでスクリーン上るため unsigned char を 2 × (N × N ) 個，3 状態の遷に画素数に近い大量のセルをリアルタイムに状態遷移移規則とそのインデックスとして unsigned int を 98させることが可能となり，鑑賞者の振舞いをきっかけ個 (遷移規則の 45 個を含む) 確保する．また，乱数生にしてセルオートマトンの大域的な状態変化が発生す成のため unsigned int を N × N 個確保する．マルチることで，セルオートマトンと鑑賞者との間にインタGPU を用いる場合，図 8 のように，大域的な状態のラクションのループが生じるものとなった．

ダブルバッファと乱数配列を D ユニットで分割し，各そこで，外乱によって自己組織化するセルオートマ

GPU について，大域的な状態の境界通信のための境トンをマルチ GPU で動作するように再実装し，GPU界バッファに unsigned char を 3 × N 個 (上部境界，サーバ「SX40」においてベンチマークを行った．

下部境界，値交換用のバッファの 3 つ準備)，遷移規則395

とそのインデックス用の配列を確保する．
セルオートマトンの大域的な状態の更新処理の流れを以下に示す．

1. 初期状態の設定（a）遷移規則とそのインデックスを準備（b）大域的な状態をランダムに設定（c）乱数配列の初期値をランダムに設定（d）各初期状態を CPU から GPU へメモリ転送

2. 大域的な状態の更新 (S ステップの繰返し)（a）(外 乱 発 生 時) 大 域 的 な 状 態 を GPU か ら

CPU へメモリ転送し，外乱をパターンとして加えて，CPU から GPU へメモリ転送（b）参照しているセル空間の境界状態を GPU 間でメモリ転送（c）線形合同法で乱数配列の各値を更新（d）各セルについて確率 Pa = 0.2 で遷移規則に
図9より状態遷移

セルオートマトンの大域的な状態（e）(画 面 表 示 時) 大 域 的 な 状 態 を GPU か ら

CPU へメモリ転送してファイル出力し，可視化プログラム*1 にて表示
各初期状態は CPU 上で設定を行い，CPU から GPUへメモリ転送することで定める．大域的な状態の更新は，セル空間の境界状態を GPU 間でメモリ転送した後，各 GPU にてカーネルの中で乱数生成とセルの状態遷移を並列処理する．

4.3 GPU によるベンチマーク
N = 512，D = 4 としたセルオートマトンの大域的な状態の例を図 9 に示す．サンプルとして「NU」の図 10 GPU によるベンチマーク (セルオートマト

文字を象った外乱を左上から右下へ移動させつつ各センの処理速度)

ルについて 5% の確率で加えている．ランダムに設定された初期状態は遷移規則*2 によって同じセルの状態によって構成されるクラスタ構造が生じ，外乱をきっGPU が 1 ユニットにおいて 47.7 杪/ステップ，GPUかけにクラスタ構造の輪郭が変化し，大域的な状態変が 2 ユニットにおいて 12.4 杪/ステップとなり，1 ユ化を生じている．

ニットの 4 倍程度，GPU が 4 ユニットにおいて 6.2使用する GPU の数を変化させて GPU サーバのベンチマークを行った．パラメータとして N = 4096，杪/ステップとなり，1 ユニットの 8 倍程度高速化されている．

8192，16384，32768，D = 1，2，4，S = 16 を用GPU サーバにおいて 4 ユニットの GPU を全て用いた．セルオートマトンの処理速度を図 10 に示す．

いて，セルオートマトンのセル数を増やして実行した

N = 4046 (16,777,216 セル ≃17 百万セル) では，1

ところ，N = 92680 (8,589,582,400 セル ≃86 億セル)杪未満で大域的な状態を 1 ステップ更新している．

を更新できることを確認した．

N = 32768 (1,073,741,824 セル ≃11 億セル) では，4.4

まとめGPU サーバを用いることで，広大なセル空間を高*1 OpenGL にて作成．
*2 文献 [11] にて正順サイクル (ascending cycle) を示した規速に処理できることが分かった．セルオートマトンはセル同士の局所的な通信で大域的な状態が更新される則を用いている．

396

ため，GPU 同士の通信量が少なく，また，通信に必[8] NVIDIA NVLink，https://www.nvidia.com/ja-

要となるバッファのメモリを少なくでき，GPU の増

jp/design-visualization/nvlink-bridges/，

加が系の高速化に直接的に寄与すると考えられる．非2019 年．

同期セルオートマトンの実装には遷移規則，ならびに乱数配列が必要となったが，同期セルオートマトンと[9] CUDA Toolkit，https://developer.nvidia.com/
cuda-toolkit，2019 年．

なるライフゲーム等では，よりシンプルな実装が可能[10] Lars Nyland, Mark Harris and Jan Prins,

であり，より大規模な系の実行が可能になると考えら(Chapter 31) Fast N-Body Simulation withれる．

CUDA, GPU Games 3, Addison-Wesley Professional, pp. 677-695, 2007．

5 おわりに[11] Y. Iwase，R. Suzuki and T. Arita，Evolution-

名古屋大学情報基盤センターで 2018 年度に導入

ary Search for Cellular Automata with Self-

された GPU サーバ「SX40」のベンチマークを行い，

Organizing Properties toward Controlling De-

CPU と比べて GPU を使用することで大幅な高速化

centralized Pervasive Systems and Its Applica-が見込めることを示した．また，汎用計算に特化した

tions, International Journal of Systems Biology

GPU の処理性能と広大なメモリ空間を生かす例としand Biomedical Technologies，Vol. 3(1)，pp. 1-て，外乱によって自己組織化するセルオートマトンの

19，2015．

実装例を示した．

[12] 岩瀬 雄祐，鈴木 麗璽，有田 隆也，外界と相互汎用計算向けの GPU は，家庭用 GPU に比べて搭作用するセルオートマトンと人間とのインタラ載メモリが多いため，並列演算による高速化と共に，クションの創発，芸術科学会論文誌，Vol. 11(3)，大規模な系の展開に適している．情報基盤センターのpp. 69-78，2012 年．

GPU サーバを活用した研究成果を期待したい．

参考文献[1] GPU サーバの試験運用について，http://www.
icts.nagoya-u.ac.jp/ja/sc/news/maintenance/gpu.html，名古屋大学情報基盤センター，2019 年．
[2] J. D. Owens，D. Luebke，N. Govindaraju，M.
Harris，J. Krüger，A. E. Lefohn and T. J. Purcell，A Survey of General-Purpose Computation
on Graphics Hardware，In Eurographics 2005，
State of the Art Reports，pp. 21-51，2005．
[3] S. Wolfram，A New Kind of Science, WolframMedia Inc.， 2002．
[4] E. R. Berlekamp, J. H. Conway, R. K. Guy,
Winning Ways for Your MathematicalPlays,
Academic Press, Vol. 2，1982.
[5] http://download.nvidia.com/developer/SDK/
Individual Samples/samples.html，2003 年．
[6] T. Fujita, D. Nishikori, K. Nakano and Y.
Ito，Eﬃcient GPU Implementations for theConway’s Game of Life，2015 Third International Symposium on Computing and Networking (CANDAR)，pp. 11-20，2015．
[7] GPU サーバ（HPE Apollo sx40）利用者マニュアル，名古屋大学情報基盤センター，2019 年．

397