質問: 演算の種類によって必要なクロック数が異なるので、クロック周波数よりFLOPSは 低くなるのかなと思っています。 しかし、実際はFLOPSのほうが大きいです。それはどうしてなのでしょうか。 コア数やスレッドの影響もありそうですね、これらから理論的に説明できるものなのでしょうか。 大小関係はこちらなどを参考にしています。
回答: IntelプロセッサはSSE; ストリーミングSIMD拡張命令を搭載しています。これはSIMD; Single Instruction, Multiple Dataと言って1命令で複数のデータを同時に処理できます。 挙げられたページで例えばIntel CoreCore i7-4960X Unlocked 3.60GHzは173.0GFLOPSと記載されていますが、Intelのスペック表によると * 6コア/12スレッド * 3.60 GHz * SSE4.2(128bit = 単精度4並列) ですので、12 * 3.6 * 4 = 172.8 GFLOPSとなり値がだいたい一致します。もちろんIntel公式のマイクロプロセッサーのコンプライアンス指標の輸出ページには172.8 GFLOPSと書かれています。 IntelのSIMDについて * MMXは64bitレジスターで32bit単精度を2並列演算 * SSEは128bitレジスターで32bit単精度を4並列演算、64bit倍精度を2並列演算 * AVXは256bitレジスターで32bit単精度を8並列演算、64bit倍精度を4並列演算 * AVX-512は512bitレジスターで32bit単精度を16並列演算、64bit倍精度を8並列演算 の並列演算が可能です。