これに対してScott Beamerなどは、未到達の頂点からスタートして、1つの辺ですでに到達している頂点に繋がっている頂点を、次の到達頂点リストに加えるという逆方向のサーチを考えた。未到達の頂点が少なくなった状況では、この逆方向のサーチの方が効率が良いので、未到達の頂点数が少なくなると、順方向から逆方向サーチに切り替える。

このBeamerのアルゴリズムを使うと、処理する辺の数を最大1/10に減らすことができる。しかし、TEPS性能の計算は実際に処理した辺の数ではなく、頂点数の16倍という全ての辺の数を使って計算されるので、TEPS性能を上げることができる。

未到達の頂点数が少なくなると、未到達の頂点からすでに到達した頂点に1つの辺で繋がるかどうかを調べる逆方向サーチに切り替えるBeamerのアルゴリズムを使うと、最大10倍の性能が得られる

また、通信量を減らすため、通信を宛先ノードごとに送るデータまとめておき、一括して送るとか、他ノードの頂点のラベルを圧縮して通信データ量を減らすなどの最適化が行われる。

並列BFSは、次の図のように、グラフデータを各ノードに与えるサブグラフに分割し、それを各ノードで並列に処理して、到達頂点を見つけ、元のグラフデータを更新するというループになる。

ただし、グラフのデータは多数のノードに分散して格納されているので、Batch Analysisで見つけた新しい到達ノードの更新は、あちこちのノードに対して行われることになり、インタコネクトや、メモリアクセスの性能がネックになる。

並列BFS処理はグラフデータから、ノードごとのサブグラフを取り出し、並列処理してグラフデータを更新するというループとなる

BFSの性能の分析に当たって、システムのアーキテクチャをインタコネクトとコアのアーキテクチャの組み合わせの2次元の分析を行っている。インタコネクトはEthernetなどのコモディティのネットワーク(L)、カスタムなどの高性能ネットワーク(T)、シェアードメモリ(S)、分散型シェアードメモリ(D)の4分類。コアアーキテクチャはH、L、B、X、V、O、G、Mの8つに分類している。そして、散布図では点の色を変えているのであるが、残念ながらWeb記事では判別が難しい。

ノード間を繋ぐインタコネクトを4種、コアのアーキテクチャを8種に分類し、それらの組み合わせを点の色で表現している

次の図はGraph500のデータを時系列で表わしたもので、トップのTEPS性能は2012年末までは順調に伸びているが、それ以降の伸びは比較的少ない状態である。

トップ性能に注目すると、2012年末までは、急速に性能が伸びているが、その後は、伸びはかなりゆっくりになっている。右に凡例があり点の色でアーキテクチャを表現しているが、残念ながら、読み取るのは難しい

次の図は、システムの総コア数を横軸にとったグラフで、1000コア以下と1万コア以上の領域の性能カーブは連続していない。1000コア以下のシステムは1本のラックに収まるのに対して、1万コア以上のシステムは複数のラックが必要となり、ノード間の通信がネックになることから、このような傾向になると考えられる。

コア数を横軸にとったグラフ。1000コア以下と10000コア以上の線が不連続になっている。これは1ラックか複数ラックかで通信オーバヘッドが違うことが原因

そして、共通メモリの空間(ドメイン)の数を横軸にとり、縦軸をドメインあたりの性能にすると、1ドメインのシステムが圧倒的に効率が良く、複数ドメインになると2桁近く性能が下がる。これはCPUチップが1個の場合は通信オーバヘッドが小さいのに対して、複数ドメイン間の通信オーバヘッドが大きいことが効いている。また、500ドメインあたりにも不連続があるように見えるが、これはマルチラックの切れ目かと思われる。

横軸にドメイン数をとり、縦軸をドメインあたりの性能としたグラフ。1ドメインが圧倒的に性能が高く、複数ドメインになると2桁近く性能が下がる。また、500ドメインあたりにも不連続がある

次のグラフは、頂点数を横軸にとったグラフである。頂点数が増加するにつれて、106頂点までは性能が減少し、それ以上の頂点数では性能が増加しているが1億~10億頂点で不連続なへこみも見られる。

頂点数を横軸にとったグラフ。100万頂点以上では、頂点数が増えるにつれてTEPS性能が上がるが、1億~10億頂点で不連続が見られる

結論であるが、BFSの性能には、1ドメイン、1ラック、複数ラックの3つの性能領域がある。1ドメインはコアあたりの性能は圧倒的に高い。それが複数ドメインになると大幅に性能が低下する。しかし、1ラックの領域ではコア数に比例して問題サイズを増やすウイークスケールはうまくいく。

マルチラックになるところで、また、性能低下が起こる。しかし、100万コアまで性能はスケールする。

TEPS性能はメモリバンド幅と高い相関を持っている。しかし、分散メモリよりもシェアードメモリの方がメモリバンド幅を有効に使えている。

低並列の場合、どのようになるかは興味深いところで、このような報告が出てきて欲しいと述べてKogge教授は、分析の発表を締めくくった。