Ryuz's tech blog

FPGAなどの技術ブログ

最新FPGA の Top500 的な性能はどうなのか?

はじめに

最近久々に FPGA 使う仕事に復帰したので、これまた久々に最新のFPGAの性能を調べてみたいと思います。

過去にも何度かやっている FLOPS の見積もりを、現時点で Xilinx の最高峰の筈の VP1902 (TSMC 7nm )に対してもやってみます。

www.amd.com

はたして Top500 に FPGA が入る日は来るのでしょうか?

VP1902 の浮動小数点演算能力を調べてみる

Versal シリーズは有償の Vivado でないと扱えないようですが、浮動小数点演算コアの性能は下記にありました。

https://download.amd.com/docnav/documents/ip_attachments/floating-point.html#versal

この表をもとに、VP1902 に入るだけ入れたら最大で何個入るかを各コア毎に大雑把にまとめてみました(間違いはあるかもしれません)。

演算 個数 MHz GFLOPS
FP64 FMA 686 531 729
FP32 FMA 3,432 590 4,050
FP16 FMA 6,864 620 8,511
FP64 Mul 3,676 516 1,897
FP32 Mul 13,178 554 7,301
FP16 Mul 46,741 590 27,577
FP64 Add 10,132 575 5,826
FP32 Add 22,989 665 15,288
FP16 Add 42,301 554 23,435
FP64 Div 2,607 516 1,345
FP32 Div 10,722 620 6,648
FP16 Div 35,251 658 23,195
FP64 Reciprocal 490 590 289
FP32 Reciprocal 858 643 552
FP16 Reciprocal 13,616 613 8,347
FP64 Sqrt 36,310 561 20,370
FP32 Sqrt 69,346 673 46,670
FP16 Sqrt 6,808 613 4,173
FP64 Exp 457 524 239
FP32 Exp 6,864 524 3,597
FP16 Exp 3,432 680 2,334
FP64 Log 361 502 181
FP32 Log 1,716 531 911
FP16 Log 3,432 583 2,001
FP64 Cmp 52,224 679 35,460
FP32 Cmp 99,532 679 67,582
FP16 Cmp 183,919 679 124,881
FP64 Acc 152 524 80
FP32 Acc 980 575 564
FP16 Acc 3,432 590 2,025

まあ、全部演算器にするなんてことは困難ではあるのですが、一応の理論限界という事で。

FP64 性能

Top500 で重要になるのは FP64 の FMA (積和) 演算かと思いますので、まずはこれだけ着目すればいいと思うのですが 最大で 686個を 531MHz で動かせるようです。FMA は 2命令としてカウントするのが通例のようですので 686個 × 2演算 x 531MHz で 729 GFLOPS が理論限界となりそうです。

現在 Top500 のトップにいるのは 同じく AMDFRONTIERです。

調べたところ第3世代のEPYCの64コア2GHz が 2048GFLOPS, MI250Xは 45.3 TFLOPS のようです。

うーん、まだまだ、FP64 を主戦場とする分野では厳しそうです。

(Versal になってDSPも拡張され浮動小数点演算も強化されてそうだったのであるいはと思ったのですが)

一方で、 FP32 や FP16 は?

一方で、DeepLerning などで重要なFP32 や FP16 はどうでしょうか? AVX-512 命令は、FP32やFP16を倍々でこなせるはずなのでそこから見積もると下記のようになります。

FP64/FP32/FP16比較

FP32 や FP16 ぐらいになってくると案外 EPYC と同じ土俵に上ってきます。

INT8以下だと?

で、FP16 で追い抜き始めるので当然それ以下、つまり INT8 などでは EPYC に FPGA が圧勝できそうな予感はありますね。

Versal の CLB は UltraScale と同じなら LUTを 8個収めた CLB 内に CARRY8 が入っているはずなので加算だけなら 1,216,166 GOPs 行く計算の筈(多分)。

いっそバイナリなら?

はい、またしても手前味噌で拙作の LUT-Net とかを、引き合いに出すわけですが、そうでなくても今は BitNet (b.158) とかブームですよね。

VP1902 には 8,460,288 個の LUT があり、最大で 1,150MHz で駆動できるようです。 つまりバイナリ演算のようにこれ一個一個で収まる演算であれば 9,729,331 GOPs となり、OPs 単位であれば ペタのオーダーに乗ってしまうわけですね。このあたりで戦えたなら MI250 などにも勝てるかもしれません。

AI に使うなら FPGA はバイナリ系などの推論用に使うのが正解な気はしてきますが、これを学習させる GPGPU はかなりの規模が必要そうな気がします。

おわりに

久しぶりにこういうものを比較してみて面白かったです。 汎用CPUと専用ASICのはざまでスキマ産業的になりがちなFPGAですが、汎用計算機としての地位がもっと出てくると面白いのになと思う今日この頃です。