ビッグデータの処理では色々な関連性を分析することが多い。このような関連性は、ノードをエッジで繋いだグラフで表すことができる。次の図のように、WWWのリンクやインタネットの通信網、ソーシャルネットワークのつながりから、細胞の中のたんぱく質の相互作用などもネットワークになっている。

多数のノードとそれらを繋ぐエッジからなるグラフは、色々なところで出てくる。(出典:[http://www.graphanalysis.org/SIAM-PP08/Leskovic.pdf]( http://www.graphanalysis.org/SIAM-PP08/Leskovic.pdf ))

巨大グラフのサーチ性能を競うGraph500

Top500のHPLベンチマークは、主にCPUの浮動小数点演算性能を測るプログラムである。しかし、ビッグデータの処理では、演算性能よりも、大量のデータを格納したメモリのあちこちをランダムにアクセスしたり、インタコネクトで繋がれた多数の計算ノードに分散されて格納されたデータをアクセスしたりという処理が要求され、HPLとは異なるベンチマークが必要になる。このようなビッグデータ処理の性能を測り、ランキングを行うために開発されたのがGraph500である。

Graph500ベンチマークは、多数のノードとそれらの間を結ぶエッジからなるグラフを作り、あるノードからスタートして、そのノードからエッジで繋がっているノードをすべて洗い出し、さらに、それらのノードからエッジで繋がっているすべてのノードを洗い出すというBreadth First Search(BFS)という処理の性能を測定する。

詳細は省略するが、このグラフはランダム性を持つが、現実のグラフと似た性質をもつクロネッカーグラフというグラフで、ノードの数は2のSCALE乗、エッジの数はノード数の16倍となっている。なお、このグラフのエッジは方向性がなく、どちら向きにも辿ることができる。

Graph500に登録されているエントリの中で使われている最も大きなグラフはSCALE=40で、この場合、ノード数は2の40乗(約1兆)個、エッジ数は16兆本となる。なお、世間ではビッグデータという言葉が良く使われるが、100万ノードにも満たないケースもあり、1兆ノードというような本当のビッグデータから見ると、規模が小さいことが多い。

Graph500のノード番号は48ビット、エッジの重みは8ビットであり、各エッジの始点ノード、終点ノードと重みデータを記憶するには13バイトが必要である。これが16兆本あると、エッジリストは、最低でも200TBあまりのデータになる。Graph500では、ランダム化されたノード番号を持つエッジリストだけが与えられ、これからグラフを作成するが、どのようなデータ構造でグラフを表現しても良いし、BFSのアルゴリズムも変更してよいことになっている。

Graph500の性能は「TEPS(Traversed Edge Per Second)」という単位で、本当にTraverseしたエッジ数を数えるのではなく、総エッジ数をBreadth First Searchで全ノードに到達するツリーを作るのに必要な秒単位の処理時間で割ったものと定義されている。

SC13において第7回のGraph500が発表されたのであるが、1位はLLNL(ローレンスリバモア国立研究所)の「Sequoia」、2位はANL(アルゴンヌ国立研究所)の「Mira」、3位はドイツFZJの「JUQEEN」、4位は「京コンピュータ」と10位まで、6月の第6回と変わりない結果であった。

Top10は前回からまったく変動が無い第7回Graph500の結果

また、リストに載っているエントリ数は、第1回の9エントリから順調に増加してきているが、それでも、まだ160で、Graph500とは言いながら、まだまだ500には程遠い状況である。なお、同じシステムでSCALEの異なる複数の測定結果をエントリしているケースもあるので、リストのエントリ数はシステム数とは異なる。

Graph500に結果を登録したシステム数の推移

リストに載ったエントリ数の国別の内訳は、米国が76エントリ47.5%と最多であるが、日本は39エントリ24.4%と他の国を引き離しての2位である。これには、中央大学が19エントリ、東京工業大学(東工大)が10エントリを登録しているのが大きく効いている。

Graph500へのエントリ数の国別の内訳。なぜか、オランダではなく、Amsterdamと書かれている

ビッグデータ処理の電力効率を競うGreen Graph500

そして、Graph500性能を消費電力で割った性能を競うGreen Graph500の第2回のリストが発表された。Green Graph500はSCALEが30以上のビッグデータのカテゴリと、30未満のスモールデータのカテゴリに分けてランキングが行われる。

ビッグデータのリストでは、今回は、東工大のTSUBAME-KFCが6.72MTEPS/Wで、前回1位のJUQEENを超えて1位を獲得した。また、東工大はEBD-RD5885v2システムが4位に入っている。

Green Graph500のビッグデータ部門のリスト。東工大のTSUBAME-KFCが前回1位のJUQEENを超えて1位となった

一方、スモールデータリストは日本の独壇場に近い。1位のGraphCREST-Xperia A SO-04EはこのリストではYuichiro Yasuiという個人名になっているが、安井雄一郎氏は中央大の研究者であり、Green Graph500のサイトでは、このエントリは中央大となっている。そして、この写真に載っている7位までは日本が独占であり、フルリストを見ても20位にカナダ、21位にルクセンブルグのエントリがあるが、1位から19位までは日本のエントリである。

日本のGraphCRESTチームが独占したGreen Graph500のスモールデータ部門のTop 7

ビッグデータ1位のTSUBAME-KFCが6.72MTEPS/Wであるのに対して、スモールデータの1位は153.17MTEPS/Wで、スマホやタブレット向けのCPU 1チップでSCALE=20程度のグラフを処理する方が圧倒的にMTEPS/Wが高い。

次の図は横軸にSCALE、縦軸にMTEPS/Wをとり、登録されたエントリのデータをプロットしたものであるが、シングルノードのシステムの方が、マルチノードのシステムに比べて性能/Wが高い。

SCALEを横軸、MTEPS/Wを縦軸として、Green Graph500の全エントリをプロットした図

シングルノードの場合は、チップ内、あるいは1つのボード上にすべてのプロセサが載り、共通のメモリをアクセスすることができるが、マルチノードの場合はインタコネクト経由で他のノードのメモリへのアクセスが必要となり、性能、消費エネルギー的にオーバヘッドが大きくなるので、このような傾向になることは理解できる。

スマホやタブレット向けのプロセサはスモールデータ部門では高いMTEPS/W性能を持っているが、このようなプロセサを並べてビッグデータを処理しようとしても、ノード間のインタコネクトが必要となり、シングルノードの性能/Wを維持できるわけではない。しかし、スモールデータ部門で5位の中央大のGraphCREST-Mac-miniは、SCALE=24で1600万ノードのグラフを処理しており、パソコン程度のシステムでも相当なことができることを示している。