2013年のプロセッサのFLOPS値計算方法

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

Xeon E5TeslaXeon Phiのいずれも、去年の製品から順調にコア数や周波数等のスペック向上を果たしているものの、質的な変化は感じられなかったこの1年。一方、新世代のアーキテクチャを採用したXeon E3 v3シリーズは、対CPUコア数対クロック周波数比のFLOPS値が倍増と、Xeon E5シリーズへの浸透が期待できるアーキテクチャである。これらの最新プロセッサの状況を踏まえながら、FLOPS値の計算方法についておさらいしておこう。

目次

FLOPS値とは

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

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

  • カウントに使われるのは加算乗算の2種類の演算。
  • 積和算命令(入力を3つとり、1つ目と2つ目の入力を乗算した値を3つ目の入力と加算してその結果を返す命令)は、乗算+加算の2演算としてカウントする。
  • 浮動小数点のベクトル命令は、ベクトルレジスタ全体の処理にかかるクロック数を考慮しつつ、ベクトル幅の分だけ演算回数をカウントする。
  • プロセッサが同時に実行できる複数命令は同時実行して良く、各命令の演算回数をそれぞれカウントする。

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

Xeon E5 v2シリーズにおける計算方法

Xeon E5 v2シリーズの各コアは、以下に示すようなFLOPS値を持つ。

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

具体的に、Xeon E5-2697 v2は(Turbo Boostを無視するとして)2.7 GHzで動作するので、一コアあたりのFLOPS値としては、単精度では16 × 2.7 = 43.2 GFLOPS、倍精度では8 × 2.7 = 21.6 GFLOPSとなる。これをコア数12で乗ずると、最終的に単精度518.4 GFLOPS、倍精度259.2 GFLOPSという数字を得る。

Xeon E3 v3シリーズにおける計算方法

Xeon E3 v3シリーズの各コアは、以下に示すようなFLOPS値を持つ。

  • 一クロックで、ベクトル幅8の単精度積和算ベクトル命令(VFMADD***PS)(Xeon Phiの命令と同じニーモニックだがベクトル幅が違う)を2命令同時実行できる。
  • 同様に一クロックで、ベクトル幅4の倍精度積和算ベクトル命令(VFMADD**PD)(Xeon Phiの命令と同じニーモニックだがベクトル幅が違う)を2命令同時実行できる。
  • Xeon E5 v2同様にHyper-Threadingは計算に影響しない。
  • そのため、単精度では2 × 8 × 2 = 32、倍精度では2 × 4 × 2 = 16にそれぞれクロック周波数を掛けたものが、一コアあたりのFLOPS値となる。

具体的に、Xeon E3-1285 v3は(Turbo Boostを無視するとして)3.6 GHzで動作するので、一コアあたりのFLOPS値としては、単精度では32 × 3.6 = 115.2 GFLOPS、倍精度では16 × 3.6 = 57.6 GFLOPSとなる。これをコア数4で乗ずると、最終的に単精度460.8 GFLOPS、倍精度230.4 GFLOPSという数字を得る。

Xeon E5シリーズのロードマップでは次世代製品にこのXeon E3 v3シリーズと同様のアーキテクチャが採用されるようであるので、おそらく次世代のデュアルプロセッサ対応のXeonもこの計算方法で計算できると思われる。

現行のNVIDIA GPU (Kepler)における計算方法

Keplerアーキテクチャ(モデルナンバーが「K」で始まるTeslaおよびQuadro、また600 / 700番台のGeForce、ただし一部例外あり)は、192 CUDA Coreを一単位としたSMXと呼ばれるモジュールを複数個持つ構造となっているが、各SMXは以下に示すようなFLOPS値を持つ。

  • 一クロックで単精度積和算命令を192命令同時実行できる。
  • Tesla K10、GTX TITANを除くGeForceおよびK6000を除くQuadroは、一クロックで倍精度積和算命令を8命令同時実行できる。
  • 特に倍精度はCUDA Coreが遊んでいるように見えるが、これ以上の演算は同時実行できない。
  • ここから、単精度では2 × 192 = 384、倍精度では2 × 8 = 16にそれぞれクロック周波数を掛けたものが、これらのGPUの一SMXあたりのFLOPS値となる。
  • Tesla K20・K40シリーズ、GeForce GTX TITANおよびQuadro K6000は倍精度性能が強化されていて、上記の倍精度積和算命令の同時実行数が64に増強されている。
  • ゆえに、これらのGPUの一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 K40のクロックは(GPU Boostを無視するとして)同じく0.745 GHz、SMX数は15であり、単精度384 × 0.745 × 15 = 4291.20 GFLOPS、倍精度128 × 0.745 × 15 = 1430.40 GFLOPSである。

現行のXeon Phiにおける計算方法

  • 一クロックで、ベクトル幅16の単精度積和算ベクトル命令(VFMADD***PS)(Xeon E3 v3の命令と同じニーモニックだがベクトル幅が違う)を1命令実行できる。
  • 同様に一クロックで、ベクトル幅8の倍精度積和算ベクトル命令(VFMADD***PD)(Xeon E3 v3の命令と同じニーモニックだがベクトル幅が違う)を1命令実行できる。
  • Hyper-Threadingは計算に影響しない。
  • そのため、単精度では2 × 16 = 32、倍精度では2 × 8 = 16にそれぞれクロック周波数を掛けたものが、一コアあたりのFLOPS値となる。

Xeon Phi 7120Pは1.238 GHzで61コアであるので、単精度32 × 1.238 × 61 = 2416.576 GFLOPS、倍精度16 × 1.238 × 61 = 1208.288 GFLOPSである。


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

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

<comments hideform="false" />


Comments

ノート:2013年のプロセッサのFLOPS値計算方法

個人用ツール