用語集 · コンピューティング

FLOPS

別名:FLOP、TFLOPS、テラフロップス、teraflops、GFLOPS、ピーク性能、peak、演算律速、compute-bound、フロップス

1秒あたりの浮動小数点演算回数です。プロセッサが1秒間に実数の足し算と掛け算を何回できるかを表します。

浮動小数点演算とは、2つの実数(浮動小数点数)の足し算か掛け算1回のことです。FLOPS はプロセッサが1秒間にその演算を何回こなせるかを数えたもので、1テラフロップス(TFLOPS)は1兆回です。

プロセッサのピーク性能は、すべての演算ユニットが毎サイクル働いた場合にできる量です。

peak=cores×clock speed×operations per core per cycle\text{peak} = \text{cores} \times \text{clock speed} \times \text{operations per core per cycle}

実際のプログラムはそれより少なくなります。データはメモリから届くのを待たなければならず、小さな行列ではすべてのユニットを忙しくしておけず、スレッドは互いを待ちます。ニューラルネットワークの学習はほとんどが行列の積です。m×km \times k の行列に k×nk \times n の行列を掛けるには 2mkn2mkn 回の演算が要ります。この回数をかかった時間と比べると、プログラムがプロセッサのピーク性能をどれだけ使えているかがわかります。すでにかなりの割合を使えているなら、プログラムを大きく速くするには、演算を減らすか、たとえば bfloat16 のように安い演算にするしかありません。

このプロジェクトでは

2人のファイターと視覚では、CPU トレーナーの更新のミニバッチ1つ(2,048サンプル、方策ネットワークと価値ネットワークの順伝播と逆伝播)が約250億回の演算です。Intel Xeon の12スレッドで、更新は約 1 TFLOPS で動きました。これは12コアの理論ピークの約半分で、この程度の小さな行列としては普通の値です。スレッドや学習器プロセスを増やしてもほとんど伸びず、大きな違いを生んだのは bfloat16 だけでした。

関連用語

この用語が出てくる記事

← すべての用語