CPU intel Atom C2570 SilvermontのFP演算の理論性能値は? | Core チャンネル | フォーラム

iSUS に投稿されている記事の内容や、IA プラットフォーム上でのソフトウェア開発に関するトピックを開発者同士でディスカッションできる場としてフォーラムを公開しています。

運営ルールはフォーラムの利用案内をご覧ください。
フォーラムの使い方はこちら

 
フォーラムに投稿するにはログインが必要ですログイン

CPU intel Atom C2570 SilvermontのFP演算の理論性能値は?

メンバー投稿

4:29 AM
2014年10月30日


mrkmhrsh

投稿数 4

1

CPU intel Atom C2570 (8core 2.4GHz,L2=4MB)についての質問です。

このCPUコアはSilvermontコアで、FP命令としてはSSE4.2までが使えるので、
1コアあたり1クロック毎に倍精度FP演算が当然4個できるのだろうと思って
いました。

もしもそうであるならばこのCPU全体としては
  2.4GHz x 4 FP/clock/core x 8core = 76.8GFLOPSが
倍精度演算の性能ピークです。

しかし、MKLのDGEMMなどを使って実測してみると、実際には1コアあたり1クロック毎
の倍精度FP演算数は4個ではなくて1個しかできないとしか思えない性能値がでます。

それで、どこかにこのCPUの浮動小数点数演算についてのピークパフォーマンス
あるいは1クロックあたり可能なFP演算の最大値がいくつなのかについて書かれた
ドキュメントが無いかを、自分としてはいろいろサーチして調べたのですが、
あいにくどこにも書かれたものを見いだすことができていません。
せいぜいコア内部の大ざっぱなブロックダイヤグラムが出ているだけです。

実測によれば、コアあたりのどうやらFP/CLOCKが、倍精度では1で、
単精度では3強のようです。

これから想像するに、このCPUはネイティブな倍精度FP演算器を持たずに、
単精度の演算回路を利用して倍精度を実現していて、命令セットアーキテクチャー
としてだけSSE4を実現しているように思われました。しかし、それを裏付ける資料は
見当たりません。僅かであるが別の可能性としては、演算による発熱にたいして
内部のクロックを下げるような機構があってそれが邪魔しているかもしれないのです。

困っている点は、このCPUコアの有する、真の「理論ピーク性能」がはっきりと
分からないので、ある具体的なコード(たとえばDGEMM)が「理論ピーク性能」
に対して何%を実現しているという主張が確実にできないことなのです。

どこかに、現在のシルバーモントコアの単精度・倍精度のFP演算の理論ピーク性能・
スループットを明確に述べた文書はないでしょうか? Atom C2750 でのハードウェア
実装での理論値が分かれば私としては十分です。

8:54 AM
2014年10月30日


iSUS編集部 – 菅原

投稿数 206

2

mrkmhrsh さん

こんにちは、Silvermontの命令スループットは、
packed single-precision (mulps) 5(latency) 1/2 (Throughput)
packed double-precision (mulpd) 7(Latency) 1/4 (Throughput)
* Throughput notation “m/n” is ‘m’ ops can be dispatched every ‘n’ cycle.
となります。

詳細については、
"http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html?wapkw=processor+manual"
にある、
Intel® 64 and IA-32 Architectures Optimization Reference Manual の15章、Silvermont Microarchitecture and Software Optimization をご覧ください。

CoreやXeonのような一般的なFP系のベンチマークが公開されているか探してみます。

お使いのMKLのバージョンはいくつになりますでしょうか?実は、最新バージョンの11.2以前は、キャッシュ階層の構造などが異なることから Atomプロセッサー向けの最適化が行われていません。最新バージョンを試してみていただけますでしょうか?

5:50 AM
2014年11月22日


mrkmhrsh

投稿数 4

3

続報(MKL ver.11.1 update3からMKL ver.11.2に取り替えて計った結果です)

SilvermontコアのIntel Atom C2570 (8core, 2.41GHz) TB=OFFで
OSはCentOS 6.5 for x86_64。
インテルMKL ver.11.2 (Fortran ver.15.0.0)を用いて
正方行列の積 C=A^{T}*B, あるいは C=A*B の計算をさせて測定すると、
乗算を1FP、加算を1FPとして数えるとき
 単精度では最高性能が 62 GFLOPS程度、
 倍精度では最高性能が 18.1 GFLOPS程度でした.
 つまり倍精度は単精度に比べて3.4倍ぐらい時間がかかる。

もしも、コア当たりが1FP/CLKだったならば
8コアでは19.28GFLOPSになるので、逆に計算すると、
このIntel Atom C2570では(MKL11.2を利用するとき)
スループットは乗算を1FP、加算を1FPとして数えて
 倍精度ではコアあたり 0.94 FP/CLK、
 単精度ではコアあたり 3.2 FP/CLK
ぐらいになります。

7:27 PM
2014年11月27日


iSUS編集部 – 菅原

投稿数 206

4

mrkmhrsh 様

リプライ遅くなりました。

Silvermontでは、実行ユニットのスループットが、
packed single-precision (mulps) 5(latency) 1/2 (Throughput)
packed double-precision (mulpd) 7(Latency) 1/4 (Throughput)
つまり、倍精度は単精度の2倍の時間がかかり、
L2キャッシュは512バイトしかありませんので、そこに入りきらないぶんは、単純に同じ要素数を処理すると想定すると、メモリーアクセスは単精度の倍行われることになります。
そこから算出すると、パフォーマンス低下はある程度予測の範囲かと思われますが、いかがでしょう。

1:39 PM
2014年11月28日


Mistlain

投稿数 4

5

横から失礼します。

"Intel® 64 and IA-32 Architectures Optimization Reference Manual" 248966-030
15.4 INSTRUCTION LATENCY によると mulpd については "Instructions
that required decoder assistance from MSROM" らしいので、命令単位レイテンシ/スループットに追加してペナルティがあるように思います。
※ packed 乗算、packed / single 除算 が該当、single 乗算と packed / single 加減算は問題なし