最近(2012)のプロセッサのFLOPS値計算方法

出典: トータル・ディスクロージャ・サイト(事実をありのままに)

Keplerアーキテクチャを採用したTesla K20や、x86命令セットを採用した新アーキテクチャのアクセラレータXeon Phiなど、HPC向けに様々なアーキテクチャが発表されたこの1年。これらの最新プロセッサの状況を踏まえながら、FLOPS値の計算方法についておさらいしておこう。

目次

FLOPS値とは

FLoating-point Operations Per Second(一秒間あたりの浮動小数点演算)の略で、その名の通りプロセッサが一秒間に何回の浮動小数点演算を行えるかの回数を示す性能指標である。FLoating-point OPerationSの略とし、浮動小数点演算の計算量を表す単位としての用法も見受けられるが、このページでは前者の意味でこの言葉を使っていく。

「浮動小数点演算」の定義は実は微妙な問題であるが、プロセッサメーカーの宣伝用語としては

  • カウントに使われるのは加算乗算の2種類の演算。
  • プロセッサが、複数回の加算および乗算の、同時および連続処理に相当する命令を持つ場合は、この命令による演算回数は複数分カウントする。
  • プロセッサが同時に実行できる複数命令は同時実行して良く、各命令の演算回数をそれぞれカウントする。

というルールの下で数字を公表しているようである。たとえば、Xeon PhiにはVFMADD231PDという、「512 bitのレジスタを64 bit × 8に分割して、第2オペランドと第3オペランドとで対応する要素同士の乗算を行った後、その積を第1オペランドの対応する要素に加算する」という命令が存在するが、この命令は乗算8回と加算8回の計16回の浮動小数点演算とカウントされ、この命令を60コアで同時に実行したと仮定すると、60倍の960回の浮動小数点演算を同時に行える計算となる。

現行のXeon E5-2600シリーズ(Sandy Bridge)における計算方法

Sandy Bridgeの各コアは、以下に示すようなFLOPS値を持つ。

  • 一クロックで「単精度加算8回を同時実行する命令」(VADDPS)と「単精度乗算8回を同時実行する命令」(VMULPS)の2命令を同時に実行できる。
  • 同様に、一クロックで「倍精度加算4回を同時実行する命令」(VADDPD)と「倍精度乗算4回を同時実行する命令」(VMULPD)の2命令を同時に実行できる。
  • この同時実行数はHyper-Threadingを使った複数スレッド実行で共有される値で、スレッドが増えたからといって増える値ではない。
  • そのため、単精度では8 + 8 = 16、倍精度では4 + 4 = 8にそれぞれクロック周波数を掛けたものが、一コアあたりのFLOPS値となる。

具体的に、Xeon E5-2687Wは(Turbo Boostを無視するとして)3.1 GHzで動作するので、一コアあたりのFLOPS値としては、単精度では16 × 3.1 = 49.6 GFLOPS、倍精度では8 × 3.1 = 24.8 GFLOPSとなる。これをコア数8で乗ずると、最終的に単精度396.8 GFLOPS、倍精度198.4 GFLOPSという数字を得る。

Xeon E3シリーズに先行投入されているIvy Bridgeアーキテクチャもこの計算方法を踏襲しているので、おそらく次世代のデュアルプロセッサ対応のXeonもこの計算方法で計算できると思われる。

Tesla Kシリーズ(Kepler)における計算方法

KeplerアーキテクチャのTeslaは、192 CUDA Coreを一単位としたSMXと呼ばれるモジュールを複数個持つ構造となっているが、各SMXは以下に示すようなFLOPS値を持つ。

  • 一クロックで「単精度乗算1回と単精度加算1回を連続実行する命令」を192命令同時実行できる。
  • Tesla K10は、一クロックで「倍精度乗算1回と倍精度加算1回を連続実行する命令」を8命令同時実行できる。
  • 特に倍精度はCUDA Coreが遊んでいるように見えるが、これ以上の演算は同時実行できない。
  • ここから、単精度では2 × 192 = 384、倍精度では2 × 8 = 16にそれぞれクロック周波数を掛けたものが、Tesla K10の一SMXあたりのFLOPS値となる。
  • Tesla K20シリーズは倍精度性能が強化されていて、上記の倍精度命令の同時実行数が64に増強されている。
  • ゆえに、Tesla K20シリーズの一SMXあたりの倍精度演算回数は、一クロックあたり2 × 64 = 128となる。

Tesla K10のクロックは0.745 GHz、SMX数は16であるので、単精度は384 × 0.745 × 16 = 4577.28 GFLOPS、倍精度は16 × 0.745 × 16 = 190.72 GFLOPSである。また、Tesla K20のクロックは0.705 GHz、SMX数は13であり、単精度384 × 0.706 × 13 = 3524.35 GFLOPS、倍精度128 × 0.706 × 13 = 1174.78 GFLOPSである。

Xeon Phi (Knights Corner)における計算方法

基本的にはSandy Bridgeと同様の計算方法であるが、計算に使う命令が変わっている。

  • 「単精度乗算16回の同時実行と単精度加算16回の同時実行を連続実行する命令」(VFMADD231PS)の1命令実行(一クロックあたり32単精度演算)。
  • 「倍精度乗算8回の同時実行と倍精度加算8回の同時実行を連続実行する命令」(実は先述のVFMADD231PD)の1命令実行(一クロックあたり16倍精度演算)。

Xeon Phi 5110Pは1.053 GHzで60コアであるので、単精度32 × 1.053 × 60 = 2021.76 GFLOPS、倍精度16 × 1.053 × 60 = 1010.88 GFLOPSである。

しかし、10年前のXeonが倍精度4 GFLOPS(Northwood Xeon 2.0 GHz、「倍精度加算2回を同時実行する命令」と「倍精度乗算2回を同時実行する命令」を2クロックかけて同時実行する)であったことを考えると、相変わらず凄い勢いでプロセッサは進歩しているものである。

それでは皆様、よいお年を!


この記事へのコメントをお寄せください

  • サイトへの書き込みに差し支えございましたら トータルディスクロージャーサイトサポート係へメールをお送りください
  • トータル・ディスクロージャ・サイトに投稿された文章と画像は、すべてその著作権がHPCシステムズ株式会社に帰属し、HPCシステムズ株式会社が著作権を所有することに同意してください。
  • あなたの文章が他人によって自由に編集、配布されることを望まない場合は、投稿を控えてください。
  • コメントを書き込む場合は名前にひらがなを織り交ぜてください。
  • あなたの投稿する文章と画像はあなた自身によって書かれたものであるか、パブリック・ドメインかそれに類する自由なリソースからの複製であることを約束してください。あなたが著作権を保持していない作品を許諾なしに投稿してはいけません!

<comments hideform="false" />


Comments

ノート:最近(2012)のプロセッサのFLOPS値計算方法

個人用ツール