XPUの評価環境ではホストCPUにXeon E5-2670を使い、XPUはVU9P FPGAで作成している。XPUには600MHzクロックで動作する小規模コアを256個とディープラーニング用のSDA-IIと呼ぶカスタムロジックを作っている。

そして、FPGAからはPCIE 3.0が16レーン出ており、また、DDR4 2400メモリが4チャネル接続されている。

XPUの性能評価のホストにはXeon E5-2670 CPUを使い、CPUとの性能比較にもこのCPUを使っている

XPUの性能評価であるが、次の5つのケースで評価を行った。ケース1は、次の図に示す1~100までの数字の合計の計算である。この計算はXPU 1コアを使って約300サイクルで実行できた。Xeon CPUで実行した場合は約310サイクルであり、このような簡単なコードでは、CPUとFPGAのパイプライン効率はほぼ同等である。

なお、サイクル数はほぼ同じであるが、FPGAは600MHzクロック、Xeonは2.6GHzクロックであるので、実時間ではXeonの方が4倍程度速い。

1~100の数字の合計の計算は、ホストCPUでは約310サイクル。一方、XPU 1コアでの計算は約300サイクルでXPUのパイプライン効率はx86 CPUと同等

評価のケース2はニューラルネットの計算では良く使われるSoftmaxで、CPUでは20.44ms、XPU 1コアでは約20.5msで、これは同等の結果である。

ケース3はレギュラーなメモリアクセスを行うSliceで、CPUでは3.78msに対して、XPU 1コアで約1.756msで、XPUの方が2倍以上速い。

ということで、計算量が多い、レギュラーなメモリアクセスの場合は、XPUはx86コアと同等な効率を持っているということができる。

ケース2のSoftmaxとケース3のSliceの性能はほぼ同等

次のケース4はコンピュータビジョンの処理のカーネルで、100kピクセルの処理を行っている。この処理は、CPUでは18msで終わったが、XPU 1コアでは約720ms掛かった。このカーネルはランダムなメモリアクセスを行っており、それが性能の制約になっている。このケースの性能を上げるにはXPUのメモリアクセスのやり方を改善する必要がある。

ケース4はコンピュータビジョンのカーネルで100kピクセルのデータを処理している。メモリアクセスがランダムであり、XPUではアクセスが遅く性能制約になっている

ケース5もコンピュータビジョン処理のカーネルであるが、こちらはルールベースの処理で、パラメータの値で処理の流れが細分化されている。このケースはCPUでは5Kサイクル、XPU 1コアでは4.4Kサイクルで、ルールベースの処理の効率はほぼ同等と結論づけている。ただし、この処理も、実時間ではクロックの高いCPUの方が速い。

ケース5はパラメータの値で処理が変わるルールベースの処理である。サイクル数はCPUとXPUコアの性能はほぼ同等である

次の図はXPUのスケーラビリティを測定した結果で、ケース2のSoftmaxはXPU 8コアを使うと1コアの5.82倍の性能、ケース3のSliceでは4コアで1コアの2.25倍。ケース5ではタスク間の同期を行わない場合は、256コアを使うと1コアの64倍の性能という結果である。これは8コアXoenの8倍の性能である。また、Xeonの消費電力は80Wに対してFPGAは25Wであり、性能を加味するとFPGAの電力効率はXeonの25倍になる。

結論として、タスク間の同期を必要とする場合の性能は改善の余地がある(同期を行う場合の性能は示されていない)。コア間の同期用のネットワークのようなものは持っていないのではないかと思われる。一方、同期を必要としない場合は、コア数に比例して性能が向上する。

XPUコア数に対するスケーラビリティ。簡単な処理では、XeonコアでもXPUコアでも性能は大差ない。しかし、タスクの同期を必要とする場合は、XPUは遅いようである

全体の結論としては、XPUはソフトウェアプログラマブルで柔軟性があり、広範なアプリケーションに適用できる。それに加えて、処理に合わせて再構成したカスタムロジックが使えるので高い実行効率も得られる。

Baiduでは、すでにXPUを自動運転やクラウドアプリにも使っており、性能を低下させることなく広範なアプリケーションに適用できることを実証しているという。

Baiduは自動運転やクラウドアプリにもXPUを使っており、XPUは性能の低下を引き起こすことなく、広範なアプリに使えることを実証している

BaiduはMicrosoftなどと並んで、すでにFPGAベースのアクセラレータを実用に使っており、その実用性を実証している。AmazonのF1インスタンスのように、自分のところでFPGAをつけないでもクラウドで使える環境も出てきており、FPGAの利用は、さらに広がっていくと思われる。